Здравствуйте, Marty, Вы писали:
M>Здравствуйте, dsorokin, Вы писали:
D>>А так, избавление от точки с запятой — одна из тенденций современного программирования. То, что в мейнстриме используется много где, — это еще по инерции
M>Не понимаю, а что, так сложно завершить выражение точкой с запятой? Или лучше оставить неоднозначности?
Я так понимаю, что это уменьшает когнитивную нагрузку на читателя. Еще эта мода пошла из статически-типизированных языков функционального программирования (и некоторых скриптовых), а создатели языков обычно хорошо подкованы в том, какие существуют языки на свете. Часто программисты ничего не знают и не хотят знать о том, что существует за пределами уютного и ограниченного для них мейнстрима (по моим собственным наблюдениям). А вот создатели языков программирования, как правило, блестяще эрудированы.
А чтобы не было неоднозначностей, усложняют парсеры и лексеры. Создается видимость простоты для программиста, а вот тем, кто пишет компиляторы, становится сложнее.
В той же scala есть нюансы в том, когда заканчивается выражение. Я никогда строгих правил не помнил. Достаточно было интуитивного понимания, когда в сложных случаях подсказывал сам компилятор.
И еще касательно точки с запятой. Этот атавизм уходит в прошлое еще и потому, что в мейнстрим все больше проникает другая идея из мира функционального программирования о том, что проще писать и понимать код, когда язык является ориентированным на выражения (expressions), а не на утверждения (statements). А писать обе ветви в выражении if или тело лямбды с точкой запятой — ну, такое себе. И ставить в конце return, а потом снова точку с запятой? Внешне выглядит совсем плохо. Без точки с запятой будет много изящнее и красивее.
Впрочем, никто от существующей кодовой базы на сегодняшних мейнстримных языках, конечно, не откажется в обозримом будущем. Более того, не все программисты могут воспринимать идеи из функционального программирования просто в силу своего типа характера (спросите Алису почему?). Поэтому точке с запятой еще многие лета!