На днях натолкнулся на Хабре на статью, в которой автор пытается навалять по морде одному очень популярному на сегодня языку программирования, именно навалять по морде, а не взвешенно раскритиковать. И не было бы этой статьи, если бы не два но: первое но — отвратительно низкое качество: статья по стилю оформления, аргументации и всему содержанию похожа на кликбейт, второе но — вокруг нее развернулась серьезная дискуссия, а сама статья вышла в топ, (видимо те кто ставил плюсы, хотят видеть больше наполненных болью и отчаянием статей). Но, давайте отсечем все лишнее: как и десяток лет назад, и десяток лет до того, мы вновь видим статью критикующую Инструмент с точки зрения абстракной правильности.


И так, вечер, пятница, какие языки вам сегодня кажутся наиболее совершенными, если бы вы разрабатывали свой, то чем бы он отличался от конкурентов, какие задачи решал лучше других, за счет чего победил в битве языков? Должны ли люди вообще программировать или это удел компьютеров?

Комментарии (21)


  1. Suvitruf
    04.08.2017 17:37
    +3

    Вы открыли ящик Пандоры.


  1. StanislavL
    04.08.2017 17:42

    Как Вы выразились, в первую очередь язык это инструмент. Говорить, что отвертка правильнее молотка не совсем верно. Вопрос правильности вытекает из способа применения. Гвозди забивать правильнее молотком, а шурупы крутить отверткой. Это я к чему, единственно правильного нету. Есть некий набор.
    А по теме о языках. Мне нравятся со строгой типизацией и широкими уровнями абстракции. Уровень языка отражает лаконичность. Как минимально понятно выразить на языке, что мы хотим от компьютера. Причем понятно в том числе и разработчику, который будет читать код.
    Ниже уровень — код эффективнее можно написать, но за большее время. Выше уровень мы жертвуем эффективностью в пользу простоты и лаконичности конструкции.
    Частично это VM оптимизациями решается, библиотеками с кучей настроек, но не все.

    Желательно, чтобы язык уменьшал возможности выстрелить в ногу (отсюда вытекает любовь к строгой типизации) и увеличивал возможности в использовании разных стилей — ООП, процедурный, функциональный и т.д.

    Из современных же я пожалуй за Kotlin. Но это вырастает из моего основного Java, поэтому вопрос спорный. Собственно чего и следовало ожидать от коммента.


  1. zugo
    04.08.2017 17:51

    И так, вечер, пятница, какие языки вам сегодня кажутся наиболее совершенными, если бы вы разрабатывали свой, то чем бы он отличался от конкурентов, какие задачи решал лучше других, за счет чего победил в битве языков? Должны ли люди вообще программировать или это удел компьютеров?


    ИМХО, самый совершенный из императивных языков на сегодняший день — С#. Главным образом потому, что он действительно проектировался, осмысляя предыдущий опыт и ошибки конкурентов, и потому что авторы не стесняются брать идеи из других языков и даже из других парадигм. Да один только LINQ чего стоит — это же единственный адекватный способ работы с источниками данных. Мало того, что унифицированный, так еще и позволяет избежать контакта с такой ошибкой природы, как SQL.

    Что до идеи о том, что «программирование должно быть уделом компьютеров» — отчасти соглашусь. В моем представлении «язык будущего» — это, прежде всего, некое декларативное средство для метапрограммирования и создания всевозможных DSL, позволяющееся абстрагироваться от технической реализации и сфокусироваться на задаче.


    1. yarric
      04.08.2017 19:05
      +2

      И что в C# конкретно такого совершенного, кроме LINQ?


      1. zugo
        04.08.2017 22:30
        +1

        Например, элементы ФП, типа лямбд (ну ок, сейчас это везде есть) и паттерн-матчинга, удобный синтаксический сахар (вроде эвентов и встроенных геттеров/сеттеров), отличная стандартная библиотека.

        Чисто субъективно, благодаря всему этому писать на нем приятнее, чем на той же Java.


        1. DarkEld3r
          04.08.2017 23:43

          Не то чтобы я хочу ругать C#, но стандартная библиотека — это всё-таки больше "инфраструктура", а не часть языка, если мы говорим о "фичах".
          Опять же, Java весьма консервативная и сравнение с ней не особо показательно.


          1. zugo
            05.08.2017 00:10

            Редко когда имеет смысл говорить о языке без его инфраструктуры. Мы же не на голых синтаксических конструкциях пишем, в конце концов.

            С# и Java выступают в одной «весовой категории» и применяются для решения схожих задач, да и синтаксически имеют много общего, почему бы и не сравнивать?


            1. DarkEld3r
              05.08.2017 00:19

              Дык, речь шла о "совершенстве". Мне кажется, что даже больший интерес представляет сравнение со всякими "маргинальными" языками. Да, их редко имеет смысл всерьёз рассматривать в плане выбора на чём начинать проект, но если ограничиться махровым мейнстримом, то выбор резко сужается и говорить-то особо не о чем.


            1. yarric
              05.08.2017 10:41

              Если вспоминать библиотеки, то в Java иновационных библиотек типа Spring гораздо больше так-то.


        1. yarric
          05.08.2017 10:38

          Лямбды и паттерн-матчинг там далеко не сразу появились, уже после их вхождения в мейнстрим. Изначально там были всякие странные сущности типа делегатов.


      1. BaRoN
        05.08.2017 15:31

        Единственное не написали. Совершенный там async await. Остальное хорошее, но не лучше, чем у других.


    1. Alozar
      04.08.2017 19:28
      +1

      Простите конечно, но чем вам не нравится SQL?


      1. zugo
        04.08.2017 22:42
        -2

        На мой взгляд, отдельный тюринг-полный язык для манипуляций с хранилищем данных — это абсурд. Да еще и с крайне своеобразным синтаксисом, да еще и с кучей реализаций, ни одна из которых не соответствует стандарту.

        На истину, впрочем, не претендую, будет интересно почитать, если кто-то объяснит, почему без SQL жить было бы ну никак нельзя.


    1. Zakyann
      05.08.2017 06:12

      В будущем может быть да. Пока что имеем почти ежемесячный выход новых JS фреймворков и массовую попытку хомячков за этим всем 'счастьем' угнаться. Как говорится — что-то в королевстве не так.


  1. egordeev
    04.08.2017 17:56

    del


  1. MadJackal
    04.08.2017 17:57

    Ну, когда меня учили программировать, то учили, что выбор языка определяется потребностями задачи и особенностями ее реализации, включая железо, сроки, платформы и так далее. То есть правильный язык тот, который позволит решить задачу с необходимым качеством в заданные сроки и с минимальным расходом человеческих и прочих ресурсов. В том числе и в связи с последним — выбор языка сугубо персональное дело.


    1. dom1n1k
      04.08.2017 20:17

      Мне кажется, что сегодня при выборе инструментов задача играет где-то третью роль :)
      А первые две — распространенность на рынке (откуда вытекают цена и взаимозаменяемость рабочей силы) и зрелость экосистемы.


    1. TimTowdy
      05.08.2017 16:14

      Этот, на первый взгляд правильный и довольно очевидный подход, практически не работает во многих сферах разработки. Это районе девяностых-нулевых были задачи «сделать сайт/приложение под ключ». Сейчас же у многих задач нет попросту конечной точки. Вы создаете некий проект, постоянно развиваете его, поддерживаете, а в какой-то момент возможно даже сделаете pivot. Каков будет жизненный цикл проекта заранее неизвестно. И оценка «решить за время Х с качеством У имея ресурсы Z» становится просто невозможной, потому что все три переменные постоянно непредсказуемо изменяются. Это кстати и послужило толчком к развитию гибких методологий разработки (дальнейший хайп и карго-культ вокруг них не будем обсуждать).


      1. MadJackal
        06.08.2017 16:02

        В целом, наверное, соглашусь, особенно для разработки ПО как области в целом. Хотя почему проблемы оценки "X-Y-Z", которые, по моему опыту, напрочь отсутствовали в девяностых внезапно проявились 21 веке — это отдельный интересный вопрос… "Но не для здесь", всё таки, наверное.


  1. nikitasius
    04.08.2017 20:57
    -2

    И так, вечер, пятница, какие языки вам сегодня кажутся наиболее совершенными

    Мне нравится акцент той блондинки, которая с драконами. Совершенный, слов нет.


  1. franzose
    05.08.2017 06:24
    -1

    Бедный, бедный JavaScript. Зато какая дискуссия в итоге получилась)