Я выделил для себя следующие тенденции:
- Необязательность или полный отказ от точек с запятой – неужели отделять операторы данным символом так неудобно? Или же неофитов решили избавить от проблемы поиска ошибок? Современные IDE позволяют легко обнаружить ошибку, а читая чужой код который кстати в огромном количестве случаев плохой, легче разобраться с тем что там происходит.
- Чрезмерные заимствования из других языков – понятно что ЯП так же как и вербальные языки заимствуют что-то друг из друга. Но простите, когда синтаксис одного языка сочетает в себе синтаксис кучи других языков, то он становиться чересчур за мудреным и уродливым. Вы же говорите на своем родном языке, и используете иностранные слова только в случае отсутствующего аналога в вашем языке, ну или же в случае более элегантного его звучания.
- Все большее количество совершенно неоправданных упрощений – тут проблема вытекает из методов обучения в ВУЗах. Во многих учебных заведениях сейчас обучают совершенно неправильно. Основы программирования на С преподают буквально семестр. Дальше перекидывают в ООП, где дают основы настолько урезанно, что саму парадигму ООП студенты не понимают до конца. На втором курсе, студенты уже сами определяются на чем им вести учебные проекты, и они выбирают язык зачастую по критерию простоты. Немудрено что возможность решения половины задачи вызовом пары методов отбивают желание во всем разобраться самому, а дальше это идет с ним по жизни.
Как-то слышал про эксперимент в котором программистов использующих JQuery попросили переписать задачу на чистом JavaScript.
Вопрос: Смогли?
Ответ: Не смогли.
Но в образовании еще пол беды. Тот кому нужно сам во всем разберется. Самая большая проблема в том, что разработчикам надо превознести что-то новое и они высасывают необходимость упрощения из пальца.
- Сильные заявления – зачастую новый язык разрабатывается как убийца какого-либо языка 20-ти летней давности, но никто так и не смог.
- Поиск глубинного смысла – язык предназначен для того чтобы решать задачи а не для того чтобы с выражением лица как у Софокла обсуждать цель его создания, красоту и лаконичность.
Как говорит один известный человек:Болтовня ничего не стоит. Покажите мне код.
- Внезапные замены привычных конструкций – очень заметно в Android-разработке.
Итог
Я не истина в последней инстанции, и то что раздражает меня абсолютно не должно раздражать вас. Если вам нравиться искать глубинный смысл, то пожалуйста. Главное чтобы ваша работа была продуктивной.
Всем удачи.
Комментарии (19)
impwx
03.04.2017 16:03+7Болтовня ничего не стоит. Покажите мне код.
Ну и где конкретные примеры «плохого кода» и сравнение — «как можно было бы сделать лучше»?
vlreshet
03.04.2017 16:13+4Моё личное ИМХО:
Необязательность или полный отказ от точек с запятой
Если есть возможность не ставить точки с запятой — зачем их ставить? Просто из-за привычки? Возможно ошибаюсь, но мне кажется что они были придуманы чисто для упрощения парсера и компилятора.
Чрезмерные заимствования из других языков
Если, например, замыкания, есть очень удобными и полезными в одном ЯП — почему бы не взять их в другой язык? Что в этом плохого? Почему все ЯП обязаны идти по своему собственному пути, и плодить каждый свой синтаксис?
Все большее количество совершенно неоправданных упрощений
Опять таки, не вижу в этом ничего плохого. ЯП нужны для решения задач, а не для красивого жонглирования регистрами вручную. Если есть возможность создать удобную абстракцию — её надо создавать. А там где это не нужно (embedded, и прочие платформы) — там живут вполне себе консервативные языки типа С. «Программисты jQuery» — это уже проблемы библиотек, а не самого языка.
Сильные заявления
Обычный маркетинг, есть во всех сферах. Кто будет смотреть на новый язык который опишут как «ну ещё один язык. впринципе, такой же как и всё предыдущие»?
Поиск глубинного смысла
Никогда ещё не слышал о глубинном смысла в каких-нибудь лямбда-замыканиях или каррированииVioletGiraffe
03.04.2017 16:21+2А меня бесят языки, где вместо нормального видимого разделителя используются переносы строк и другие whitespace-символы.
arandomic
03.04.2017 16:48+2Ну да, в них же нельзя написать main(){printf(&unix["\021%six\012\0"], (unix)[«have»]+«fun»-0x60);} или еще что-нибудь IOCCC-approved
AndreyDmitriev
03.04.2017 16:18+1Это вы ещё LabVIEW не видели, судя по всему. Я успешно программирую на нём уже семнадцать лет как (и мне нравится), но знаю людей, которых этот «язык» раздражает до тошноты (хотя там ногие вещи довольно разумно сделаны). Но штука спорная весьма.
shasoft
03.04.2017 16:19-1Как-то слышал про эксперимент в котором программистов использующих JQuery попросили переписать задачу на чистом JavaScript.
Вопрос: Смогли?
Ответ: Не смогли.
Не обязательно знать как писать на чистом JS если ты пишешь на jQuery. Если понадобится — поисковик в помощь и любую функцию jQuery можно написать.
Провести эксперимент в котором программистов использующих Си попросить переписать задачу на чистом ASM.
Вопрос: Смогут?
Ответ: Сомневаюсь.
Взгляд со стороны: А зачем?Free_ze
03.04.2017 16:27-2Взгляд со стороны: А зачем?
Как можно делать предположения об устройстве алгоритма, о работе которого ты лишь догадываешься? Хотя бы для того, чтобы оценить вычислительную сложность или хотя бы смутно подозревать возможные грабли и ограничения, которые могут возникнуть с данным алгоритмом.
VolCh
03.04.2017 16:43+1Отношения JavaScript и jQuery совсем не такие как у C с ASM. jQuery — это JavaScript библиотека, её невозможно пользоваться без использования JavaScript (транслируемые в JS языки опустим для ясности). А C с ASM общего мало имеют, кроме того, что компилируются оба в нативный код.
IvaYan
03.04.2017 16:21Что-то я не понял. Вроде написано тенденции, но с другой стороны какого-то исследования и нет. Первый пункт, про точку с запятой, очень спорный. Вы утверждаете, что
Современные IDE позволяют легко обнаружить ошибку, а читая чужой код который кстати в огромном количестве случаев плохой, легче разобраться с тем что там происходит.
По поводу IDE я не спорю, но вы не приводите ничего в защиту вашего утверждения о том, что точки с запятой позволяют легче разобраться. Не могли бы вы привести пример такого плохого кода, где с точками с запятой понятнее, чем без?
Но простите, когда синтаксис одного языка сочетает в себе синтаксис кучи других языков, то он становиться чересчур за мудреным и уродливым.
На мой взгляд сейчас в принципе нет уникальных языков, во всех можно найти что-то позаимствованное. К тому же, чем сильнее язык отличается от того, что вы изучали раньше, тем сложнее будет его учить.
Дальше перекидывают в ООП, где дают основы настолько урезанно, что саму парадигму ООП студенты не понимают до конца. На втором курсе, студенты уже сами определяются на чем им вести учебные проекты, и они выбирают язык зачастую по критерию простоты.
Когда учился я, ООП мы изучали три семестра, причем помимо ООП изучались и паттерны проектирования и методологии разработки. Это были разные дисциплины, если что.
Немудрено что возможность решения половины задачи вызовом пары методов отбивают желание во всем разобраться самому, а дальше это идет с ним по жизни.
Это вообще свойственно человеку, для меня вот устройство коробки передач автомобиля представляет мало интереса, мне что, теперь нельзя машину водить?
Сильные заявления – зачастую новый язык разрабатывается как убийца какого-либо языка 20-ти летней давности, но никто так и не смог.
Опять же, это свойственно не только вычислительной технике, всегда есть кто-то кто заявляет, что вот сейчас н решит все проблемы всех.
Поиск глубинного смысла – язык предназначен для того чтобы решать задачи а не для того чтобы с выражением лица как у Софокла обсуждать цель его создания, красоту и лаконичность.
Коробка передач автомобиля тоже предназначена решать задачу, а не чтобы с выражением лиц как у Софокла обсуждать что лучше, механика, робот или автомат.
Внезапные замены привычных конструкций – очень заметно в Android-разработке.
Вот тут ничего сказать не могу, под Android не разрабатываю, можете привести пример?
lair
03.04.2017 16:26+2Необязательность или полный отказ от точек с запятой – неужели отделять операторы данным символом так неудобно?
Да, неудобно. Каждый лишний символ — это визуальный мусор. Если можно от него избавиться, не внося неоднозначности — так и стоит сделать.
Но простите, когда синтаксис одного языка сочетает в себе синтаксис кучи других языков, то он становиться чересчур за мудреным и уродливым.
… или не становится. Конкретные примеры в студию, пожалуйста.
Все большее количество совершенно неоправданных упрощений
… в языках программирования? Снова, пожалуйста, примеры в студию.
Как-то слышал про эксперимент в котором программистов использующих JQuery попросили переписать задачу на чистом JavaScript.
И как это пример относится к языку программирования? Да никак.
Поиск глубинного смысла – язык предназначен для того чтобы решать задачи а не для того чтобы с выражением лица как у Софокла обсуждать цель его создания, красоту и лаконичность.
Ну так современные языки программирования, используемые в бизнесе, и решают задачи. Примеров "поиска глубинного смысла" я в индустрии (а не в экспериментальных языках) пока не видел.
Внезапные замены привычных конструкций – очень заметно в Android-разработке.
Я не знаю, что там в Андроид-разработке, но в языках, на которых я пишу, никаких внезапных замен привычных конструкций не было.
deniskreshikhin
03.04.2017 16:35+1Вы же говорите на своем родном языке, и
используетеупотребляетеиностранныечужестранные слова только в случае отсутствующегоаналогасоответствия в вашем языке, ну или же в случае болееэлегантногоизысканного его звучания.
beavis88
03.04.2017 16:59+1> неужели отделять операторы данным символом так неудобно?
Точка с запятой отделяет инструкции а не операторы. Оператор это синоним функции в математике.
jacob1237
Добро пожаловать на Хабр!
И держите нас в курсе Ваших языковых предпочтений =)
Myosotis
И еще пусть держит этот сайт под рукой.