СТАТЬЯ 5. ЯЗЫКИ ВЕБ-ПРОГРАММИРОВАНИЯ. Языки web программирования


Языки веб-программирования - какой выбрать?

Это не сравнительный анализ языков веб-программирования (для этого надо быть гуру в каждом из них, а я могу лишь похвастаться глубоким знанием платформы ASP.NET), а всего лишь краткий обзор популярных фреймворков и языков веб-программирования в рамках темы создания сайта, предназначенный для новичков сайтостроения.

Хочу сразу сказать, что не существует одного языка программирования, который бы превосходил все остальные. Превосходство какого-либо языка программирования может проявляться только в контексте какой-либо задачи. Но это совсем необязательно. Многие задачи могут быть эффективно решены с помощью любого современного популярного языка программирования. Часто, выбор языка и фреймворка определяется тем, какими знаниями обладают программисты, готовые реализовать данный проект. В большинстве случаев, в этом нет ничего плохого, скорее наоборот, если посадить, например, ASP.NET программистов на PHP проект, то результат может оказаться плачевным.

Необходимо, также, понимать различие между языком программирования и фреймворком. Язык программирования – это просто некоторый базовый синтаксис (возможно со стандартными библиотеками), с помощью которого можно создавать приложения. Фреймворк же предоставляет программисту различные библиотеки, значительно упрощающие создание программ и сайтов. Некоторые языки и фреймворки представляют собой неразрывное целое (например, ASP.NET и JSP). Другие языки могут использоваться без фреймворка (PHP и Perl).

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

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

В первую очередь, языки веб-программирования можно классифицировать на клиентские и серверные. Как следует из названия, клиентские языки используются для написания программ, выполняемых на стороне клиента (веб-браузер), а серверные – для программ, выполняемых на сервере.

Среди клиентских языков веб-программирования надо выделить JavaScript, который, также как и HTML, лежит в основе многих веб-технологий (например, в основе популярной в последнее время технологии AJAX) и умение программировать на нем относится к базовым знаниям веб-разработчика.

Другие популярные клиентские языки, а точнее фреймворки – это Adobe Flash (язык ActionScript) и SilverLight (любые .NET языки). Adobe Flash применяется веб-мастерами очень давно. Основное применение этой технологии – интерактивные сайты и сервисы, онлайновые игры, мультимедийный контент и реклама. SilverLight – это новая технология, разработанная компанией Microsoft и позиционируемая как замена Adobe Flash. Не смотря на то, что с помощью Adobe Flash или SilverLight можно построить полностью весь сайт, так делать не следует (за редким исключением). Дело в том, что поисковики пока не умеют индексировать ни Adobe Flash, ни SilverLight.

Серверные языки веб-программирования могут быть условно разделены по операционной системе, на которой они работают: Windows и *nix. Это разделение в некоторой степени условно, т.к. практически все популярные языки и фреймворки портированы на обе ОС. Тем не менее, они редко используются на неродных ОС.

Если говорить про ОС Windows, то тут безраздельно властвует технология ASP.NET, разработанная компанией Microsoft. С помощью ASP.NET можно создавать сайты любого уровня сложности – от самых простых, состоящих их нескольких страниц, до очень сложных, обрабатывающих миллионы запросов в день (сайты Microsoft, написанные на ASP.NET, являются одними из самых посещаемых в Интернет). Технология ASP.NET привлекательна для тех, кто неплохо разбирается в ОС Windows, но незнаком с Unix-подобными системами. Основной недостаток – меньшее, по сравнению с *nix, количество дешевых хостингов или необходимость покупки серверной лицензии, в случае с выделенным хостингом. Однако, по сравнению со стоимостью разработки сложных сайтов, а, также, стоимостью трафика, разница расходов на Windows и *nix хостинг может быть пренебрежимо мала.

Самым популярным языком веб-программирования является, безусловно, PHP. Его основными преумуществами являются: простой синтаксис, высокое быстродействие, поддержка большинством хостингов. Очень весомым преумуществом является то, что на PHP написаны многие популярные движки (например, самый популярный движок для stand alone блогов – WordPress).

Другой популярный язык веб-программирования на платформе Unix – язык Perl. Он имеет сложный запутанный синтаксис и никогда не предназначался для веб-программирования. Я не рекомендую его использовать для создания сайтов.

JSP (Java Server Pages) – это часть технологии J2EE, предназначенная для создания сайтов с помощью языка Java. JSP имеет очень много общего с ASP.NET и выбор между этими двумя технологиями чаще всего основывается на субъективных предпочтениях, а не на каких-либо преумуществах или недостатках этих платформ.

В последнее время высокую популярность приобрел язык Ruby и, в частности, фреймворк Ruby on Rails. С его помощью можно очень быстро создать сайт с требуемой функциональностью. Одним из существенных недостатков Ruby является низкое быстродействие.

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

В лучших традициях современной блогосферы подобрал комикс:

developerguru.net

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

Так что же такое веб-программирование?

