Девочки, нужен совет...Индусский код

Про синтаксис языков программирования

Прочитал про скорость языков php, python, groovy, ruby.

По сути, груви очень похож на js. Почти одно к одному, разница например, что пишется не var, а def.

Так вот возник вопрос - почему бы не применять единый стандартизированный синтаксис для всех будущих языков?

Ну появится через пару лет какой-нибудь язык voody, и там введут типа команду для объявления переменной vood (утрирую)

Так почему бы не применить ту же var, чтобы брать исходники на js, а они раз, и работают под вуди? а?

Я думаю, какой-бы внутренний компилятор не применялся для языка, внешне это всё равно будет не лучше. чем синтаксис java. Сейчас ведь все эти новомодные языки типа php, java, питон, c#, руби ...муди и иже с ними, одно и то же почти.

Так вот точно также, как есть html и css и стандарты, точно также нужно сделать единый стандарт на языки программиирования.

Например, опять же смотрим, пишут println "Starting". По логике понятно, что это вызов функции. Так отчего же не написать стандартно println("Starting"); ? Хуже то не будет...

Думаю, что команды обязательно нужно завершать чем-либо, наверное, лучше использовать привычный символ ;

В питоне вона пишут if (shout < deadif): return (shout + 1). Это не есть красиво, и нестандартно. По логике непонятно, что это двоеточие делает. Это необнозначность, которую нужно из яыков искоренять. Лучше ввести обязательное применение блока {}, то есть if (shout < deadif) { return (shout + 1) }

И таких примеров много.

Неоднозначности вообще вещь такая, что лучше ими не баловаться. Например, в любой книжке по языку есть раздел по приоритетам выполнения команд. Мне всегда было скучно это. Я лучше поставлю скобку для ручного расставления приоритета. Поэтому эти разделы просто уже устарели.

В руби вона вообще непонятно (конкретно мне, потому что я первый раз вижу этот язык), что делает значок @ тут: @prev = nil Хотя вначале стоит attr_reader :count, :prev, :next, откуда можно догадаться, что это какой-то массив с указателями.

К тому же, не используют скобки в условиях if shout < deadif, что очень нехорошо.

Наиболее удобным и красивым для восприятия логики синтаксисом я считаю у java ну и конечно, js, вообще вся ветка ecma-262.

За этим будущее. Все эти языки типа руби-груви-питон сойдут на нет в ближайшие пару лет, они были временными, типа полигон для тестирования. Через тройку лет везде почти будет использоваться стандарт java и ecma-262. Это мой прогноз (-:

Comments (15):

    • honeyman
    • 22.08.2010 17:58
    • Нижний Новгород / Нижегородская область
    Синтаксис не важен абсолютно.

    Важна семантика. А синтаксис может быть каким угодно абсолютно, лишь бы его хватало для синтаксиса.

    А наиболее красивый синтаксис из всех языков - у Хаскелла (из которого всякие джаваскрипты и питоны понемножку воруют фенечки, одну за другой).
    • Нуна будет посмотреть на этот Хаскел, спасибо за мыслю.
        • honeyman
        • 22.08.2010 18:19
        • Нижний Новгород / Нижегородская область
        Посмотри ещё на J за компанию. Поймёшь, насколько бессмысленно хоть как-нибудь стандартизировать синтаксис у разных языков, при том что и там и там синтаксисы интересные, удобные, и фактически совершенно противоположные :)
        • Мысль моя вообще к другому идёт. Почитай последний абзац.
          Останется один язык.
            • honeyman
            • 22.08.2010 18:31
            • Нижний Новгород / Нижегородская область
            Вряд ли. А если так и случится, то это будет язык, специально предназначенный и максимально удобный для создания DSL. Ну, наподобие MPS. Или банальный Lisp :)
    • aamonster
    • 22.08.2010 18:10
    • Санкт-Петербург / Санкт-Петербург
    (ехидно)
    А лисп вы как в этот синтаксис впихнёте?

    Ну и вообще, если на то пошло, разница в синтаксисе - наименьшее из зол. Тот же JavaScript, хоть и похож по синтаксису на Java - но в нём же даже классов по сути нет: //ru.wikipedia.org/wiki/%...2%D0%B0%D0%BD%D0%B8%D0%B5 , он вообще ближе к Perl (ибо основан на хэш-таблицах)
    • Я, как минимум, говорю о каких-то стандартных вещах, общих для всех языков - я же это описал в записи.

      Всё остальное, что затрагивает логику, нужно тоже офомлять в рамках стандарта.

      Причём тут классы вообще? У js есть прототипы, которык стандартно пишутся через точку - object.prototype.print

      Конечно, могли укуриться умудриться бы ввести запись типа object#p@print

      Понимаете?

      Разговор об этом.

      (-:


      ps. perl вообще не упоминайте, это тихий ужас, который я терпеть не могу. и слава богу, что он прошёл мимо меня, как и всякая мура типа c# и т.п.
        • honeyman
        • 22.08.2010 19:02
        • Нижний Новгород / Нижегородская область
        > Я, как минимум, говорю о каких-то стандартных вещах, общих для всех языков - я же это описал в записи.

        А их нет. В одних языках есть списки и словари на уровне примитивов языка - в других нет. В одних языках есть явная типизация - в других нет. В одних языках есть переменные - в других нет. В одних языках есть последовательность действий - в других нет. В одних языках архитектура фон Неймана поддерживается на уровне языка - в других нет.
        • aamonster
        • 22.08.2010 19:38
        • Санкт-Петербург / Санкт-Петербург
        Как я уже сказал, эти общие вещи - ерунда, осваиваемая за несколько дней. Отличия в языках (если они есть - это не всегда) глубже.

        Да и вообще, на сегодняшний день для императивных языков нет прболемы изучения языка. Проблема - в изучении библиотек. Так что вы боретесь с ветряными мельницами.
        • Я - не борюсь. Я написал заметку об этом.
            • aamonster
            • 22.08.2010 19:55
            • Санкт-Петербург / Санкт-Петербург
            Туше :-)
    • dnovikoff
    • 23.08.2010 02:12
    • Москва / Москва
    Неоднозначности вообще вещь такая, что лучше ими не баловаться. Например, в любой книжке по языку есть раздел по приоритетам выполнения команд. Мне всегда было скучно это. Я лучше поставлю скобку для ручного расставления приоритета. Поэтому эти разделы просто уже устарели.

    Та ж фигня. Что интересно, в последних ревизиях стандарта C++ простановка скобок является обязательной, иначе выводятся предупреждения. То есть приоритеты всё ещё работают, но с -Werror код уже не компилируется. По-моему, это огромный шаг в сторону повышения читаемости и надёжности кода.