Сложность языков программирования
Power and Complexity in a Programming Language
Похоже, что чем больше мощности и выразительности добавляется в язык программирования, тем более сложным он становится. Чем более сложным становится язык, тем труднее программистам понимать, читать и поддерживать его. И чем более сложный язык, тем более вероятно, что он будет сведен к его подмножеству, что уменьшит переносимость его между программистами. Один програмист может знать одно подмножество языка и другой - другое. Хорошим примером этого видимо является С++.
Я бы еще добавил, что сложность вносит стандартная библиотека и API к операционной системе. Вот, например, C# весьма простой и понятый язык. Но .NET фреймворк, особенно в новых версиях - это же ад, его в голове удержать невозможно, особенно с учетом тысяч мелких классов и интерфейсов с одним-двумя методами.
Жаба с ее фреймворками на каждый случай жизни - туда же.
Интересно, как в этом плане пришелся бы Haskell? Сам язык вроде не сильно сложный, а вот используемые в нем концепции - кошмарный ад, а мощность и лаконичность языка порождают вот такие алгоритмы. Хотя насчет последнего - интересно было бы взглянуть на аналогичный алгоритм на другом языке, может там окажется на две страницы еще менее понятного трэша.
Похоже, что чем больше мощности и выразительности добавляется в язык программирования, тем более сложным он становится. Чем более сложным становится язык, тем труднее программистам понимать, читать и поддерживать его. И чем более сложный язык, тем более вероятно, что он будет сведен к его подмножеству, что уменьшит переносимость его между программистами. Один програмист может знать одно подмножество языка и другой - другое. Хорошим примером этого видимо является С++.
Я бы еще добавил, что сложность вносит стандартная библиотека и API к операционной системе. Вот, например, C# весьма простой и понятый язык. Но .NET фреймворк, особенно в новых версиях - это же ад, его в голове удержать невозможно, особенно с учетом тысяч мелких классов и интерфейсов с одним-двумя методами.
Жаба с ее фреймворками на каждый случай жизни - туда же.
Интересно, как в этом плане пришелся бы Haskell? Сам язык вроде не сильно сложный, а вот используемые в нем концепции - кошмарный ад, а мощность и лаконичность языка порождают вот такие алгоритмы. Хотя насчет последнего - интересно было бы взглянуть на аналогичный алгоритм на другом языке, может там окажется на две страницы еще менее понятного трэша.
no subject
1) после того, как ты что-то модифицируешь не понимая алгоритма, компайлер ругается (гуд!)
ко-вывод: 1.1) если кто-то решит модифицировать нечто, то в процессе модификации, как правило, возникнет корректный код и понимание того, как программа работает
2) язык позволяет подняться практически до той степени абстракции, в которой тебе легче всего мыслить о задаче (это может быть не так в случае совсем запущенных случаев), а не заставляет упрощать задачу, разбивая на удобоваримые для языка куски.
Итого, для одного программиста, пишущего какой-то кусок быстро — это исключительно вкусный язык.
no subject
Если бы они еще сделали stable и testing ветки - цены б им не было. А так, мне кажется, многие боятся, что быстрое развитие что-то им сломает.
no subject
no subject
Правда, модифицируются тяжелее - чистота и типизация не дают создавать систему грузиков и противовесиков.
no subject
vs
no subject
no subject
no subject
no subject