Предположим, Вы сделали простой Html-сайт и Вам хочется узнать мнение посетителей о размещённом контенте. Что для этого нужно? — правильно: дать возможность посетителям оставлять свои комментарии. Средствами HTML, или CSS этого достичь не удасться. И вот тут на помощь и приходят программы (их ещё называют скриптами) созданные при помощи языков веб-программирования.

Получается: веб-программированием можно назвать создание специальных программ для их использования в сети интернет. Существует довольно много языков программирования: C++, Perl, Java, Php, JavaScript, Python, Visual Basic и другие.

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

Поговорим немного о терминах. Вся информация в сети интернет хранится на удалённых компьютерах, которые называют серверами. Противоположной стороной выступают пользователи сети, ищущие нужную им информацию, их принято называть клиентам.

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

Самые распространённые из них — JavaScript и Visual Basic. Особенность таких языков заложена в их названии. Программы, написанные на клиентских языках программирования обрабатываются на клиентском компьютере. Говоря проще, скрипты обрабатывает браузер, стоящий на Вашем компе. Из этой особенности вытекают  их плюсы и минусы.

Самым большим плюсом клиентских языков программирования является то, что нет необходимости отправлять веб-документ  для обработки на сервер. Эта особенность значительно повышает скорость чтения скрипта. Уменьшается трафик,что экономит деньги и снижается нагрузка на сервер. Так же нет надобности ставить дополнительное программное обеспечение для обработки скриптов, т.к. их обрабатывают браузеры.

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

Серверные языки программирования

Серверные языки программирования соответственно работают на стороне сервера. Во взаимодействии с базами данных они поддерживают связь между пользователем и сервером. Получая запрос с адресом веб-документа от браузера, серверные программы связываются с базой данных. БД отдаёт информацию о веб-странице скриптам сервера, и те обработав её, отсылают для интерпретации браузеру клиента, который и выводит результат совместной работы на монитор.

Упрощённая схема такой работы изображена на рисунке:

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

Наиболее распространённые серверные языки программирования: C++, Perl, Java, Php, Python.

prostoyblog.ru

Выбираем язык для веб-разработки | GeekBrains

Базовые языки для успешного старта.

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

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

Спокойствие, сейчас коллективный разум сделает выбор за вас.

В первой части поговорим о языках веб-пространства. Какой предъязыковой расклад надо знать и каков порядок изучения? Об этом далее.

Передовая, тыл и неочевидный выбор

Первый выбор, который надо сделать — сфера ответственности.

Front-end разработчики Иногда их еще называют веб-дизайнерами, но это неправильно. Задача front-end разработчика сводится к созданию интерфейса, он отвечает за то, чтобы веб-страница загружалась быстро, не тормозила и код на ней работал правильно.

Backend-разработчики Люди, ответственные за скрытую от глаз функциональность и обработку данных. Их работа — написание серверного кода.

Full-stack специалисты Они востребованы наибольшим образом просто потому, что способны в одиночку выполнить все пожелания заказчика.

Конечно, проще всего поставить себе задачу разобраться со всем, но это лишь рассеет ваше внимание на ранних этапах, а на более поздних вы и так познаете необходимость хотя бы поверхностного изучения всех процессов. Поэтому пойдём по порядку и начнём с front-end.

Лицо, которое надо продать

Самое главное, что не надо делать человеку, желающему стать front-end разработчиком, так это искать минимальный список предъявляемый список требований к специалисту. В этом случае велик риск наткнуться на статьи, подобные статье «Frontend-разработчики должны быть в теме всего». Всё что там написано — абсолютная правда, но прийти к этому надо начиная с малого, а малое — это 3 основных кита frontend-а: HTML, CSS и JavaScript. Базу для дальнейшнего обучения вы можете получить на бесплатном интенсиве по веб-разработке.

Ещё несколько лет назад, изучив HTML и CSS в формате нескольких умных книг, а JS на уровне jQuery, можно было всерьёз претендовать на позицию junior-a. Однако сегодня времена изменились, а требования сильно возросли. Впрочем, знания HTML и CSS по-прежнему можно уложить в пару хороших книг:

На JavaScript придётся потратить достаточно много времени. Здесь мало будет изучить теорию, например по книге «JavaScript: Сильные стороны». Необходимо несколько месяцев набивать руки и тренировать мозги на практике, в том числе используя упомянутый jQuery.

Кроме теоретических и практических знаний, front-end специалист должен очень хорошо знать последние интернет-тенденции и уметь профессионально их применять. Ведь это именно та зона ответственности, по которой подавляющее большинство заказчиков будет оценивать весь проект на момент сдачи.

Обработать, прикрутить и создать

Базовый язык для любого back-end разработчика — PHP. Это некоторая основа, знать которую в совершенстве, как и делать основным инструментом, совсем не обязательно, но на базовом уровне понимать обязаны. Для этого можно хотя бы внимательно изучить книгу «PHP: правильный путь».

