У меня совсем небольшой опыт в программировании. Тем не менее, кое-какие обобщения я могу, таки сделать.
Выделим 2 подхода к разработке.
1) Язык предоставляет некоторый набор примитивов, но не предоставляет никакого сахара. Программист говорит, ок, то что надо, я напишу свой транслятор в этот язык, где будут реализованы все необходимые абстракции под мою задачу. Получится эффективно, лаконично, и без мусора и лишних телодвижений.
2) Язык предоставляет все необходимое на любой возможный случай. Однако, все учесть невозможно, и время от времени, раздается критика со стороны пользователей языка в адрес разработчика языка, «почему я должен делать это через ж, если можно запилить эту фичу на уровне языка, или стандартной либы?». Вслед за этим, создается just another feature. Однако, чуть позже, раздается критика со стороны других пользователей языка: «язык превратился в переусложненное неповоротливое говно, дизайн языка уродлив, кстати, не забудьте запилить вот эту очень нужную фичу, ее явно не хватает, потому что я не менее одного раза сталкивался со случаем, когда мне пришлось гуглить велосипед, состоящий из целых пяти строк кода, непорядок»
Из моего небольшого опыта, я сделал вывод, что второй подход практикуется гораздо чаще чем первый. Значит ли это, что второй подход кошерней?