JavaScript — это Бейсик сего дня! (В хорошем смысле.)

    С каждым днём во мне крепнет осознание того, что JavaScript стремится играть ту же роль (занять ту же нишу), которая была свойственна Бейсику лет тридцать или даже пятнадцать тому назад.

    Иными словами, JavaScript становится простым и распространённым языком, далеко переросшим своё первоначальное предназначение, и на нём теперь можно сочинить почти какое угодно приложение (и клиентское, и серверное, и консольное… и даже с GUI, как я недавно убедился).

    Создаются целые операционные системы (Firefox OS, Google Chrome OS, Open webOS), для которых JavaScript является не менее «родным», чем Си для UNIX в своё время.

    Появляются языки, транслируемые в JavaScript (можно вспомнить CoffeeScript, Dart, новорождённый TypeScript, и так далее).

    Заметив это, уместно тотчас же порадоваться тому, что к джаваскрипту предъявляют, по крайней мере, меньше серьёзных претензий, чем некогда к Бейсику, который по справедливости невзлюбили за его GOTO и поощрение «макаронного кода». Притом джаваскрипт гораздо лучше переносится и с платформы на платформу, и из браузера во браузер.

    Кроме того, многие существующие проблемы джаваскрипта не имеют особенного значения, потому что устраняются широко распространёнными средствами с открытым исходным кодом. Так, нестрогость синтаксиса устраняется строгою проверкою исходного кода (JSLint, например). Нехватка средств обработки данных (массивов, объектов) и функций устраняется подключением Underscore, а строки помогает обработать Underscore.string, а даты — moment.js, например. Сложность употребления методов DOM (в которой, впрочем, повинен не язык JavaScript, а браузеры и их разнобой) преодолевается с помощью jQuery. И так далее. Это входит в привычку у программистов.

    Так что с джаваскриптом нам повезло. Мне нравится этот язык, и я желаю ему дальнейшего процветания.
    Share post

    Comments 46

      +3
      А еще очень удобные инструменты отладки есть практически на каждой клиентской машине. Либо их там легко установить.
        0
        А какие в этом плюсы?
        Специалист все равно будет доставлять дополнительный инструментарий.
        А неспециалисту наличие инструментов отладки на его машине безразлично.
          –1
          Для обучения очень удобно. Дать новичкам в руки только простой редактор и можно начать обучение, все остальное уже есть.
        +7
        Скорей бы появление появились процессоры исполняющие JavaScript код!
          +1
            +1
            Мне это как-то сложно представить. JavaScript интерпретируемый и слишком высокоуровневый, чтобы его можно было взять и исполнить.
              +1
              Ну, его никто особенно и не исполняет напрямую: и V8, и другие движки сперва перегоняют JavaScript в некоторый байтовый код, а затем исполняют этот промежуточный код.

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

              Будет нечто подобное тому, как видео H.264 ускоряется через интерфейс DXVA на видюхе.
                0
                Учитывая возможность появления JS-сопроцессоров, а так же наличие языков транслирующих код в JS, предлагается считать JavaScript — Ассемблером сего дня! (Тоже в хорошем смысле).
                  –2
                  «Языком ассемблера завтрашнего дня» в лучшем случае, да и то вилами на воде писано.
                  +1
                  V8 перегоняет сразу в машинный код, поэтому и быстр
                    0
                    Это уточнение совершенно справедливо, спасибо.
              +12
              >>Появляются языки, транслируемые в JavaScript

              То-есть js настолько хорош, что вместо того, что-бы писать на нём приходится изобретать более другие языки(причём не фриками-одиночками, а Google, MS..), которые потом перегонять в js.

              Замечательное рассуждение.
                0
                Ранние компиляторы Objective-C и C++ тоже были по сути трансляторами в C. Следовательно, C — плохой язык?
                  +4
                  В тех областях, где применяли оные трансляторы — да. Иначе их бы не применяли а С не стал весьма нишевым языком для узкоспециальных вещей.

                  Ваш К.О.

                  Я уже умолчу, что между «надстройкой над языком»(каковым был, а может и остался Objective-C) и «совершенно другой язык с другими парадигмами, концепциями, синтаксисом» есть некоторая разница.
                  А С++ не транслировался в С. Страуструп написал утилиту, с помощью которой это _могло_ быть сделано. Но можно было и не делать.
                    +1
                    А как думаете — почему все эти трансляторы и надстройки — удел маргиналов? Сколько людей пользуется Дартом, ТайпСкриптом и Коффее?
                      0
                      Сурово. Я немного маргинал выходит.
                        0
                        В RoR-тусовке кофе уже практически стандарт. Сам вот нынешний проект таки решился писать на кофе. Да, глазам зацепиться не за что, да, местами чувствуешь себя ограниченным, но скорость разработки явно выше.
                          0
                          В dropbox, например, успешный опыт пересадки на кофе.
                            +1
                            РоР-тусовка всегда была не от мира сего)
                              +1
                              Просто синтаксис кофе близок рубишному
                      0
                      JavaScript очень прост, и DSL — некто не отменяет
                        +6
                        JavaScript очень прост для старта и очень мощный при глубоком изучении. К сожалению между этими двумя градациями люди ленятся развиваться и потому начинают делать из него Java
                          0
                          Буквально в предыдущем топике про TypeScript.
                        +1
                        Про Гугл знаю, у него gwt есть, а у MS что за зверь в JS перегоняет?
                          0
                            +1
                            Ага, оказывается важная новость мимо прошла.
                          +1
                          То-есть js настолько хорош, что вместо того, что-бы писать на нём приходится изобретать более другие языки


                          Почитайте про Domain Specific Languages.
                          0
                          >> Сложность употребления методов DOM (в которой, впрочем, повинен не язык JavaScript, а браузеры и их разнобой) преодолевается с помощью jQuery.

                          Был бы безумно рад, если из jQuery выпилят всю лишную функциональность, которая не относится к работе с DOM.
                            +1
                            А там, как я слышал, теперь модульная сборка — кто хочет, тот может выпилить нежеланные куски (в известных, заранее заданных границами модулей, пределах).
                            +1
                            JavaScript становится простым и распространённым языком
                            Он простой, если делать что то уж совсем простое, типа создать несколько функций, несколько условий и циклов. Но для более менее серьезного программирования надо хорошо разобраться с кложерами, прототипным наследование, областями видимости и т.п. А тут и специалист по классическому ООП программированию типа Java, сломает голову. Не скажу что он простой
                            Бейсику, который по справедливости невзлюбили за его GOTO
                            Да, программирование с GOTO и GOSUB на Бейсике, больше всего напоминало программирование на ассемблере при отсутствии стека. Это был кошмар.
                              0
                              Вот-вот, простой как курс SICP.
                              Простота синтаксиса ничего не означает. Как только проект прерастает ~2000 строк, его автор обычно начинает носиться кругами и кричать П… Ц КАК ЖЕ СЛОЖНО.
                              +1
                              Учу современных детей тем же урокам, что проходил сам на бейсике на JavaScript.
                              Полет нормальный!
                                +1
                                потому что устраняются широко распространёнными средствами с открытым исходным кодом.
                                Коллбечную лапшу какое средство лечит?
                                  0
                                  проектирование
                                    0
                                    устраняются широко распространёнными средствами с открытым исходным кодом
                                    Коллбечную лапшу какое средство лечит?
                                    Широко распространённая библиотека Async с открытым исходным кодом, в настоящее время в рейтинге npm занимающая третье место по числу поставленных ей звёзд и третье место по числу модулей, зависимых от неё.
                                      0
                                      Коллбечную лапшу какое средство лечит?

                                      Правильная архитектура и рефакторинг. Все те же способы, которые описаны в книге Фаулера.
                                      +1
                                      JS используют как бейсик, потому то ему нет альтернативы. Только поэтому вокруг него такой ажиотаж и т.п. JS, по сути, ассемблер для браузеров — менно поэтому такая большая куча трансляторов и т.п. — сообщество пытается выйти из узких рамок джаваскрипта. Гораздо круче было бы, если асмом для браузеров стал бы какой-нить байткод, чтобы писать можно было на чем угодно, а не только на JS.
                                        –1
                                        Ну дык в общем-то и сейчас можно на чём угодно сочинять, только вот транслировать не в байт-код, а в JavaScript.

                                        Например, при помощи Emscripten можно транслировать битовый код LLVM в JavaScript, запускать Python, Ruby и др.
                                          0
                                          К сожалению, js «хуже» чем асм тем, что слишком высокоуровневый. Для асма пришлось придумывать отладочный символы, дизассемблеры и прочий стафф, позволяющий забыть, что под капотом шевелится, по сути, байткод. ScriptMap — первая ласточка, typescript — вторая. Однако, имхо, глупо терять время на трансляцию кода с одного высокоуровнего языка на другой, чтобы потом терять еще время на его интерпретацию.
                                        –1
                                        JavaScript живет не только в браузерах, серверах ( в случае с Node.JS )… он очень удобен как внутренний скриптовый язык, или язык описания конфигураций в программируемых системах… Очень сильно идею развивали адепты Qt ( очень даже неплохо вышло, правда там с Qt были какие-то непонятки, но сейчас вроде улеглось, и я думаю, что развитие в этом направлении продолжится). Тем более вокруг все больше JSON — чем-же как не JavaScript-ом всей это переваривать :)
                                        Язык нравится, он «не хуже, и не лучше», я считаю, что сравнивать языки как таковые — не правильно. Сравнить можно реализации чего либо одинакового или однотипного, но учитывать придется не только язык, но и аппаратную платформу, и набор сопутствующих технологий, интерпретаторы и т.д.)
                                        Ни как не могу заставить себя разобраться что же там теперь такого есть в ES5 Harmony, говорят там что-то вкусное :)
                                          –1
                                          кстати… ( сейчас меня закидают камнями ) как жаль, что JavaScript, на ровне с Python, нельзя использовать для скриптования nix-ов. :)
                                            +1
                                            хотя мне уже дали пинка напомнив про Node.JS
                                            PS: Все больше у меня растет к нему интерес.
                                            0
                                            пусть это лежит здесь: http://habrahabr.ru/search/?q=[es5 harmony]&target_type=posts

                                            там сейчас статья одна, но хорошая.

                                          Only users with full accounts can post comments. Log in, please.