Что касается актуальных языков, то выбирать скорее всего придётся из Ruby и Python, причём выбор этот — чистая вкусовщина. Даже здесь на форуме периодически вспыхивают споры, но даже в споре за удобство изучения однозначного победителя найти невозможно. По Python полезно будет прочитать книгу с незамысловатым названием «Изучаем Python», по Ruby — «Rails 4. Гибкая разработка веб-приложений».

Ещё один язык из разряда must know — всё тот же JavaScript с его производными jQuery и Ajax. В данном случае интересует именно back-end разработка, поэтому тратить время на общее изучение языка не имеет смысла, а вот посещение ресурсов вроде блога Антона Шевчука может оказаться крайне полезным.

Ну и конечно потребуются знания в области баз данных. Как минимум, это означает изучение SQL, как максимум — опыт работы с популярными БД.

Один за всех

Правда профессии веб-разработчика в том, что так называемых «сферических» специалистов здесь практически нет, да и рядовые заказчики далеко не всегда понимают эти деления, поэтому в том или ином виде к full-stack-у придётся прийти довольно быстро. Соответственно перечитайте предыдущие 2 раздела, посетите ещё раз форум GeekBrains и начинайте грызть гранит программной науки.

Знания не о языках

Помимо самих языков, необходимо изучать все прилагающиеся к ним профильные надстройки. Особенно это касается JavaScript (AngularJS, Knockout, Backbone) и CSS (Bootstrap, Foundation). Кроме того вам необходимо набить руку с системами контроля версий Git и SVN.

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

geekbrains.ru

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

Языки программирования, на основе которых лежит любой сайт, можно вместить всего в две категории: клиентские и серверные.

Серверные языки программирования

Чтобы понять, как работают серверные языки веб-программирования, заходим на любой сайт. Сервер, который мы посетили, на своей стороне обрабатывает информацию, а потом выдает ее нам, но уже в виде HTML. Страница кода со скриптом не видна посетителю.

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

Серверные языки рассчитаны на работу с так называемыми базами данных. В них встроены свои библиотеки, которые нужны для считывания, редактирования и сохранения информации.

К серверным web языкам программирования относятся такие языки, как PHP, Perl, ASP.NET, Java, Python, Groovy, Ruby. Для работы с ними вполне достаточно установить на персональном компьютере локальный сервер.

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

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

Здесь метод обработки запросов немного другой. При заходе на сайт браузер принимает с сервера определенную программу – скрипт, который выполняется соответственно в вашем браузере. В общем, все клиентские языки выполняются с вашей стороны окна, в браузере.

У клиентских языков есть свои преимущества и недостатки. Для основного сервера это плюс, так как не нужно загружаться выполнением скриптов, а недостаток в том, что ваш браузер может просто не справиться с выданным скриптом. Это, в основном, касается устаревших браузеров или их неправильной установки. К таким языкам web программирования относятся JavaScript (+ AJAX), ActionScript, VisualBasicScript и прочие.

25 августа 2013, 7300

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

codomaza.com

Курс «Языки веб-программирования» (на основе Ruby) от МГТУ им. Н. Э. Баумана на канале Технострим / Блог компании Mail.Ru Group / Хабр

В этой статье мы расскажем о курсе «Языки веб-программирования», который читается на кафедре «Компьютерные системы и сети» (ИУ-6) МГТУ им. Н.Э. Баумана. Примеры приводятся на Ruby, а сам курс и представляет собой 16 видеолекций, доступных бесплатно на канале Технострим. В «Бауманке» курс читается для студентов второго курса, уже знакомых с высокоуровневыми языками программирования, такими как Pascal, C++ или Java. Основной акцент делается на системное понимание технологий, используемых в веб-программировании, а не на глубину освоения именно технологий Ruby. Поэтому курс также будет полезен слушателям, имеющим отрывочные знания о веб-технологиях на любых языках.

Содержание

  1. О курсе «Языки веб-программирования»
  2. Содержание лекций
  3. Как создать курс для вуза
  4. Почему Ruby?
  5. Почему Ruby не популярен?
  6. Резюме
Языки веб-программирования
Почему курс называется «Языки веб-программирования»? Ответ очень прост. Как 30 лет назад, когда Интернет только зарождался, так и сейчас нет возможности использовать один язык программирования.
  • Языки разметки — это HTML и CSS.
  • Языки конфигурирования и обмена данными — JSON, XML, YAML.
  • Браузерное программирование — Javascript (Typescript, Coffeescript...).
  • Серверное программирование — Ruby, PHP, Perl, Java, Javascript…
Чтобы понять веб-программирование даже в минимальном объёме требуется знать 4-5 языков разметки и программирования (хотя границы между ними сейчас уже размыты).
Цель курса
Основная задача курса — заложить понимание технологий, необходимых для веб-разработки, поскольку большинство современных проектов так или иначе связаны с веб-разработкой. Курс скомпонован так, чтобы в сжатом виде дать слушателям основы, которые могут быть использованы как каркас для углубленного изучения.

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

