WEB-программирование. Что выбрать и с чего начать?
Приветствую!
У меня возникло желание научиться писать что-то для WEB'а.
Опыт программирования до этого — системный и прикладной софт на Delphi, C#.
Есть реальный учебный проект — страничка авторизации, страничка ввода данных, БД, куда данные сохраняются, страничка аналитики, на которую выводятся обработанные данные. Есть много пользователей, которые хотят использовать полученный продукт. Нет понимания, что выбрать для изучения — JS, jquery, RoR, Rubby итд. Есть понимание, что инструмент выбирается под задачу и я хочу понять, что проще всего в освоении и что даст понимание, как писать для WEB.
Рекомендации по среде разработки так же приветствуются (привык к VS и RAD Studio).
1) Клиентская верстка и стили (html, css). Можно пробежаться глазами хотя бы по теме. Почитать про правила верстки.
2) Клиентская логика, работа с DOM (Javascript, Jquery). Важная тема — стоит уделить ей время.
3) Теория распределенных приложений. — Веб приложения чаще всего являются распределенными. Поэтому стоит изучить архитектурные принципы распределенных приложений. API и т.д.
4) Базы данных (SQL, etc.) — Конечно начать стоит с классического сиквела — но стоит посмотреть и шире — например на nosql решения.
Далее стоит выбрать технологическую платформу. С вашим бэграундом вероятно стоит посмотреть в сторону Microsoft ASP.NET MVC. Это великолепное решение и погружение в обширный мир разработки в рамках решений MS. У них сейчас самые развитые языки программирования (C# 5.0), самые развитые инструментальные среды (MS Visual Studio), одна из самых совершенных виртуальных машин (.Net).
Решение удобнее всего для серьезных и масштабных проектов, хотя и для небольших вполне подойдет.
Следующий кандидат — Ruby on Rails. Это развитое решение с замечательным языком программирования и отличными каркасными решениями, заточенное именно под веб. Возможно лучше подойдет для небольших приложений — но и промышленные продукты без проблем потянет.
Он также очень распространен.
Ну и конечно PHP. Язык программирования данной технологической платформы отстает от требований к разработке больших решений — он скорее подходит для написания скриптов. Однако существует колоссальное количество каркасных решений для данной платформы, которые позволяют реализовывать даже приличного объема продукты. Кроме того данное решение наверное самое распространенное из всех.
И оно потихоньку подтягивается до уровня платформ для разработки промышленных продуктов.
Существует также множество других решений. Например огромный мир Java и решения на базе серверного Javascript.
Скоп работ будет состоять из следующих частей:
1) Клиентская часть (html, css, javascript). Тут вам понадобятся знания по верстке как раз и жаваскрипту. Также следует использовать различные базовые решения и фреймворки. Эта как раз та часть, где слишком глубокие знания (например использование чистого некроссбраузерного javascript) могут быть вредны и лучше все базировать на готовых платформах.
Часто эта часть в web приложениях бывает больше чем хотелось бы.
2) Серверная часть. Тут все определяется технологической платформой описанной в предыдущем абзаце. В веб приложениях как правило немного серверной логики — почти все можно заменить на внешние библиотеки. Но у разработчиков десктопных приложений всегда есть соблазн развивать именно эту часть потому что она им знакома — не поддавайтесь. Специфическая для проекта серверная логика нужна не очень часто. Если ее много — значить кто то увлекся велосипедами. Тоже касается разработок API и систем взаимодействия с внешними сервисами.
3) Базы данных. Конечно обязательно! стоит использовать развитые ORM системы. То есть нужно их изучить под выбранную вами технологическую платформу. Ну и конечно базовые знания баз данных тут тоже очень понадобятся — сиквел, реляционная модель и все остальное.
Составьте список наиболее вероятных технологий и почитайте вводную к каждой. Создайте малюсенький проект в каждой. И там видно будет, к чему душа лежит.
Это не языки программирования (ну кроме js и то натянуто). А языки оформления, обёртка. Всётаки php, asp(C#), python, ruby, node.js более верное было бы, говоря именно про программирование под веб.
Добавлю к этому еще тот факт, что javascript можно использовать и на стороне сервера (node.js).
Я согласен, что нужно начать с основ (html + css + js + http), но только в качестве теоретической базы. А практически можно использовать связку Twitter Bootstrap + jQuery + NodeJS.
Такой набор позволит проникнуться сутью веб-разработки и даст навыки работы с базовыми инструментами.
Потроллить ради, и развлечения для: ClojureScript и CoffeeScript — куда лаконичнее, из тех, кто компилируется в JavaScript… мб сразу лучше с них начать? + JS это НЕ язык общего назначения — много чего с ним сделать невозможно, или можно, но с огромными костылями.
Я агитирую за Cljs, если человек хочет выучить функциональный Я\п, уметь сразу реализовать и серверную логику,
и писать например апплеты, и под десктоп. Короче Clojure — определенно, наш выбор,
если мы хотим писать под JVM. А если не хотим, то ждем уточнений, от автора вопроса — что же он все-таки хочет делать в Веб'е. :)
P.S> HTML + CSS, все-таки идут опционально и как к таковому, программированию, мало относятся. Языки разметки просто,
которые позволяют размещать и масштабировать элементы (их группы)
в нужных браузерах, нужным образом.
Хочешь — учи, хочешь — не учи… применение себе найти можно (по заказам,
или в работе на кого-то) и не зная HTML+CSS + JS,
т.к. это фронт-энд, часто.
А для бэкэнда надо учить алгоритмы, паттерны и знать хорошо синтаксис…
это универсальная потребность на любом более
менее серьезном проекте.
ИМХО в вашем случае стоит начинать с пхп.
Поскольку вы имеете опыт работы с более-менее строгими языками, то либерализм пхп не должен повредить детскую неокрепшую психику. Правда стоит таки включить E_STRICT сразу когда начнете писать.
Преимущество пхп для новичка — есть работа для новичка. Слишком много нужно выучить общих технологий, чтобы можно было претендовать даже на юниора в более продвинутых языках.
Вы только не ведитесь на эту либерастию… сначала упиваешься как круто, что тебя ни в чем не ограничивают, потом свыкаешься с мыслью что многих привычных инструментов нет (и это вам еще повезло, вы не застали ООП в пхп4). Потом жизнь кажется прекрасной… а когда переваливаешь через мегабайт кода, начинаешь ныть «дайте, дайте, дайте мне жесткую типизацию!!! расрас», включаешь E_STRICT и сразу узнаешь о себе много нового…
Итог: советую пхп, но сразу писать строго. Начните с одного из стандартов оформления кода…
«Слишком много нужно выучить общих технологий, чтобы можно было претендовать даже на юниора в более продвинутых языках» — чушь, причем как первая часть предложения, так и вторая (т.н. более продвинутые языки).
«Преимущество пхп для новичка — есть работа для новичка.» — ересь (начинать учить язык потому-что на нем есть работа для новичка).
«более-менее строгими языками» — бугага? Ну определенно вы знаете, о чем пишете — весь остальной мир, нет.
«Вы только не ведитесь на эту либерастию * и далее по текуту *» — см. пункты выше.
«сразу писать строго» — надо было предложить — СТРОГО и ЧЕТКО.
А так в целом очень продуманные советы, да.
Вы если пишете новые слова, которые только-что придумали
— пишите и определения для них, возможно так народ будет вас лучше понимать. :)
P.S> Вниз опустил только вопрос. Карма пусть живет.
Смотря с какими целями.
Если просто так, хобби, тогда почитайте общую литературу, посмотрите, что вам больше нравится…
Если работу найти, тогда посмотрите, по каким словам вакансий больше.
Вы правильно пишете, что инструмент подбирается под задачу, однако web — это зоопарк технологий и задач, поэтому это не выбор, это слишком общее Ж)
Для приложений на стороне клиента есть javascript, flash. Для серверных приложений чаще всего сейчас используют php, ruby. Для больших проектов ещё базы данных понадобятся. Ну а есть ещё node.js и другие специальные вещи.