Pull to refresh
10
7
Subscribers
Send message
Кривость например в том, что даже лексер должен иметь доступ к информации о типах. Синтаксис неоднозначен без семантической информации.

Вот примерчик:

publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=/com.ibm.vacpp7a.doc/language/ref/clrc08cplr403.htm
UK — пять основных крупных операторов и еще немного мелких. Вроде как-то справляются.
Что там сложного? Это много где есть, без всяких проблем. Мой нынешний номер у меня уже шесть лет, я несколько операторов уже сменил и даже не помню, какой был первым.
" дизайн языка подразумевает несколько возможных стилей написания программ."

Не так. Дизайн языка ничего не подразумевал изначально. Все это в языке появилось в процессе эволюции. А эволюция — штука слепая и беспощадная.
Я на C++ пишу где-то так с 1993го. Делал и компилятор С++, и средства для статического анализа кода на C++. Не знаю уж, какая это по счету стадия, но сложно назвать ее иначе как «терпеть не могу этот самый уродливый и криво спроектированный из языков». Статия восторга про «все легко и просто» прошла вообще очень быстро и не возвращалась, потому как параллельно с C++ я писал на Common Lisp.
В том числе и сложностью парсера. Парсер в голове программиста спотыкается на кривых конструкциях еще хуже чем косолапо сделанный захардкоженный парсер в GCC.

И уж тем более нельзя говорить об «элегантности», когда даже синтаксис столь крив.
Спецификация Java — намного меньше, хоть и столь же формальна. Спецификация ECMAscript вообще крошечная. R5RS так и вовсе мелкий (только R6RS уже испортился, хоть и все равно намного меньше C++).

Я компилятор С++ писал. И компиляторы других языков писал. C++ самый ужасный по сложности и кривости стандарта. Даже парсер, обычно самая банальная часть любого языка, там неимоверно сложен и неоднозначен.
Спецификация на более чем тысячу страниц. Не очень простой, увы.

Как по мне, сложность языка определяется по сложности реализации компилятора для него.
Много даже не мусора, а просто нелогичных, исторически сложившихся решений. Типичная проблема любого языка, который жил слишком долго. Если все то же самое причасать, то получается очень даже неплохо — D впечатления замусоренности не оставляет.
Макросы C еще в пеленки мочились, когда уже много лет как существовали мощные и страшные макросы в Лиспе. И именно из Лиспа в Немерле макросы и позаимствованы, к Си они никакого отношения не имеют, да и к C++ тоже.
12 ...
11

Information

Rating
Does not participate
Registered
Activity