Автор курса
Главный разработчик курса — кандидат технических наук, доцент кафедры «Компьютерные системы и сети» МГТУ им. Н. Э. Баумана Самарев Роман Станиславович. Программист с более чем 20-летним опытом (C++, C, Java, Perl, PHP, Ruby и др. для Windows, Linux, Embedded Linux, MacOS), руководитель программных разработок, исследователь в области СУБД, обработки данных и больших данных, работал в России, в Германии и в США.
Длительность и формат
Полный курс включает 192 академических часа: 16 лекций по 2 часа, 8 семинаров по 2 часа, 48 часов на 12 лабораторных работ. Остальное время выделено на самостоятельную подготовку. Видеоматериалы же включают только лекционную часть. Желающим глубже погрузиться в тему курса, материалы лабораторных работ и семинаров придется осваивать самостоятельно. Все вопросы можно задавать преподавателю: [email protected].
Результаты
В рамках учебного курса мы формируем у студентов понимание не только конкретных веб-технологий, реализованных на языке программирования Ruby, но, скорее, целостное восприятие проблем, возникающих при создании веб-приложений и всего, что им сопутствует, используя Ruby как очень удачную иллюстрацию. Сам язык Ruby является для студентов полезным дополнением, которое можно широко использовать и за пределами курса.
Содержание курса
Лекции 1-2. Введение
  • Введение в веб-программирование с точки зрения базовой архитектуры.
  • Минимальные сведения о языках разметки и таблицах стилей.
  • Минимальное введение в Javascript.

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

Лекции 3-5. Ruby

Следующие три лекции посвящены Ruby, поскольку именно технологии на этом языке Ruby положены в основу курса. Лекции включают:

  • Основы языка Ruby.
  • Необходимые сведения о структуре типов и объектной модели.
  • Функциональный стиль.

Лекция 6. Принципы построения веб-приложений
  • Common Gateway Interface.

Кто-то скажет, что этот стандарт не актуален, но он лежит в основе всего современного веб-программирования. Поэтому любой веб-программист просто обязан знать, что это такое, и должен понимать, что простейшее веб-приложение — это всего лишь put 'Hello World'.

Лекция 7. Rack

  • Rack — промежуточный слой для большинства веб-фреймворков на Ruby.
  • Sinatra — распространенный фреймворк для создания простых приложений.
  • Пример создания приложения.

Лекция 8. Введение в Rails
  • Ключевые аспекты Rails-приложения.

Ruby on Rails — тот самый фреймворк, который сделал язык Ruby знаменитым и стал почти его синонимом. Это один из примеров глубоко проработанного фреймворка с концепцией Model-View-Controller, который послужил прототипом для создания множества других веб-фреймворков, включая Grails и Django. Отметим, что концепция Rails: генерировать как можно больше кода при помощи автоматических генераторов и меньше писать руками.

Лекция 9. Асинхронное взаимодействие

Большинство современных веб-приложений используют асинхронный метод, то есть запросы к серверу уходят в фоновом режиме для пользователя. Ответы отрабатываются где-то в глубине браузера. Что здесь надо знать?

  • Обменные форматы — XML и JSON.
  • Запуск асинхронного запроса из Javascript.
  • Концепция ненавязчивого Javascript применительно к Rails.

Лекция 10. Тестирование

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

  • Тестирование различных аспектов веб-приложений.
  • Введение в языки предметной области (поскольку RSpec и Cucumber — те самые примеры «человечности» в тестах: программа тестирования должна быть понятна не только для программиста, который «заточен» под используемый язык, но и для нормального человека). Обратите внимание, что подход, использованный как в RSpec, так и в Cucumber, сейчас широко растиражирован в средствах тестирования для многих других языков программирования.
  • Средства типа SikuliX и Selenium, которые могут быть использованы для тестирования программ с графическим интерфейсом и браузерами соответственно.

Лекция 11. Технологии XML
  • Языки запросов типа Xpath, Xquery.
  • XSL и XSLT.

Казалось бы, какое это отношение всё это все имеет к веб-программированию? Но XML лежит в основе веб-технологий. То, что сейчас мы не используем XML в качестве обменного формата, вовсе не гарантирует, что через 5 лет мы опять не начнем это делать. До сих пор нет единого подхода к верификации данных в формате JSON. А в случае с XML схема разметки заложена самим языком.

Язык запросов Xpath — это, по сути, универсальный язык путевых запросов, который может быть использован для поиска любых элементов древовидных структур данных, куда входит и JSON.

Преобразования XSLT — это также еще один из способов трансформации документов XML, знание о котором позволит студентам не изобретать велосипеды в будущем, когда они столкнутся с ETL.

Лекция 12. ORM (Object-Relational Mapping)

Практически любой современный фреймворк для веб-программирования предоставляет какие-либо средства для объектно-реляционного преобразования. Студентам необходимо понимать:

  • для чего нужен такой механизм;
  • какие у него ограничения;
  • как им пользоваться на практике.
В данном случае всё рассматривается в контексте Ruby on Rails.

Лекция 13. Сессии, безопасность и всё, что с этим связано
  • Способ хранения состояния, основанный на cookies.
  • Типовые способы аутентификации.
  • Пример добавления авторизации в Rails.
  • Вопросы безопасности веб-приложений как таковых.

