Линус Торвальдс отказался принимать в ядро изменение, заменяющее символ табуляции на пробел в разделителе параметра FTRACE_RECORD_RECURSION_SIZE в конфигурации ядра Kconfig. Изменение было предложено разработчиком проекта Fedora с примечанием, что использование табуляций приводит к сбою в работе парсера конфигурации. Вместо предложенного изменения Линус включил в ядро свой патч, специально добавляющий символы табуляции в определение настройки PAGE_SHIFT, задающей смещение для различных размеров страниц памяти...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=61021
Опять бекдор под видом благих намерений пытались внедрить. Молодец, Линус, бдит
Он наоборот же добавил гаджетов, чтобы бэкдорам удобнее было.
Даже если так, общепринятый стандарт форматирования простого текста подраумевает допустимость табов и их равноценность с пробелами.
Скажи это 85% проектов, настроивших автоматическую замену табов на пробелы при форматировании.Мне так-то без разницы, что использовать, но стандарт должен быть один. И ты знаешь, какой он
Любимый обфускатор поломали?
его работа, так-то
Отмахиваться от бэкдоров, пропихиваемых акционерами?
Линус всё правильно сделал.P.S. Использую только табуляции.
автоформатирование вродеfuncname(argname1=123,
argname2=123)не работает с табами, такое же человекочитаемое форматирование будет применятся для списков и словарей (в том числе вложенных) и это работает только с пробелами.
у мейка табы в синтаксисе и это довольно сомнительно, но это мейк
За такое "автоформатирование" гнать поганой метлой из профессии надо. А также всех, кто считает такое "форматирование" допустимым. Тут возможно только 2 варианта:
1. всё на одной строке, перенос осуществляется редактором
2. имя с открывающей скобкой и закрывающая скобка на своих строках, каждый аргумент на своей строке с отступом на 1 табВсё остальное — ересь.
Ты наверное никогда не видел настоящее ПО. Когда у тебя это 10 уровень вложенности, читаемое форматирование для структур становится очень важно.
Предложенное им и есть читаемое.
Когда у тебя 10й уровень вложенности, у тебя говнокод.
> Когда у тебя 10й уровень вложенности, у тебя говнокод.Вовсе не обязательно. Даже типичный жсон легко может иметь больше и лучше ты ничего не придумаешь. Вызов процедуры с именованными аргументами на любом уровне выйдет за читаемый лимит в ~100 символов. Разбор исключений добавляет немало вложенности лапше опять же. Сложность, это то, что отличает реальное ПО от игрушечного.
>JSONJSON - это не код, а формат сериализации. И если у вас 10й уровень вложенности в JSON, который редактируется вручную, то опять же вы делаете что-то не так. Возможно, что эти данные вообще не в JSON надо хранить, а в YAML (там есть ссылки, напр.), возможно, что им место в нескольких файлах, возможно, что нужно не лениться, а сделать свой DSL...
>Вызов процедуры с именованными аргументами на любом уровне выйдет за читаемый лимит в ~100 символов
Это не есть "10й уровень вложенности" - все аргументы на одном уровне. А лимит не нужен - редакторы форматируют автоматически под экран. Вот у меня широкий монитор - вот под него и форматирует. А у кого узкий - у того под него форматирует.
>Разбор исключений добавляет немало вложенности лапше опять же.
Растащи по функциям.
>Сложность, это то, что отличает реальное ПО от игрушечного.
Сложность - это главный враг любого сложного технического изделия. К которому относится и софт. И профессионализм разработчика — это в первую очередь управление сложностью. Факторизация на модули и уровни, где 1. у каждого модуля есть свой уровень, его реализация состоит из вызовов более низкоуровневых модулей; 2. модули имеют очевидное из их имён поведение на их уровне. Вот есть такая штука, PCA. Она выделяет "важное" от "неважного". "Важное" идёт на текущий уровень, "неважное" идёт на более низкие уровни, после чего "неважное" можно побить на кластеры, эти кластеры обозвать модулями более низкого уровня, и уже внутри кластеров повыделять "важное" и "неважное". И это уже реализовывали, вообще-то один полносвязный слой с сигмоидальной активацией как раз учит PCA.
Разбиение и вынос кода, кстати, вовсе не упрощает его. Но позволяет создавать видимость работы и значительно усложнять сопровождение. И во многих случаях повышает стоимость в рантайме. Очередные ложные постулаты.
Оно не упрощает всю систему в целом - это невозможно в принципе и против законов природы. Оно упрощает модуль на его уровне, делает его понимаемым. Упрощает в том смысле, что когда мы мыслим на определённом уровне, то что творится на прочих уровнях нас не волнует, волнует только соблюдение модулями этих уровней их контрактов.
Я могу представить себе случаи, когда лапша в 1 месте намного проще для сопровождения и легче для понимания той же самой лапши разбитой на тысячи фрагментов. Далеко не любая лапша переходит на уровень, когда это проблема.
Хранить данные надо в бинарном виде. А читать так как удобно. И не надо городить говнокод с джсоном и прочими таб зависимостью.
Bencode - это уже бинарный вид, или ещё текстовый?
когда у тебя 10 уровней вложенности - это уже не программное, это позорное обеспечение.
как говорил торвальдс,
> Tabs are 8 characters, and thus indentations are also 8 characters. There are heretic movements that try to make indentations 4 (or even 2!) characters deep, and that is akin to trying to define the value of PI to be 3.
> Rationale: The whole idea behind indentation is to clearly define where a block of control starts and ends. Especially when you’ve been looking at your screen for 20 straight hours, you’ll find it a lot easier to see how the indentation works if you have large indentations.
> Now, some people will claim that having 8-character indentations makes the code move too far to the right, and makes it hard to read on a 80-character terminal screen. The answer to that is that if you need more than 3 levels of indentation, you’re screwed anyway, and should fix your program.
> In short, 8-char indents make things easier to read, and have the added benefit of warning you when you’re nesting your functions too deep. Heed that warning.
Трольвадс известная истеричка, что ни говори. И видимо совершенно не умеет в более сложные языки, где 3 уровня вложенности это базовый уровень вложенности, ничего ужасного в них нет. Куда большее значение имеет размер и сложность функций. Когда 1 функция это лапша на десятки тысяч строк, оперирующая десятками структур неизвестной вложенности, у тебя проблема. Но также у тебя проблема, когда у тебя по сотне отдельных функций для обработки каждой структуры данных, когда более целесообразно обработать всё в одном месте. Тут нет универсального решения. У нормального программиста должно быть чувства здравого смысла, а не набор ложных постулатов.
Блин, как раз недавно indent настраивал, эти гадюки поломали в последней бубунти, и думаю карочи а не попробовать --linux-style, вдруг что путное выйдет.
Конечно. Все на 8 пробелов, я такой чтоооо??
Линоз дурак, причём тут вложенности, хочется функцию длинным красивым словом назвать может. И экран папалам емаксом поделить, чтобы длина строки 80 максемум
> Ты наверное никогда не видел настоящее ПО. Когда у тебя это 10
> уровень вложенности, читаемое форматирование для структур становится очень важно.Kernel coding style по вполне понятной причине прямо запрещает 10 уровней вложенности.
Чтобы получить 10 уровень вложенности в си, это надо иметь особый математический склад ума.
Это надо иметь талант явный. Ибо случайно даже у говнокодера такое получится с трудом.
Особенный талант
"настоящее" ПО... теперь ПО определяется по степени вложенности. Меньше 10, не настоящее ПО! Помните при разработке настоящего ПО! Не делайте поддельное ПО!
Настоящесть ПО определяется сложностью используемых структур данных и комплексностью логики их разбора.
>Настоящесть ПО определяется сложностью используемых структур данных и комплексностью логики их разбора.смешно!
Настоящее ПО определяется чистотой души и богатством внутреннего мира программиста, и плевать что программа не работает и насколько страшен её говнокод!
Скажем, иксы страшные, но уже вон сколько лет успешно справляются со всеми актуальными времени задачами. А что такое "не работает", ты уверен, что это не наколенная поделка от студентов?
> Скажем, иксы страшные, но уже вон сколько лет успешно справляются со всеми
> актуальными времени задачами. А что такое "не работает", ты уверен, что
> это не наколенная поделка от студентов?Кстати, получается Иксы не настоящее ПО! Там такой кривокод с лапшой, что специалисты не хотят его развивать уже.
Получается большинство Линуксов тоже не настоящие? О БОЖЕ!
Ты не понял. Чем код сложнее и запутаннее, тем больше вероятность, что перед нами настоящее ПО. Потому что простым оно может оставаться только в очень идеализированных случаях.
> Чем код сложнее и запутаннее, тем больше вероятность, что перед нами настоящее ОВНОЯ тебя поправил, не благодари)
А то сейчас неофиты наслушаются и начнут превращать свои хелловорлды в "Настоящее ПО" скидывая весь код в один класс, добавляя неявные связи и досыпая гото там где оно вообще не нужно.
Ты прав, конечно, код превращается в то, во что он превращается, вовсе не от хорошей жизни. Никто не кочет сложного запутанного кода, его трудно читать и с ним трудно работать. Сопровождать и дорабатывать дороже. Но это судьба любого продукта
> Ты не понял. Чем код сложнее и запутаннее, тем больше вероятность, что
> перед нами настоящее ПО. Потому что простым оно может оставаться только
> в очень идеализированных случаях.У критерия настоящего ПО ровно один критерий, а именно работает или нет.
Не существует других критерив.
Ибо все остальные критерии ломаются об реальность.
Например.
Калькулятор настоящее ПО?
Сто строчек кода, пару функций. Бац готово.
Получи и распишись, настоящее ПО.
Можно найти и попроще ПО.
Например COPY / mv/rm/ls и тп.
Элементарные программы для работы с ФС ОС.
Почему они вдруг стали не настоящим ПО? Потому что там нет "миллиардов" строк кода?Все эти критерии, это чушь. Так как критерий один, работает? Да или Нет.
Ответ Да? Настоящее ПО!З.Ы.настолько базовая инфа, что я ору чайков от того что приходится объяснять на линукс сайте. Хотя что удивляюсь, люди давно базу не знают.
Работает у автора, ага. Вот такое оно, настоящее ПО. Не, дорогуша, так не пойдёт. Должно работать у всех и в любых разумных условиях.
> Настоящесть ПО определяется сложностью используемых структур данных и комплексностью
> логики их разбора.Чтобы понять что перед нами настоящее ПО, надо ее запустить. Запустилось? Настоящее ПО. Нет? Не настоящее ПО, а поломанное ПО!
Других критериев не существует!
Если говнокод написанный на коленке, работает и выполняет свою работу, то мне насрать как там внутри что устроено.
И это твои личные половые сложности, нормальные люди предусмотрительно постараются избежать применять ПО сомнительного качества, поскольку что оно откажет в любой момент. Уже много раз видели эти заявления от авторов с горящими глазами про проще легче и эфективнее, а в итоге это оказывается глючная наколенная поделка без кучи требуемой функциональности и с вереницей багов и проблем, которая в итоге подведёт самым непредсказуемым образом.
> И это твои личные половые сложности,Боюсь что тут тупо твои половые проблемы, читать смешно твой бред
> нормальные люди предусмотрительно постараются избежать
> применять ПО сомнительного качества, поскольку что оно откажет в любой момент.А, мы говорим о качестве? В каком это месте мы начали говорить о качестве? Только давай не твою фантазию с головы.
Тут говорится о критерии настоящего ПО! А не что такое качественное ПО.> Уже много раз видели эти заявления от авторов с горящими глазами
> про проще легче и эфективнее, а в итоге это оказывается глючная
> наколенная поделка без кучи требуемой функциональности и с вереницей багов и
> проблем, которая в итоге подведёт самым непредсказуемым образом.Научись сначала понимать суть вопроса, чтобы влазить в спор. А пока слейся и не позорься.
Но плывёшь и не понимаешь о чём речь тут почему-то ты. Я не говорил о качестве. Я говорил, что нагромождение костылей в продуктах не на пустом месте и конкурентное ПО без нужных костылей придётся попотеть, чтобы собственно конкурировать. Это разница между "настоящим по"(TM) и наколенными поделками.
Когда при покупке машины ты заглянешь под капот и увидишь двигатель, примотанный проволокой, хорошо примотанный, не отвалится - ты будешь также рассуждать?
Как обычно, сравнение то что не сравнивается.
ПО не авто!!! Ты буквально сравнил член с пальцем.При этом мы говорим не про качество ПО или авто, а про критерий настоящего ПО.
Что есть вообще разные понятия. Но ты вижу умный, такие вещи не понимаешь.
Существуют-))) Эффективность решения задачи это основной критерий.
> Существуют-))) Эффективность решения задачи это основной критерий.Чтобы быть настоящим ПО не нужно быть эффективным или каким еще, кроме того, что оно работает.
так как любой работающий код по определению ПО.
Очнитесь, что вы ересь пишите тут все... я окончательно теряю веру в айтишников... учите базу, хватит ютуб смотреть.
Код работает, задачи не решает, на фиг он нужен? Формально да, данный код рабочий, а что он обеспечивает?-)) Если уж посмотреть на термин ПО, то документация в стиле ххх.exe выводит строчку на экран, тоже является программным обеспечением-)
Кто такие Айтишники мне лично не понятно, это сферический конь в вакууме.
Теперь про базу, программа предназначена для того, чтобы решать задачи, в зависимости от того, как она эту задачу решает можно говорить об ее эффективности. Пример, нужно сделать программу калькулятор, сделали, код работает, операция 2+2 на Xeon 2699 выполняется полтора часа, код рабочий - да, решение эффективное - нет.
Чтобы получить статус ПО не надо чтобы оно выполняло задачи, вообще ни каких.
Это просто позор, что это надо писать и повторять. Как вы можете что то делать граммотно, если не можете разобраться в терминологии и в базовых понятиях. Как вы дальше идете... хотя вопрос риторический. Ведь я таких как ты видел кучу в работе.
Им говорят одно, вы слышите другое, делаете третье, возмущаетесь потом, что вас не поняли. Классика.
>Кто такие Айтишники мне лично не понятно, это сферический конь в вакууме.Естественно. Ты сферический конь в вакууме.
>Теперь про базу, программа предназначена для того, чтобы решать задачи, в зависимости от того, как она эту задачу решает можно говорить об ее эффективности. Пример, нужно сделать программу калькулятор, сделали, код работает, операция 2+2 на Xeon 2699 выполняется полтора часа, код рабочий - да, решение эффективное - нет.
ГЕНИЙ Почитай глазами и подумай мозгом следующие строки текста.
Никто тут не говорит про эффективность кода. Это ты придумал, чтобы поспорить и потупить.
Идет речь, что может называться ПО. Не понимаешь?
Эффективность кода, эффективность решений и тп, это уже следующий уровень абстракции.
Что тут не понятного написано?
Чтобы программа стало ПО, она должна выполнять одну функцию. ЗАПУСКАТЬСЯ! Всё! То есть, поместить себя в память. Даже не нужно чтобы она умела себя завершать.
ВСЁ! И это будет ПО!
Да оно будет бесполезным. И про эффективность тут речи не будет идти, так как нет к чему это применять.
НО ЭТО БУДЕТ ПО!З.Ы. Тебе должно быть стыдно, ты пытаешься умничать, но ты даже не попытался подумать о чем идет речь. Ты придумал какуето эффективность. Также, как выше написали про сотни тысяч строк чтобы быть настоящим ПО . И как другие накидали овно критерии для ПО. Все ваши критерии овно. Так как они противоречат друг другу и взаимоисключающие. И если все их убрать ПО останется ПО.
Стандартизованную формулировку, чем ПО от программы отличается приведете, или как всегда? -)
> Стандартизованную формулировку, чем ПО от программы отличается приведете, или как всегда?
> -)ПО - Программное обеспечение
Любое ПО это программа. Хоть не каждая программа является ПО.
Но в контексте спора, этот нюанс не важен. Можно упустить этот момент.
А вот и икспирт нубас нуби подъехал.
Я думаю каждый уважающий программист знает, что очень вредно размножать сущности и усложнять без необходимости.
>Программу запускает операционная система. Создаёт адресное пространство, размещает там исполняемый файл, передаёт управление - в зависимости от ОС тут есть нюансы, но ни одна программа сама себя не запускает. %)И что мы тут видим? Он занимается размножением сущностей и усложнением того, что о чем тут речи не идет.
Спор - Что такое ПО
Нубас - ПО запускается не так
И думает, что выглядит умно. Но это не умно. Это просто попытка показать себя умным. Не более.Нубас, хватит прятаться, будь мужиком, либо не цепляй и ходи мимо, либо открой комменты, чтобы был диалог.
А то срешь под дверью, даже штаны не снимаешь. Ахахаха
Самое зачётное, что кексперт noc101 сам себя победил в споре:> Чтобы программа стало ПО, она должна выполнять одну функцию.
> ЗАПУСКАТЬСЯ! Всё! То есть, поместить себя в память.Программу запускает операционная система. Создаёт адресное пространство, размещает там исполняемый файл, передаёт управление - в зависимости от ОС тут есть нюансы, но ни одна программа сама себя не запускает. %)
Такое форматирование использует в K&R и в линуксовых исходниках
K&R не являются авторитетами в данном вопросе.
Интересно что автоформаттер в зиг поддерживает эти оба варианта(и только их). Причем добавляя трейлинг-запятую программист подсказывает что агрументы надо разнести по разным строчкам. Самый осмысленный способ имхо, который везде должен применяться.
Ох уж эти свободолюбивые пользователи опеннета, которым лишь бы что-то запретить, потому что они знают лучше, что нужно и что правильно.
3. Открывающая скобка и закрывающая скобка каждая на своей строке, строго друг под другом.
Можно, но неудобно: когда идентификатор/if/switch/try и скобка на одной строке, лучше видно, к какому куску AST принадлежит скобка, а связь с закрывающей видна по линии, которую редактор либо дорисовывает, дибо сама дорисовывается в воображении. И ещё подход 3 исключает `} else {` и `} catch {`, которые удобны ровно по тем же соображениям. что и `){`. И сворачивание лучше работает - свогячивается всё в идентификатор, а не чёрте во что.
> if (клоунскийСтильВыравниванияПредложенныйАнонимом) {
> ......................................................printf("ясенПеньКлоунский\n");
> ......................................................printf("дажеВосьмиклассникиУжеНеВсеТакПишут.");
> ....................................................}Ну да, конечно. Вы наверное тоже из этих, которым 10 уровней вложенности - уже нельзя. Такому диагнозу даже ультравайд не поможет.
Ересь - это считать, что только твое мнение правильное, а все остальные неправильные.
> автоформатирование вроде
>
> funcname(argname1=123,
> argname2=123)
>
> не работает с табамиЛожь. Всё работает. Гуглить "smart tabs".
Я пробовал. Постоянно съезжает не туда, не универсально. Не работает. Зато есть куча поделок, форматирующих код пробелами (для lsp) и он корректно отображается и форматируется редакторами.
С bbcode [code][/code]:
funcname(argname1=123,
argname2=123)
(...который отключается в древовидном режиме на этом уровне вложенности)
Здесь и не нужны табы. Пробелами надо. Табы нужно только там, где вложенность +1.
Такое форматирование не работает, другое работает.
https://lore.kernel.org/lkml/20240412121531.24669544@ga.../> Note, the tab is here:
>
> - default 128
> + default 128
> ^
> That is, the tab was between "default" and "128".Вы точно-точно используете их именно в таких случаях? Хотя, я видел случаи, когда табуляцией отделялись названия условных конструкций от их параметров:
> for (i = 0; i != 10; i++)
и это не выглядело чем-то ужасным, в этом есть даже какая-то "дедовость"...
Глупцы используют пробелы для выравнивания кода.
Слабаки используют табуляции.
Настоящие программисты используют точку с запятой.
begin и end
<trollmode>Фигурные скобки же!</trollmode>
Этот вариант для машиночитаемых текстов, а не для человека.
настоящие программисты не пишут в конфигах, оставляя это девляпсам
настоящие программисты не тестируют, оставляя это тестировщикам.
настоящие программисты не проектируют, оставляя это архитекторам.
настоящие программисты не форматируют код, оставляя это линтерам.
настоящие программисты не оценивают трудозатраты, оставляя это аналитикам.
настоящие программисты не делегируют работу, оставляя это тимлидам.
настоящие программисты не реализуют поддержку функционала, оставляя это внешним библиотекам.Короче, эти ваши "настоящие программисты" только кнопки нажимают, видимо.
Кнопки юзеры и эникеи нажимают
Ну если так анон сказал - значит так оно и есть
Интересно, Линус автора сего сразу нах послал или объяснил всё же где тот не прав? :)
> Вместо предложенного изменения Линус включил в ядро свой патч, специально добавляющий символы табуляции в определение настройки PAGE_SHIFT, задающей смещение для различных размеров страниц памяти.В статье все вроде написано
Это костыль, а не решение проблемы. Нужно табы в парсер добавлять.
Перечитай новость внимательнее
ну в плане подобных спорных ситуаций Линус всегда отстаивал технически правильную сторону. за что ему мой почет и уважение.
Дай Бог его пальцу крепости и здоровья на многие года!
Ну технически правильно это убрать табуляции.
Если убрать табуляции, то как настраивать величину отступа под себя? Яваскриптеры вон вообще двумя пробелами выравнивают, так что с такими отступами кроме автора никто не разберётся в структуре этого кода.
у яваскриптеров нет стандартного стиля (или тысячи их?). язык позволяет вообще весь код в одну линию впихнуть. к счастью, есть eslint и prettier, которые почти любой стиль к нужным стандартам сами приведут.
В с++ стайлгайде гугла тоже 2 пробела, сильнейше мешает им писать миллионы строк кода на нем: дело привычки.
Читайте внимательнее. Не "писать пиллионы строк кода", а "разбираться в структуре кода". Это разное. Как раз с написанием у гугла проблем нету. Андроид и хром потверждают.
>как настраивать величину отступа под себяВсегда через .editorconfig настраивали.
Те, кто якобы настраивает через .editorconfig, слишком активно тут топят за пробелы, притворяясь, что им не всё равно, что там ide подставит вместо отступов в физический файл.
.editorconfig же обычно коммитится, и в нём настраивают не под себя, а наоборот одинаково под всех.
> технически правильно это убрать табуляцииТолько это технически не выполнимо: табуляции _уже_ поддерживаются и используются в, не хочу соврать, многих тысячах готовых конфигах и уже имеющихся парсерах. Изменить их все одновременно, или даже постепенно — задача не для текущей реальности. Чего Линус никогда не допускал — это практики в стиле M$: «мы тут поменяли синтаксис, а проблемы пользователей — это проблемы пользователей, что вам, конвертор лень было запустить?»
UPD: в Linux kernel coding style табы в kconfig прописаны совершенно явно:
https://www.kernel.org/doc/html/v4.10/process/coding-style.h...
технически как раз выполнимо - среди корректных парсеров замена таба на пробел там проблем не вызовет. Но идти на поводу у ущербных идеолорически неправильно: в таком случае сам ущербным станешь.
> технически как раз выполнимо - среди корректных парсеров замена таба на пробел
> там проблем не вызовет.Там — это где? Во всех имеющихся конфигах? В том числе и в __будущих__ — если заранее табы не запретить в парсерах? Нет, это не выполнимо технически. Я бы не взялся. Линус вон тоже не стал.
там - это конкретно в том месте, где отклонённый патч заменял таб на пробел.
+1. Дебилизм с "экономией пробелов" устарел ещё в 20 веке, зачем вообще табуляции нужны сегодня?! Они давно не выполняют своих функций.
Имеют размер, выбранный пользователем...
Когда он запретил использовать плюсы в ядре с абсолютно надуманному и бездокательному обвинению, это тоже было "отстаивал технически правильную сторону" ?
Или ему просто плюсовики в штаны наделали и он до сих пор злится?
С++ - ну он правда далёк от "языка для всех". Ему место в академических коридорах, лишний раз показать "преимущество над ЛИСП". В ядро надо было тащить Ди - настоящего преемника С++.
D туда затащить будет ещё больнее из-за пожизненного диктатора.
> С++ - ну он правда далёк от "языка для всех".Ахаха, ну надо же!
Нужно срочно рассказать это всем пишущим прикладной и системный софт на плюсах, что он оказывается для "академических коридор"
Посмотри сколько всего написано на плюсах, а сколько на богомерзкой!На плюсах - текстовые редакторы, пром. софт типа кадов, игровые движки, браузеры, даже целые операционки (а нн одно занюханое ядро...).
А на сишке - убогое легаси, которое не в состоянии переписать на нормальные языки.
Сишники даже нормальный компилятор на си не осилили - что гцц, что шланг написаны на плюсах.> В ядро надо было тащить Ди
Мда.. вообще грешно глумиться над убогими. Поэтому D комментировать не буду.
> Сишники даже нормальный компилятор на си не осилили - что гцц, что шланг написаны на плюсахОни его осилили, gcc был написан на C и прекрасно работал. Его потом переписали на C++. Но ведь был и работал
> gcc был написан на CИзначально gcc был написан на Пастеле - "супер-волосатом паскале", чтобы эти эвфемизмы Столмана не значили -_- (super-hairy extended Pascal). И ведь работал.
Но потом его переписали на сишку.> и прекрасно работал
... пока сложность компилятора не превзошла возможности сишки.
Или сишников, кто тут уже разберет))Поэтому пришлось воспользоваться нормальным языком:
> C++ "supports cleaner code in several significant cases." It never requires "uglier" code.
> C++ makes it harder to break interface boundaries, which leads to cleaner interfaces.
Ты это серьезно?
Посмотри сколько софта написано на плюсах.
Начиная от винды заканчивая хромом.
От Microsoft Office, Adobe Illustrator/Photoshop, Safari до открытых Firefox/Thunderbird.
Я уже молчу про игровые движки и тысячи игр.По сути это язык, на котором написаны самые распростаненных пользовательские приложения.
Чего за ерунда? Тебя никто не принуждает использовать возможности языка "не для всех" типа шаблонов. Использование базовых возможностей - классов и т.п. уже существенно облегчает написание софта.
+1. Каждый раз когда заходит речь о С++ - обязательно появляется какой нибудь "на С++ не программировал, но осуждаю" и начинает как попугай пересказывать страшилки о С++, услышанные от других таких же попугаев.
> Когда он запретил использовать плюсы в ядреЛинус знатно затролилл неумеющих писать на плюсах в ядре. По факту он всего лишь запретил использование плюсов для написания исходного кода linux.
> ну в плане подобных спорных ситуаций Линус всегда отстаивал технически правильную сторону.Дык, проблема в том, что он не отстаивает. Кроет нецензурщиной и закрывает тему.
> In fact, I'm seriously inclined to make sure that our main Kconfig file has several tabs in several places, just to make damn sure that any broken sh*t is fixed.Линус в своём типичном настроении :)
> Линус в своём типичном настроении :)Так им и надо :).
Интересно, через сколько времени начнет извиняться?
"Linus Torvalds is sorry for being a jerk" или что-то подобное.
Ведь уже не первый раз.
Федора и редхат проскочат, а вот чужие парсеры сломаются.
проблемы криворучек
Проблемы недостаточного времени и неналичия мейнтейнеров.
Судя по тексту новости, у "Федора и редхат" как раз и имеются проблемы.
Поправить один парсер компания сможет легко и не раз. А вот чужие парсеры, особенно без мейнтейнеров, легко сломаются.Так что у федоры и редхата тут как раз не проблема, а конкурентное преимущество вырисовывается.
Если они ещё как-нибудь повлияют на Линуса (а он, похоже, любит делать назло - характер суровый, нордический и эту его сторону успешно проэксплуатировали), следующее, что будет - он сам, без особой посторонней помощи сломает, резко так выдернет скатерть, например, из-под xorg. Или чего ещё.
И так федорка очень резко вырвется вперёд, пока остальные будут очухиваться от удара и в дезорганизации запиливать exorg, vxorg и так далее.
> конкурентное преимущество
> пока остальные будут очухиватьсяОчухиваться если и будут, то продаваны Линукса. А пользователи бесплатных дистрибутивов даже не заметят этой корпоративной возни.
Неплохо бы увидеть исходники этого парсера. Случаем не наколенная поделка на растишке?
Самый интересный вопрос - что за парсер? Продолжение истории нужно смотреть в его багтрекере :-)
Като повырясь с ПО в локальном трекере со нашим ПО, внезапно нашел место где был баг, и заглушку с чудным комментарием "это я не буду пока делать. Слишком геморройно".
Причина сильно преувеличена, исправили за час, а вот без честного комментария проискали бы долго. ;)
Автора заглушки и комментария уволили?
> Автора заглушки и комментария уволили?Сам ушел по иным причинам. А всплыло после, при копании в исходниках.
Сам ушел по иным причинам. А всплыло после, при копании в исходниках.
> Причина сильно преувеличена, исправили за час, а вот без честного комментария проискали
> бы долго. ;)Потому что посмотрели свежим глазом. Если он работал над кодом один, то такой затык можно считать закономерностью. При этом он понимал, что с замыленным глазом накуролесит, о чём и написал в комментарии, поскольку больше некому.
Вот они, реальные линуксопроблемы.
Проблемы конкретно у Fedora. Если не окажется, что проблема растобыдлокода из RHEL/Fedora.
Скорее всего отвлекают внимание от какого-то другого более "интереного" патча созданием хайпа на ровном месте
Все делают только бы не разработать понятный и простой EBNF
Мне нравится эта невинная наглость, когда вместо патча, чтобы пофиксить глюкало-парсер, они шлют "исправление" прямо в состав ядра.
Линус однажды уже обделался, не приняв С++ в ядро.
В итоге ядро осталось на отвратительной дыряшке, вместо современных плюсов, у которых возможностей по управлению памяти гораздо больше.А потом, чтобы, как барашек, стоять на своем, он потащил в ядро Раст.
Интеренсно, сколько CVE и RCE появится в ядре благодаря этим пастчам.
плюсы тогда и плюсы сейчас - большая разница. сейчас возможно и затащат, идет же разговор об этом.
Хорошо бы
> Линус однажды уже обделался, не приняв С++ в ядро.Что он не принял? Воображаемый код? Так его и невозможно принять.
Но воображаемый код на Rust он таки принял.
> Но воображаемый код на Rust он таки принял.Там код есть.
> Там код есть.Там коду позволили быть.
Сам rust-for-linux пилился полгода или даже год, пока они написали все нужные прослойки, чтобы добавить в ядро хотя бы хелловолд. Плюс еще дорабатывался сам язык, особенно части no-std и аллокаторов.
Позволили бы плюсам - уверен что рабочий код был бы намного раньше.
Все-таки раст и синтаксически, и идеологически намного дальше от сишки чем плюсы.
Не сказал бы, что плюса сильно ближе. Возможно даже плюса ближе к расту, чем оба к си. Хоть они и типа совместимы (си и плюса), но в подходах, концепциях и понятия, что хорошо, а что плохо, очень уж далеко.
Не сказал бы, что плюсы являются подмножеством Си, но написать на плюсах код, который соберёт транслятор Си, вполне возможно. Как и возможно переиспользовать код на Си в Си++.
Речь была не о близости философии языков, а том что тулчейн Раста пришлось допиливать, а тулчейн С++ допиливать бы не пришлось.
> а тулчейн С++ допиливать бы не пришлось.16 Library introduction
16.1 General
...
4 The language support library (Clause 17) provides components that are required by certain parts of the C++ language, such as memory allocation (7.6.2.7, 7.6.2.8) and exception processing (Clause 14).
несколько символов всего-лишь определить.
> несколько символов всего-лишь определить.Каких символов? Не надо лишний раз меня убеждать, что Линус совершенно правильно сформулировал претензию.
>> Там код есть.
> Там коду позволили быть.
> Сам rust-for-linux пилился полгода или даже год, пока они написали все нужные
> прослойки, чтобы добавить в ядро хотя бы хелловолд.Ну и? За полгода или даже год у меня заработало std::exception() а ядре Windows. Что всё это время делали ноющие про плюсы в Linux?
А что на счёт остальных пробелов?
s/выступил/рейджил в LKML/g
О, война табов против пробелов продолжается)))
Но однажды принятое тупейшее решение в виде табов будут тянуть в виде легаси овна десятилетиями...
Хотя для линукса это норма))
Просто спросите этих дол6оерастов: зачем вам табы? что вы экономите? Тогда они хотя бы задумаются.
> что вы экономите?целый БАЙТ экономится! И это если вместо двух пробелов
А если вместо восьми... то ух! целых 7 байт!
Это же просто невероятный профит!
Мы именно что пробелами отступы делаем и имеем от этого ровно 0 (прописью: ноль) проблем.Так даже удобнее. В короткой функции можно поставить один пробел или два. В более длинной, чтоб лучше видеть структуру, - 4.
Зато я имею проблемы. Мне, например, удобно видеть отступы шириной в три пробела. Поставил нвиме настройку на длину таба. И когда открываешь чужой код, видишь там то два, то четыре, то аш восемь. И не всегда это автоматически конвертируется в нужную ширину.
.editorconfig
- Петька, приборы!
- .editorconfig!
- Что ".editorconfig"?
- А что "приборы"?
А потом твой код попадёт к кому то с другим codestyle и >|< :-(
А таб - это next ident - причём везде, ТЧК!
Они экономят своё время. Делают, как всю жизнь привыкли, а не как того хотят те, кто ничего не написал в ядро.
> Они экономят своё время.
> Делают, как всю жизнь привыкли, а не как того хотят те, кто ничего не написал в ядро.Да-да, а потом сидят на интервью и жалуются "очень тяжело привлекать молодежь в ядро, мы все стареем, с этим нужно что-то делать".
С чего бы это, не так ли?))
>> Они экономят своё время.
>> Делают, как всю жизнь привыкли, а не как того хотят те, кто ничего не написал в ядро.
> Да-да, а потом сидят на интервью и жалуются "очень тяжело привлекать молодежь
> в ядро, мы все стареем, с этим нужно что-то делать".
> С чего бы это, не так ли?))Бесплатно писать код в ядро? Много такого написали сами?
Скажу честно - ноль строк.
Но тут причины скорее личные: не люблю работать с jerk'ками, не хочу прикасаться к GPL.
Пусть за меня это делают люди, которых такое отношение устраивает (и что характерно их кол-во тоже стало уменьшаться)В других открытых проектах, куда я коммитил, я не сталкивался с подобным (ч|м)удачеством.
Но возможно, мне просто повезло.
> Скажу честно - ноль строк.
> Но тут причины скорее личные: не люблю работать с jerk'ками, не хочу
> прикасаться к GPL.То есть личные причины никак не связаны с количеством пробелов, как это зачем-то преподносится, когда речь идёт о других.
И ещё "ядро" почему-то понимается как "ядро Linux". Я писал в ядро и с двумя пробелами, и с четырьмя. На основании чего могу сказать - кто может писать код для ядра, тем вообще пофик, сколько там пробелов. Это воспринимается как некая данность.
Ну деловые вообще, хотели, чтоб ядро под их кривые парсеры подстраивали)
Уровень программиста определяет уровень задач, которые он решает. Если трольвадс "борется с табами" - его уровень очевиден.
Торвальдс борется не с табами, а с продвижением дебилизма в его ядро.
Линус ещё могёт! Как у же отметили -- здравия и долгих лет жизни его пальцу. Заступник и защитник наш от коварных корпов!
А он действительно защитник от корпов?
Это дискусионная тема. Я считаю, что если бы не Торвальдс, ядро бы уже давно захватили "эффективные менеджеры", а пилилось бы оно только в интересах корпов. Вместо этого сейчас есть шаткий баланс: и корпы для себя пилят, и обычные гики могут пилить, компилировать и пользоваться.
> Это дискусионная тема. Я считаю, что если бы не Торвальдс, ядро бы уже давно захватили "эффективные менеджеры", а пилилось бы оно только в интересах корпов.И много сейчас в ядро добавляется не в интересах или по просьбе корпов?
Я вот просмотрел что обновилось при переходе с 4.х на 5 и с 5.х на 6.х и что-то не нашел ничего)> Вместо этого сейчас есть шаткий баланс: и корпы для себя пилят, и обычные гики могут пилить, компилировать и пользоваться.
Обычные гики могут пилить, только вот что-то "крокодил не лочится, не растет кокос".
Пока вижу что они только ноют "корпы захватили наш линукс", но ЧСХ нифига не делают.
А exFAT и NTFS разве только для корпов? А поддержка нового оборудования? А low-latency изменения? Обычному пользователю совсем-совсем никакой пользы нет?
> Обычному пользователю совсем-совсем никакой пользы нет?Конечно есть.
Проблема обычных пользователей в другом:
оно не только ДЛЯ корпов, но оно только ОТ корпов.Если бы не корпы, то фигуфки кто-то их обычных пользователей написал дрова для файловой системы.
Т.е "шаткий баланс" это:
- корпы пилят то, что нужно им и их пользователям
- обычные пользователи имеют полное право "кушать что дали" и слегка бухтеть на форумах
- руководители линукс имеют право не сильно быковать на спонсоров, но получают 6ти значные з/пВроде все неплохо, но если завтра корпы решат пропихнуть какой-то софт, то они это сделают, как бы не копротивлялись обычные пользователи.
А, погоди-ка, они же уже такое провернули это с системд, вейландом и пш-пш-аудио!Я не вижу в этой ситуации какой-то несправедливости, тк, тот кто вкладывает ресурсы, тот и определяет развитие.
Но называть Линуса "Заступник и защитник наш от коварных корпов!" это явно преувеличение.
Согласен!
> Но называть Линуса "Заступник и защитник наш от коварных корпов!" это явно преувеличение.Может и преувеличение. Вообще, изначальный комментарий написан в шуточном тоне. Тем не менее, я считаю, что без Линуса и ЖПЛя у нас был бы не линукс, а хурд. И сосали бы лапу тихо в сторонке.
Посмотрите на хромиум: вот он, опенсорц по-корпократски. Боюсь, что когда Линус отойдёт от дел, то и линукс станет как хром. Т. е. простым смертным туда вход воспрещён. Максимум -- пытаться писать патчи для вырезания слежения.
> Тем не менее, я считаю, что без Линуса и ЖПЛя у нас был бы не линукс, а хурд. И сосали бы лапу тихо в сторонке.С поправкой на то что хурд это тоже ЖПЛ, то все дело в Линусе))?
Я бы еще записал в причину корпов - им пока от ядра больше пользы чем расходов.> Посмотрите на хромиум: вот он, опенсорц по-корпократски.
И? По-корпорацки или нет, это софистика.
Опенсорсом оно останется в независимости от того, нравится вам это или нет.
Если уже говорить про хромоось - то это самый успешный дистрибутив и ДЕ на ядре линукс.
Который выглядит не как кусок непотребства, и может использоваться любыми пользователями, а не только пердоликами.> Т. е. простым смертным туда вход воспрещён. Максимум -- пытаться писать патчи для вырезания слежения.
А типа сейчас любой может прийти со своими гениальными идеями и это сразу попадет в ядро?
Я пару раз сталкивался с опенсорсными проектами, когда присылаешь фичу, а тебе чесно говорят "оно не подходит под мое виденье проекта" и реджектят.
Так было и будет, корпы тут не причем.> Максимум -- пытаться писать патчи для вырезания слежения.
Угу, а еще краш репорты, средства для людей с ограниченными возможностями... я уже насмотрелся на такое.
Вам нужно что-то больше - объединяйтесь, форкайте и пишите сами.
Если не можете, то кто вам доктор.Как говорится "как потопаешь, так полопаешь".
Пока сообщество хочет, чтобы код писали корпы за свои деньги, но именно так, как хочется сообществу.
Просто эталонное потербялдство)
> С поправкой на то что хурд это тоже ЖПЛ, то все дело в Линусе))?Если ты не знал, то хурд пилят без Линуса.
> И? По-корпорацки или нет, это софистика.
Опенсорсом оно останется в независимости от того, нравится вам это или нет.
Если уже говорить про хромоось - то это самый успешный дистрибутив и ДЕ на ядре линукс.
Который выглядит не как кусок непотребства, и может использоваться любыми пользователями, а не только пердоликами.Сами занимаетесь софистикой. Ноль толку от такого опенсорца, у которого нет (почти) ни одного преимущества опенсорца. Про хромось не надо мне тут. Трудно придумать что-то более несуразное и отвратительное чем хромось. Это даже ещё более хороший пример опенсорца по-корпократски.
> Я пару раз сталкивался с опенсорсными проектами, когда присылаешь фичу, а тебе чесно говорят "оно не подходит под мое виденье проекта" и реджектят.
И что? это абсолютно нормальная практика.
> Пока сообщество хочет, чтобы код писали корпы за свои деньги, но именно так, как хочется сообществу.
А кто ж не хочет так? Это нормально. Хорошие проекты так и делаются, чтобы потребителю было хорошо. А корпы делают так, чтобы было хорошо корпам.
> Если ты не знал, то хурд пилят без Линуса.Знал конечно, why are you so serious?
> Сами занимаетесь софистикой. Ноль толку от такого опенсорца, у которого нет (почти) ни одного преимущества опенсорца.
Хм... для меня преимущества опенсорса - то что можно посмотреть код на наличие ошибок и натравить на него всякие анализаторы.
Менее ценное - если я смогу сам что-то исправить, тк во-первых я не знаю такого колва ЯП, а во-вторых на все времени не хватит. Т.е даже лицензии "смотреть, но не трогать" мне подходят.> Про хромось не надо мне тут. Трудно придумать что-то более несуразное и отвратительное чем хромось.
Линукс на десктопе?))
Хромосью пользуются милионы людей без пердолинга, разучивание отличий тех или иных либ и подбора ноута, чтобы дрова работали.> И что? это абсолютно нормальная практика.
Да, я про это и говорю. Это абсолютно нормально.
Приходит такой юзер "а сделайте мне то-то", а разработчик ему говорит "нет".
Проблема в том, что когда это просто разработчик - то вроде все понимают, а когда это разработчик корп - то начинается нытье и требования.> А кто ж не хочет так? Это нормально.
Хотеть да, требовать нет)
> Хорошие проекты так и делаются, чтобы потребителю было хорошо. А корпы делают так, чтобы было
> хорошо корпам.Странно, работая в нескольких корпорациях, мы всегда делали, чтобы нашим пользователям было хорошо. Чтобы они были довольны, чтобы мною написанный код решал их проблемы и они с радостью платили корпорации денежку (и мне зарплату).
(На "ненаших" пользователей нам было все равно, и это тоже честно)Более того, почему ты отделяешь корпов, от пользователей опенсорса?
Они такие же пользователи и учасники проектов.
Некоторые даже вкладывают ресурсво больше, чем все васяны вместе взятые.
Использую исключительно пробелы для выравнивания. Таб для меня неочевиден. Но считаю, что Линус прав.
Показал кто тут батя в стиле "fck u nvidia".
Вам таки не нгавятся табуляции? Их есть у нас больше для вас!
> Показал кто тут батя в стиле "fck u nvidia"."Батя" может только за табуляции обкладывать.
А на всё остальное - пук-среньк и уже причем уже давно.
Потому что нельзя портить отношение с уважаемыми партне... а не, с платиновыми спонсорами))
Кушать-то хочется.А за "fck u nvidia" и не только он уже извинялся, и в 2017, и в 2018 и может и позже.
"Linus Torvalds is sorry for being a jerk"
>> Показал кто тут батя в стиле "fck u nvidia".
> "Батя" может только за табуляции обкладывать.
> А на всё остальное - пук-среньк и уже причем уже давно.
> Потому что нельзя портить отношение с уважаемыми партне... а не, с платиновыми
> спонсорами))
> Кушать-то хочется.
> А за "fck u nvidia" и не только он уже извинялся, и
> в 2017, и в 2018 и может и позже.
> "Linus Torvalds is sorry for being a jerk"Ну он патриарх и почти что основатель (столлман поспорит, но че уж), ему можно. Не Будь Торвальца которые ведет себя как jerk всякие Поттеринги уже давно превратили бы все это в SystemDinux. Ну или Lennax.
> ему можно.Если бы было можно, то он бы не извинялся и не брал "вынужденный отпуск" временно отказавшись от руководства проектом)
Более того в недавнем интервью в Токио, он сказал, что не будет «показывать пальцем на какую-то компанию. Я усвоил урок».> Не Будь Торвальца которые ведет себя как jerk
Возможно у ядра не было таких проблем к "персоналом" их старением и выгоранием - вот что LTS поддержку уменьшают, что сам Линус
Ладно если надо было бы просто делать неинтересные задачи и раскапывать древние баги, забесплатно!, так еще и рядом дед бухтит и сыплет оскорблениями на грани приличия.И при этом сам говорит "It's one of those things where a lot of people seem to think that open source is all about programming, but a lot of it is about communication, too. "
С другой стороны - у нас есть Грег, который по какой-то причине общается с людьми нормально.
> всякие Поттеринги уже давно превратили бы все это в SystemDinux. Ну или Lennax.
Хаха, смотрим на самый распространенный дистрибутив, кто решает добавлять системд пш-пш-фудио и понимаем, что дед может только решать вопросы табы/пробелы))
Высосанная из пальца проблема. Табами и пробелами должно автоформатирование кода заведовать, а не кодер вручную.
Проблема не там, а после. Когда автоформатированию сказали вставить табы и запушили.
whitesapces in semantics - terribly bad idea for any type of data. Python is folding grand prize.
Но работает удобно для потребителя. Писать просто, читать - тоже.Где сбоит?
Надо осторожнее, а то заклюют как RMS. Один раз уже Линуса предупредили.
Табы форева, поддерживаю
На работке будет соль на рану: можно ж было проще, но просят хороший код...
На нелюбимом многими хабре была классная статья
(habr com/ru/articles/345846/)
в которой исследовалась и сравнивалась лексика Линуса Торвальдса и Грега Хартмана. На одном временном интервале 1995–2015, с примерно одним кол-вом писем (21,746 - 24,145).Сравнение вышло довольно показательным)
Лексика Линус Грег
Всего 3090 150
crap 1204 107
hell 725 22
damn 682 2
shit 126 1
anal 54 0
bullshit 50 2
ass 46 6
god 34 1
screw 33 0
bastard 29 0
bitch 17 0
piss 17 4
retard 14 0В общем Линус это типичное б-ло, которое не может нормально общаться с людьми.
Не удивительно, что ему приходилось извиняться и давать заднюю, когда его высказывания начинали вредить проекту.
Хаха, табличка выше была отформатирована табами.
И как вы думаете, что произошло?
...
Правильно! Вся "верстка" поехала!
У Линуса какая-то подозрительная фиксация на crap/shit/anal/bullshit/ass и прочем околожопном.
Он случайно не двачер?
Любитель шуток класса /b/ ?
Или просто латентный трубочист-глиномес?Не удивительно, что ядро получилось таким... как получилось))
А ещё "начистить рожу" литературно переводится как "kick ass".
> На нелюбимом многими хабре была классная статьяА можно пояснение для танкистов, почему он нелюбимый?
Индентация табами лучше, чем пробелами, потому что таб - собственно семантический индентатор. Практический бонус - каждый может себе свой размер таба настроить, как ему удобней.Если хочется выравнивания после индентации - можно индентировать табами, а потом выравнивать пробелами (гуглить smart tabs). Многие редакторы и IDE поддерживают форматирование по smart tabs автоматически.
"Беда" в том, что мир несовершенен, и простую вышенаписанную концепцию надо объяснять слишким многим людям. А они ещё спорить будут. А потом ещё забывать у себя включить смарт табс и косячить, креативно смешивая табы и пробелы неправильным образом. А вопрос не сильно то и важный. Поэтому, увы, легче забить и пользоваться пробелами.
Табы как наследие пишущих машинок давно пора выкинуть нахрен. Если писать парсер чуточку посложнее чем Kconfig, то это пипец засада и рассадник багов. Ну, или юнит тестов, которые один хрен все баги не покроют.
Зато тащим в ядро раст. Зашибись.
... сказал ни разу не писавший парсеров.
Да, но зачем они в маилин лист всё ещё в 2024? Зачеееем?
Слушай... ну работаешь ты там где через... через что, кстати? Допустим через whatsup или дискорд ты шлешь свои патчи для JS/CSS в какой-то супер-прогрессивной молодежной конторе. Ну и шли дальше. Чем тебе мешают их почтовые списки?