воскресенье, 13 марта 2011 г.

Один язык программирования на стороне клиента и сервера

О чем пойдет речь 

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

Однозначно ответить на поставленный вопрос не могу, но склоняюсь больше к да, чем к нет и вот почему...

Какие проблемы (возможно надуманные) мы имеем на данный момент

Сейчас ситуация представляется мне так: под клиент (далее браузер) программируют используя javascript как язык программирования, также html, css, возможно xml, на сервере же (далее бекенд) ведется разработка на PHP, Java, Python, ASP.NET и даже Javascript! и других языках программирования. Также на бекенде работают с базой данной, зачастую используют язык SQL.

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

Но другое дело поддержка кода, это же сколько кода получается на разных языках, в следствии чего приходится переключаться, то Javascript, то PHP, то CSS, то HTML. Причем у каждого из этих языков свои тонкости, которые порой часто забываешь, да и просто сложно учитывать. Возьмите, например, даже тот же javascript, вы думаете, что знаете этот язык? Черта с два!

В следствие чего возникает проблема - постоянная мешанина кода и необходимость совершенствоваться в разных языках, учитывать тенденции развития нескольких языков. Наверное, это проблема надуманна, ибо я верю, что если код организован грамотно, то проблем с мешаниной и переключением контекста на разные языки не будет. Но даже если эта проблема надуманна, мне все равно хочется попробовать ее решить. Хочется провести, что-то вроде исследования: "какое минимальное количество языков, достаточно знать, что бы программировать под веб?".

Способ решения номер один: php_to_js($fileName)

Сразу, хочу представить один из забавных способов решения проблемы. Выглядит он следующим образом:

function php_to_js($fileName)
{
    $content = file_get_contents($fileName);
    return str_replace(
            array('', '$', '?>'),
            array('', '.', '', ''),
            $content);
}

Данный код всего лишь на всего заменяет свойственные символы для php на свойственные для javascript символы. Внимание! Это всего лишь набросок, так сказать, концепт более сложных движков.

Вот как мы это применим в html:

<!DOCTYPE HTML>
<html>
    <!-- head part -->
    <body>
        <div id="simpleDiv">Text</div>
        <input type="button" id="btn" 
                  value="click on me" />
    </body>
</html>

А вот сам example.php:

$window->onload = function()
{
    $document->getElementById('btn')
             ->onclick = function()
    {
        alert('Text changed');
        $document->getElementById('simpleDiv')
                 ->innerHTML = 'another text';
    };
};

В результате будет сгенерирован вполне работоспособный код javascript. Как мне кажется такой подход имеет право на жизнь, но если функция php_to_js будет более продвинута и т. д. и т. п. Одним из плюсов я бы, наверное, назвал, что php должен быть синтаксически правильно написан и IDE поможет вам в написании такого кода.

Способ решения номер два: javascript and backend handler

Есть другой способ, который мне более всего по душе, но это не чисто один язык. Суть в том, что вы пишете полностью приложение под браузер используя javascript. А когда вам необходимо достучатся к данным на сервере вы используете технологию ajax, причем на сервере скрипты на php или любом другом языке, пишутся легковесными, например, запрос к БД, и вывод ответа в виде json.

Наверное, один из плюсов такого подхода то, что почти вся логика будет на клиенте, хотя для некоторых видов приложений это может быть и минус. Причем логика эта описывается при помощи javascript. Тут главное следит за памятью и быстродействием, ибо вы не знаете, что там вас ждет на клиенте. У кого-то компьютер мощный, а у кого-то нет.

Способ решения номер три: nodejs 

Третий подход, который я нашел весьма популярным - это nodejs. Это популярный движок в последнее время. Суть его заключается в том, что вы пишете на сервере используя javascript - это весьма удобно, так как нужно будет всего лишь использовать один язык (если не считать HTML, CSS, SQL).

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

Итоги 

Вообщем, мне кажется, что тем, кто хочет "одноязычие" , еще стоит посмотреть в сторону технологии ASP.NET и глянуть на NodeJS

Комментариев нет:

Отправить комментарий