Лекция 14. Сервисы
  • Исторические аспекты.
  • Конкретные рекомендации по разработке и размещению собственных сервисов для Web.

Лекция 15. CMS (Content Management Systems) В веб-программировании важно не только уметь написать приложение, но и понимать, нужно ли его писать. Эта лекция — демонстрация основных типов уже созданных веб-приложений, которые можно настроить под требования конкретного заказчика и, при необходимости, доработать.
  • Акцент на Ruby-средства.
  • Самые распространенные CMS, написанные на PHP.

Лекция 16. Размещение Ruby веб-приложений в Интернете

Рассматривается общая идеология веб-сервисов. Объясняются истоки появления этой архитектуры с обменным форматом XML и её дальнейшая модификация в Web-API с JSON и REST или GraphQL.

  • Веб-серверы.
  • Методы виртуализации.
  • Способы размещения приложения в Интернете.

Как создать курс для ВУЗа
Сложно создавать учебные курсы по темам, связанным с программированием, где технологии меняются каждые 5-10 лет. При создании курса для университета приходится балансировать между формированием практических навыков по конкретным языкам программирования и подачей теоретических основ, необходимых для понимания технологий как таковых. А кроме того, отличие университетского образования от учебных курсов заключается в системной подаче материала, что также накладывает ограничения на то, когда и в каком объеме может быть подан определенный материал.

В последние годы появилась тенденция записывать университетские лекции на видео и создавать видеокурсы. Курс «Языки веб-программирования» является первой такой официальной попыткой нашего ВУЗа. И на основе отзывов мы решим, как и в каком формате делать новые записи.

10 лет назад нужно было радикально обновить учебную программу, внедрив, в том числе, веб-программирование. На кафедре «Компьютерные системы и сети» на курсы, связанные с электроникой и проектированием ЭВМ, традиционно выделяют примерно столько же учебных часов, сколько и на программирование. Причем курсы по программированию включают в себя алгоритмическую подготовку на высокоуровневых языках Pascal, С, С++/Qt, подготовку на на различных ассемблерах, а также теорию языков программирования и компиляторы. И даже языки для программирования ПЛИС и специфического железа. То есть кафедра готовит универсальных специалистов, которые в дальнейшем сами выбирают специализацию.

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

Почему Ruby?
Почему выбран Ruby? Выбор языков для веб-программирования достаточно богат. Помимо Ruby это PHP, Perl, Javascript, Java, Go и другие. Если же подходить с позиции высоконагруженных веб-приложений, то, отправляя сомневающихся в Web Framework Benchmarks, видим в первых рядах C++, Java, Rust, Ur, Go и пр. Ruby не является ни самым популярным для веб-разработки, ни самым быстрым для высоконагруженных решений. Однако у Ruby есть масса других достоинств, делающих его языком программирования, о котором должен иметь представление любой образованный программист.

Недавно Ruby отметил 25-летие, то есть это достаточно зрелый язык. Несмотря на то, что большинство упомянутых языков также перешагнули или близки к этому возрасту (Rust, Dart, Go пока «зеленые» по сравнению с ним), Ruby — один из немногих языков, сохраняющий обратную совместимость на протяжении этих лет.

В мире Ruby, можно сказать, не было революций и каких-то радикальных изменений. Он относится к изначально хорошо спроектированным языкам, базовые концепты которого дошли до сего дня без изменений. Претензии по производительности относились к старым версиям до 1.8.7, поддержка которых прекращена 10 лет назад. Современные версии каждый год демонстрируют кратный рост производительности. Претензии, что этот язык мало популярен, справедливы лишь для нашей страны. К сожалению, у нас крупные компании действительно незаслуженно обходят его стороной.

Почему Ruby хорош для университетского образования? Это чистый объектный язык. И поскольку он динамический, переопределить можно почти всё. Никаких простых типов в его модели нет (не будем здесь размышлять о системной реализации, речь только о модели). Любые данные — это объект. Код — это объект. То есть Ruby позволяет легко усвоить принципы объектно-ориентированного программирования. Кроме того, синтаксис языка достаточно прост и почти не имеет исключений. Любой код, написанный в программе, должен быть когда-то выполнен, причем не важно, где этот код написан — внутри объявления класса или снаружи. Что бы ни было написано, оно будет выполнено. Синтаксис Ruby очень гибкий, что делает его очень удобным для написания языков, ориентированных на предметную область (DSL/DSEL). Кроме того, базовый концепт Ruby — блок — это анонимная функция. Освоение этих принципов позволяет студентам легко овладеть функциональным программированием на чистых функциональных языках программирования.

И, скорее, декоративное достоинство Ruby — не нужно тратить время на объяснение обязательности форматирования кода отступами. Программа в любом случае четко размечена. Форматирование автоматически обеспечит rubocop, а писать правильно студенты научатся со временем.

Почему Ruby не популярен?
Почему же Ruby, обладая такими достоинствами, всё же не популярен и относится к языкам с высоким порогом вхождения?

