Хех, gcc:trunk:r219682. Удачи вычислить изменения, сделанные неким Ilmir Usmanov. Ибо bulk-commit, конечно, зло, но без него разработка GCC сильно бы замедлилась.
И даже по поводу деанонимизации по исходному коду у меня один вопрос:
Любой достаточно большой опен-сорс проект (достаточно — это когда один человек не в состоянии охватить весь проект полностью) имеет стайл-гайд, кучу контрибьюторов и, что более важно, несколько единиц или десятков мейнтейнеров. Можно ли как-то отличить мой код от кода некоего мейнтейнера Томаса, если учесть, что он, как и некий Бернард, был моим ревьювером? И всё это шлифовалось Томасом во время коммита в транк. Причем всё, начиная от именования и до типа применяемого цикла.
Если я правильно понял, то претензия в том, что типы нужно объявлять. Что, если учесть любовь автора к лиспу, который является динамически типизированным (если не брать в расчет Racket), не удивительно. А вообще, я не телепат, чтобы читать мысли автора.
Лично моё мнение в том, что лисп сосёт (http://www.c2.com/cgi/wiki?LispSucks), как OCaml (http://sds.podval.org/ocaml-sucks.html) и даже С++ (http://whydoesitsuck.com/cpp-sucks-for-a-reason/). И, как известно, нет такого языка програмирования, который повышает производительность програмирования на порядок (http://faculty.salisbury.edu/~xswang/Research/Papers/SERelated/no-silver-bullet.pdf).
Я решил для себя, что отсутсвие модульности, часовая компиляция, отсутсвие ADT и pattern matching'а, и километровые сообщения об ошибках меня бесят больше чем убогая стандартная библиотека (есть батарейки), неотключаемый сборщик мусора (смирился) и компилятор, который, зараза, постоянно пишет только «Syntax error» и не объясняет, в чем же ошибка (видимо, придется искать альтернативный компилятор, или, в крайнем случае, писать свой. Кстати, в случае плюсов, это занимает 2+ года: http://cppgm.org/).
Кстати, а вы пробовали писать на фортране? Кода на нём получается даже больше чем на плюсах… Но зато код намного приятнее читать.
Не каждый статически типизированный язык требует объявления типа переменной перед её использованием. Например, OCaml не требует. Более того, в OCaml'е очень редко нужно объявлять тип функции. Компилятор всё выводит сам. Ах да, и REPL у него есть.
А по поводу того, что имел в виду автор, имхо, это кивок (плевок) в сторону Cobol, Ada и Java.
ИМХО, «Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages (Pragmatic Programmers)» будет даже лучше драгонбука.
Раз уж вводите тире, введите и здравый смысл, к которому обращается Пинки:
http://cdn.hitfix.com/photos/5673470/Pinky-and-the-Brain_article_story_large.jpg
Не всё так просто:
«Обычно коты имеют одну X-хромосому и одну Y-хромосому, поэтому практически невозможно, чтобы у кота встречались одновременно два пигмента: оранжевый феомеланин и чёрный эумеланин. Существует единственное исключение: когда, в очень редких случаях, коты имеют набор половых хромосом XXY, они могут иметь черепаховый, или трёхцветный окрас. Большинство таких котов стерильны вследствие аномалии, связанной с наличием двух X-хромосом»
Источник: ru.wikipedia.org/wiki/Трёхцветная_кошка
Нет, неправильно вы меня понимаете. Сам стандарт можно прочесть, не особо вдаваясь в суть, пролистывая разделы, с которыми не сталкивались, примерно за неделю по вечерам. Но его нужно прочесть! Это же все-таки не фортрановский стандарт, который требует довольно-таки неплохого знания языка. Затем к ним возвращаться в случае проблем или если уже достаточно поработали с фичами, которые в них описываются.
Например, можно пролистать раздел про automatic semicolon insertion и взять за правило всегда писать этот самый semicolon. По-моему, это правило довольно распространено. Если потом в один день обнаружили, что функция возвращает undefined всесто нужного значения из-за переноса выражения после return на новую строчку, то к нему следует вернуться и прочесть внимательно (этот раздел, ЕМНИП, занимает 3-4 страницы).
К слову, порядок обучения новому языку программирования у меня происходит примерно так — туториалы и книги по языку (начального и среднего уровня), пэт-проект на этом языке, быстрое чтение спецификации (где-то неделя поездок на работу и обратно и дома по вечерам), второй пэт-проект на этом языке. Оба проекта, естественно, относятся к парсингу. Пока что я пишу первый пэт-проект на Clojure. Rust я забросил на время, пока не появится спецификация.
Опять-таки, вас, случайно, не удивляет ситуация, когда сишники спокойно делают отсылки к стандарту, плюсовики обсуждают драфты (помню плач по концептам, хотя вроде никто магией шаблонов особо не увлекался) (может, это только мне так повезло, и я попал в хорошую компанию), а JS-эры пишут вместо этого статьи подобно этой?
Ах да, спасибо PVS-Studio за популяризацию стандартов, и осбенно за статью habrahabr.ru/company/pvs-studio/blog/250701 в коментариях к которой развернулось поистине эпичное обсуждение двух стандартов.
По поводу HTML и CSS ничего не могу сказать. Не знаком.
И даже по поводу деанонимизации по исходному коду у меня один вопрос:
Любой достаточно большой опен-сорс проект (достаточно — это когда один человек не в состоянии охватить весь проект полностью) имеет стайл-гайд, кучу контрибьюторов и, что более важно, несколько единиц или десятков мейнтейнеров. Можно ли как-то отличить мой код от кода некоего мейнтейнера Томаса, если учесть, что он, как и некий Бернард, был моим ревьювером? И всё это шлифовалось Томасом во время коммита в транк. Причем всё, начиная от именования и до типа применяемого цикла.
А что мешает компилировать сишный код плюсовым компилятором? Просто ограничьте плюсы сабсэтом Си+перегрузка+опциональные аргументы.
Лично моё мнение в том, что лисп сосёт (http://www.c2.com/cgi/wiki?LispSucks), как OCaml (http://sds.podval.org/ocaml-sucks.html) и даже С++ (http://whydoesitsuck.com/cpp-sucks-for-a-reason/). И, как известно, нет такого языка програмирования, который повышает производительность програмирования на порядок (http://faculty.salisbury.edu/~xswang/Research/Papers/SERelated/no-silver-bullet.pdf).
Я решил для себя, что отсутсвие модульности, часовая компиляция, отсутсвие ADT и pattern matching'а, и километровые сообщения об ошибках меня бесят больше чем убогая стандартная библиотека (есть батарейки), неотключаемый сборщик мусора (смирился) и компилятор, который, зараза, постоянно пишет только «Syntax error» и не объясняет, в чем же ошибка (видимо, придется искать альтернативный компилятор, или, в крайнем случае, писать свой. Кстати, в случае плюсов, это занимает 2+ года: http://cppgm.org/).
Кстати, а вы пробовали писать на фортране? Кода на нём получается даже больше чем на плюсах… Но зато код намного приятнее читать.
или
let my_func my s p =…
Почувствуйте разницу.
А по поводу того, что имел в виду автор, имхо, это кивок (плевок) в сторону Cobol, Ada и Java.
Пусть и старая версия, но сойдет.
http://cdn.hitfix.com/photos/5673470/Pinky-and-the-Brain_article_story_large.jpg
«Обычно коты имеют одну X-хромосому и одну Y-хромосому, поэтому практически невозможно, чтобы у кота встречались одновременно два пигмента: оранжевый феомеланин и чёрный эумеланин. Существует единственное исключение: когда, в очень редких случаях, коты имеют набор половых хромосом XXY, они могут иметь черепаховый, или трёхцветный окрас. Большинство таких котов стерильны вследствие аномалии, связанной с наличием двух X-хромосом»
Источник: ru.wikipedia.org/wiki/Трёхцветная_кошка
Нет, неправильно вы меня понимаете. Сам стандарт можно прочесть, не особо вдаваясь в суть, пролистывая разделы, с которыми не сталкивались, примерно за неделю по вечерам. Но его нужно прочесть! Это же все-таки не фортрановский стандарт, который требует довольно-таки неплохого знания языка. Затем к ним возвращаться в случае проблем или если уже достаточно поработали с фичами, которые в них описываются.
Например, можно пролистать раздел про automatic semicolon insertion и взять за правило всегда писать этот самый semicolon. По-моему, это правило довольно распространено. Если потом в один день обнаружили, что функция возвращает undefined всесто нужного значения из-за переноса выражения после return на новую строчку, то к нему следует вернуться и прочесть внимательно (этот раздел, ЕМНИП, занимает 3-4 страницы).
К слову, порядок обучения новому языку программирования у меня происходит примерно так — туториалы и книги по языку (начального и среднего уровня), пэт-проект на этом языке, быстрое чтение спецификации (где-то неделя поездок на работу и обратно и дома по вечерам), второй пэт-проект на этом языке. Оба проекта, естественно, относятся к парсингу. Пока что я пишу первый пэт-проект на Clojure. Rust я забросил на время, пока не появится спецификация.
Опять-таки, вас, случайно, не удивляет ситуация, когда сишники спокойно делают отсылки к стандарту, плюсовики обсуждают драфты (помню плач по концептам, хотя вроде никто магией шаблонов особо не увлекался) (может, это только мне так повезло, и я попал в хорошую компанию), а JS-эры пишут вместо этого статьи подобно этой?
Ах да, спасибо PVS-Studio за популяризацию стандартов, и осбенно за статью habrahabr.ru/company/pvs-studio/blog/250701 в коментариях к которой развернулось поистине эпичное обсуждение двух стандартов.
По поводу HTML и CSS ничего не могу сказать. Не знаком.