Первое, что следует понимать: Ruby — это не очередной императивный язык программирования, на котором можно начать программировать за вечер, а за неделю постичь полностью. Это другой язык с другой философией.

Первый принцип Ruby: текст программы должен восприниматься как текст на естественном языке. То есть Ruby — язык для программиста, который является человеком, а не язык, для которого надо подобрать подходящего программиста. К сожалению, большинство современных языков программирования следуют принципу «программист всё стерпит», и отступление уже воспринимается с трудом.

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

Простой пример ограниченности большинства других языков программирования. Допустим, есть массив products, и требуется определить, что он не пуст. В большинстве языков мы напишем что-то типа if (products.size() > 0)…. Но, придя в магазин, мы не спрашиваем продавца: «Если у вас больше нуля такого-то товара?». Мы задаем простой вопрос: «Есть ли у вас такой-то товар?». В Ruby надо использовать методы, выражающие смысл действия. Да, мы можем использовать проверку на «больше нуля», но естественный способ — спросить if products.any? То есть буквально: есть ли продукты? Отметим, что Ruby хорошо работает с Юникодом, поэтому при необходимости на базе этого языка можно создать специализированные языки с региональной адаптацией. Например, если требуется переопределить по-русски все имена классов и методов.  

Интересный, хоть и не совсем прямой пример: Bato: A Ruby port for Filipinos.

К вопросу об объектности языка: в Ruby четко разделяются переменные/константы и объекты. В силу динамической природы языка данные «живут» своей жизнью как объекты. Любой идентификатор представляет собой константу или переменную, которая всего лишь ссылается на объект. Непонимание этого принципа приводит к неожиданностям:

str1 = "Test" str2 = str1 str1.sub! "Te", "La" puts str2 # => "Last" ???? Мы же меняли str1, что случилось?.. Здесь мы всего лишь использовали модифицирующий метод объекта, ссылки на который хранили две переменные. Отмечу, что это не традиционный для Ruby способ изменения. Обычно объекты сохраняют неизменными, а изменения порождают новые объекты. Кроме того, использованный здесь метод sub! имеет суффикс — восклицательный знак, — что является принятой в Ruby схемой именования методов, которые изменяют сам объект. Без этого символа метод просто породит новый объект.

Еще одна особенность Ruby, которая очень часто ставит в тупик разработчиков, пришедших из других языков программирования: концепция «блока». Синтаксически блок выглядит так же, как и в других языках программирования, причем сразу в двух вариантах: {…} и do..end (не забывайте, что Ruby создан для человека, поэтому выбираем для лучшей читаемости скобки, если выражение однострочное, и слова, если строк много). Суть блока в Ruby — это код, который хранится как объект и может быть активирован вызовом yield. Прямой аналог в C и  C++ — функции обратного вызова. В Javascript — анонимная функция типа some_func('on_element_click', function(event) {…}).

Именно благодаря этой концепции Ruby является одним из наиболее лаконичных и выразительных языков программирования. Например, преобразование элементов массива в соответствии с функцией возведения в квадрат будет выглядеть так:

(1..5).map { |x| x * x } # => 1, 4, 9, 16, 25, где { |x| x * x } — блок с объявленной локальной переменной x, то есть функция преобразования элементов массива. А метод, которому она передается, просто называется map (то есть «отобразить»). Причем не надо писать слово return, хотя это и возможно, потому что всё и так ясно (в Ruby результат последней операции всегда является возвращаемым значением). Причем код блока — это код, вызываемый автономно для каждого элемента массива. Именно поэтому бессмысленно пытаться заводить внутри блока переменные и надеяться, что их значение сохранится при обработке следующего элемента. Блок — это сохраненная функция обработки, и не более.

Если же мы хотим разобрать строку с числами, введенными с клавиатуры, достаточно написать:

gets.chomp.split.map(&:to_i) То есть прочитать строку (gets), отбросить всякий мусор вроде символов перевода строк (chomp), разбить на слова (split), вызвать преобразование с функцией to_i (строго говоря, метода объектов типа «строка»). И ничего лишнего. Split знает, что в нормальном человеческом языке «разбить строку» означает разделить её по словам, где разделители — пробелы и знаки препинания. Map может быть использован в такой короткой форме с именем метода, который надо взять у объекта. Хотя можно было бы написать и полную форму map { |x| x.to_i }, или даже { |x| return x.to_i }. Но это не улучшает читаемость, поэтому можно оставить просто map(&:to_i).

Замечу, что концепция блока откровенно пронизывает Ruby. Даже код вида

class HelloWorld  (1..3).each { puts 'Hi from class declaration!' }  def hi    puts 'Hello World!'  end end HelloWorld.new.hi выводит на экран:

Hi from class declaration! Hi from class declaration! Hi from class declaration! Hello World!

Что здесь может показаться неожиданным? Цикл внутри объявления класса вывел сообщения. Потом получили сообщение из метода экземпляра этого класса. А секрет очень прост. Ruby — язык с регулярной моделью программирования. Типовой способ вызова любого метода с блоком:

method_with_block(args) do ... end Слова class и def в примере, по сути, являются именами методов, которым передаются аргументы HelloWorld, hi. Аргумент HelloWorld станет для нас константой-именем класса, а hi — именем метода. Остальная часть до слова end — это блок. А код блока активируется вызовом yield, после чего всё последовательно выполняется. То есть даже здесь практически нет разницы между вызовом обычного метода и объявлением методов, классов, модулей.

Также обратите внимание на активирующую конструкцию HelloWorld.new.hi. HelloWorld — константа — указывает на объект типа Class. У этого объекта есть метод new. Результатом вызова new является созданный объект типа HelloWorld, от которого вызываем метод hi. И даже здесь проявляется регулярность Ruby. Мы не пишем something = new HelloWorld, а просто вызываем метод конкретного объекта (Class, на который ссылается HelloWorld), который и порождает объект типа HelloWorld.

Непониманию языка способствуют и длинные цепочки вызовов:

Если вы знаете JavaScript или jQuery, то ничего особенно страшного здесь не видите. У тех же, кто пришел из C и C++, может возникнуть недоумение относительно количества точек. В Ruby применяется функциональное преобразование объекта. То есть вся эта цепочка — процесс преобразования строки, заключающийся в выделении слов, их преобразовании в числа, отборе только четных из них, возведении в квадрат и сложении результата.

Любой метод в Ruby порождает объект-значение. Исключений нет. Даже nil является объектом. Поскольку Ruby — динамический язык с автоматическим сборщиком мусора, нет необходимости заводить новые переменные. Промежуточные объекты будут удалены. То есть длинное выражение легко может быть разобрано на последовательность присвоения значений локальным переменным, которые последовательно вызывают соответствующие методы. Но зачем, если и так всё понятно?

В программах на Ruby крайне редко можно увидеть циклы типа for, while, loop. Они предусмотрены в синтаксисе, но почти не используются. Почему? Да потому, что не несут семантическую нагрузку.

Пример: в массиве товаров надо найти «булочку с маком». Для традиционных языков программирования можем воспользоваться примерно следующим Ruby-кодом:

products…# какой-то массив с объектами — товарами. found_product = nil for i in 0...products.size do  if products[i].name == 'булочка с маком'    found_product = products[i]    break  end end if  found_product != nil  # Булочки нашли, делаем что-то полезное. end При этом нормальный Ruby-код выглядит как:products… # какой-то массив с объектами-товарами found_product = products.find { |product| product.name.eql? 'булочка с маком' } unless found_product.nil? # Булочки нашли, делаем что-то полезное. end То есть пишем буквально в одну строчку: товар найти по названию. И всё. Потому что реально нас интересует только отбор товара, а вовсе не индексы товаров и не их количество.

Пример из жизни: вы пришли в магазин и спросили несчастного продавца двумя способами: первый —  «Для всех товаров от нуля до 15143, если наименование товара равно булочка с маком, то дайте мне её»; второй — «Дайте мне булочку с маком». Вроде бы оба варианта синтаксически правильны, но естественен второй. Большинство программистов почему-то считают нормальным первый вариант. А Ruby-программисты — второй. И метод find здесь просто как один из заменителей цикла. Обращаю на это внимание, упреждая замечания, что в других языках тоже есть поиск по массиву с функцией отбора.

Так вот, хотя в Ruby есть синтаксические конструкции for, while и loop, их почти никто не использует, потому что есть конкретные методы: each, each_index, each_with_index, select, map, reduce, find, detect и многие другие, выражающие конкретный смысл — для каждого индекса, для каждого элемента и его индекса, отобрать, преобразовать, свернуть, найти и пр. И если надо получить индексы, мы будем использовать array.each_index. А если надо отобрать элементы, воспользуемся select. Акцент на естественность. Запрашиваем только то, что реально нужно сделать. Не нужен индекс — незачем его просить. Подробнее см. документацию по модулю Enumerable.

Резюме
Ruby — синтаксически простой, но гибкий язык с развитой объектной моделью, основной акцент которого — лаконичный, но хорошо воспринимаемый код, ориентированный на живого человека. Ruby присутствует по умолчанию в комплекте любой современной операционной системы (или может быть доустановлен в Windows). На этом языке написано огромное количество программ, существуют стабильные сообщества, готовые помочь советом или действием. Программы на Ruby — это базовые скрипты администрирования для Linux и MacOS (OpenSuSE/SuSE и brew.io соответственно), это математика и машинное обучение, это тесты (Rspec, Cucumber, Capybara...), это развертывание приложений (Puppet, Chef) и многое другое.

Если студенты будут знать Ruby, это существенно расширит их кругозор, позволит совершенно по-другому взглянуть на привычные вещи. Кроме того, после Ruby очень легко изучать другие скриптовые языки программирования, но вопрос: захочется ли их использовать.

habr.com

Виды языков web программирования | Seo блог

Продолжим разговор о web программировании. Остановимся, в этой статье, на видах языков web программирования. Языки web программирования – это языки, адаптированные для работы с web приложениями. Языки web программирования разделяются на две группы – это клиентские и серверные.

Клиентские языки web программирования.

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

Тут есть свои, как минусы, так и плюсы. Для сервера — плюс, надо тратить меньше ресурсов на выполнения скрипта, а минус – это то, что браузер может, не справится с языком web программирования, правда это, большей частью, касается старых браузеров или неправильно настроенных. Для примера можно привести такие языки web программирования, как JavaScript и VisualBasicScript (VBS).

Серверные языки web программирования.

Рассмотрим туже ситуацию, заходим на сайт. Сервер, на который мы пришли, по нашему запросу и на своей стороне, выполняет скрипт страницы и уже после этого возвращает посетителю, обработанный файл в виде html. Кодовая страница скрипта, открываемого сайта, не попадает к посетителю.

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

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

Сейчас есть языки web программирования, встраиваемые в документ. Программы, созданные с их помощью, обычно компилируются. При этом увеличивается скорость выполнения программ, но становится невозможным обновление этих программ. Для этого придется программу декомпилировать, обновить и снова компилировать программу.

К серверным языкам относятся языки web программирования php, perl, SSI. Для работы с этими языками web программирования, можно установить, на компьютере, локальный сервер. Об этом разговор пойдет в следующих постах.

Самое интересное в блоге :

seo-kontent.ru

"Клуб программистов" – материалы по Delphi и С++ » Blog Archive » СТАТЬЯ 5. ЯЗЫКИ ВЕБ-ПРОГРАММИРОВАНИЯ?>

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

Пожалуй, самым распространенным сегодня таким языком создания веб-страниц является HTML. Также с недавних пор популярность получил язык PHP скриптов. Менее популярными, но не менее хорошими являются ASP, GGI, Perl, SSI, ASP. XML, XHTML и DHTML к языкам веб-программирования не относятся, но служат хорошими дополнениями к ним. Среди скриптов могу выделить лишь JavaScript и VBScript, этот язык скриптов был когда-то очень популярен, но сегодня мне кажется, его используют реже. Теперь постараюсь рассказать о каждом отдельно.

Итак, HTML, также его называют языком гипертекстов, — это язык логической разметки документа № 1 в мире. С этим языком очень удобно и легко работать, возможно, именно поэтому в основном предпочитают его. При использовании HTML каждый текст, картинка, эффект, скрипт, расположение элемента записывается в один документ, который не содержит ничего кроме текста, браузер же читает этот документ и формирует веб-страницу так, как и сказано в этом самом документе. Каждая деталь отделяется отдельным тегом и расположением на странице. HTML используется совместно с CSS (стили визуального оформления) и скриптами, типа JavaScript и VBScript. Могу отметить, что программированию на этом языке может научиться каждый, так как легче просто не бывает. Если начать с самых низов можно добиться многого. По этому языку существует много книг, как электронных, так и изданных.

Среди прочих скриптовых языков наибольшую популярность получил PHP. С помощью этого языка строятся наиболее сложные веб-ресурсы, которые очень отличаются от страниц на технологии HTML. Используя PHP можно создать страницы, от которых можно будет узнать о людях, посещающих сайт и их действиях, создавать гостевые книги, чаты, форумы, счетчики, системы и т.д., PHP работает со многими базами данных. PHP когда создавался с помощью GGI и Perl, он немного сложен собой, но если вникнуть и понять главное можно многого добиться.

Раз уж речь зашла о GGI и Perl, расскажу немного и о них. GGI позволяет создавать динамические и интерактивные интернет-приложения. GGI — это интерфейс, который позволяет веб-серверу по запросу браузера запускать и выполнять какие-либо программы, а результат их работы возвращать серверу или браузеру. Perl — самый распространенный язык веб-программирования для приложений GGI. Он также очень удобен для системного администрирования, сетевого программирования и других задач. Сам я этими языками не занимаюсь, поэтому не могу многого рассказать о них, однако эти языки также удобны и не менее полезны.

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

Также мне бы хотелось немного рассказать о скриптах типа JavaScript и VBScript. Если вы пропишите в поисковом запросе «JavaScript», то получите огромное количество сайтов с собранием таких скриптов. В основном JavaScript используется для создания визуальных эффектов на HTML странице. Лично я предпочитаю не пользоваться JavaScript или просто не злоупотреблять им. VBScript является также дополнением к HTML, используется реже чем JavaScript, но тоже распространен.

Я не стал описывать в своей статье все языки программирования, скриптов, сценариев, потому что это совсем не нужно. Современный веб-программист пользуется PHP, Perl и ASP, но эти языки только начали свое развитие, поэтому я предпочитаю всеми известный HTML. Хотя при желании можно научиться любому другому языку. Я не ограничиваю ваши возможности, но советую выбрать какой-нибудь один язык и заниматься им.

Итак, теперь, когда вы знаете на каком «веб-языке» будет создаваться ваш сайт можно приступить к его созданию…

www.programmersclub.ru