Вопрос

Преамбула

Чтобы создавать динамичные веб-сайты, мы должны владеть как минимум четырьмя языками:

  • HTML для структуры веб-страниц
  • CSS для верстки и дизайна
  • JavaScript для интерактивности
  • Язык для бизнес-правил или динамических управляемых данных

Кроме того, существует SQL для постоянного хранения, Memcache для сеансов и кэширования, API для многие различные системы управления контентом.Мы также должны рассмотреть возможность взаимодействия с OpenID, Facebook, Twitter, OpenSocial при создании веб-приложения, чтобы оно было интересным.

В общем, это полный бардак!

Если вы примете во внимание две цели:

  • Обучение детей веб-разработке
  • Оставаться продуктивной командой

Вопрос

Какие существуют высокоуровневые системы, которые объединяют HTML + CSS + Javascript + (Вставьте здесь язык высокого уровня, предпочтительный PHP)?


Предыстория

  1. Я инженер-программист с более чем 15-летним опытом работы в качестве руководителя проекта и разработчика таких технологий, как Broadvision, Autonomy, Enterprise Java и Oracle.

В последние годы я сосредоточился на разработке веб-сайтов сообщества, используя фреймворки Drupal или PHP, такие как CakePHP.Я Нравится веб-разработка и наслаждайтесь несоответствием импеданса между задействованными технологиями.Тем не менее, неизбежный вывод, к которому я прихожу, таков должен быть лучший способ.

  1. Я отец двух сыновей (13 и 9 лет), и хотя я не хочу, чтобы они становились программистами, я бы хотел, чтобы они воспринимали компьютеры как нечто большее, чем игровые автоматы.Мне нравится мотивировать их немного повозиться с веб-разработкой, чтобы выразить себя.

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

Это было полезно?

Решение

"Ссылки это новый язык программирования, разработанный для упрощения веб-программирования...Links облегчает проблему несоответствия импеданса, предоставляя единый язык для всех трех уровней.Система генерирует код для каждого уровня;например, перевод некоторого кода в Javascript для браузера, некоторого в байт-код для сервера и некоторого в SQL для базы данных ".

Сначала я не собирался публиковать это, поскольку это исследовательский проект, а не производственная система;но все эти ответы, говорящие "так оно и есть, смирись с этим", напрашивались на контрпример.

Другие советы

Большой объем каким-то образом становится высокоуровневым инструментарием, позволяющим вам писать Java для создания Javascript.

Веб-программирование - это по своей сути многопрофильное ремесло.

Основная причина этого кроется в разделении проблем...причина, по которой HTML, CSS и JavaScript, SQL и т.д. Не объединены в одном языке, заключается в том, что у каждого из них есть отдельные цели, предостережения, подводные камни и сильные стороны.

Можете ли вы представить себе попытку отладки сайта, на котором SQL, CSS, JavaScript и PHP-код смешаны вместе в одних и тех же исходных файлах?Возможно, вы уже имели несчастье сделать это.К сожалению, существуют буквально тысячи сайтов, написанных подобным образом, и пытаться отлаживать или дополнять такие беспорядочные сочетания представления, данных и структуры - сущий кошмар.

В общем, полный бардак!Как можно предполагается обучать веб-разработке детей?

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

Когда вы владеете основами программирования, легко работать на нескольких языках, осваивать новые и легко меняться в соответствии со временем.Это бесценный навык для такой постоянно развивающейся и ориентированной на тенденции вещи, как веб-программирование.

На мой взгляд, новичкам в программировании следует начинать с языков более низкого уровня, таких как C, например.Люди должны ознакомиться с внутренними, фундаментальными концепциями программирования и должны получить знания о том, что происходит за кулисами, еще до того, как им покажут язык более высокого уровня, такой как PHP или Python.

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

Как можно научить детей веб-разработке?

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

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

ДОБАВЛЕННЫЙ:Следуя комментариям, я вижу, что выразился не совсем ясно.Я ничего не говорю о возрасте, будь то 10, 30, 50 или 80.Все дело в отношении.Понимает ли человек и принимает тот факт, что в профессии есть гораздо больше, чем перемещение элементов управления с помощью мыши в каком-нибудь дизайнере или CMS.Вам предстоит получить много знаний, включая основы CS, алгоритмы, структуры данных, базы данных, архитектуру, расширяемость, обслуживание, производительность, масштабируемость, удобство использования, маркетинг и многое другое, которые принадлежат мастерской профессионального разработчика программного обеспечения.Если человек не знает об этом и не предпринимает попыток самообразоваться и стремиться становиться все более и более опытным, он не принадлежит к профессии.И пусть это мнение будет предвзятым.

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

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

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

Вы не думали о том, чтобы вставить кассету с Улицей Сезам?

Элмо не нравится, когда ты принижаешь его профессию.

Индустрия программного обеспечения страдает от неквалифицированных людей, которые только и делают, что создают продукты низкого качества и в то же время отдаляют эту профессию от превращения в настоящую инженерную дисциплину.Это не то, по чему нужно проходить сертификацию.Ради любви к богу, не "учите" никого разработке программного обеспечения.Объясните им, что создание отличного программного обеспечения получается только в результате многолетнего опыта и богатства знаний о прошлых и нынешних технологиях.Худшее, что вы можете сделать, - это представить еще одного недоделанного разработчика, создающего работу для других, работающих с ними.Скажите им, чтобы они получили образование.Я знаю, что это не тот ответ, который вы, вероятно, хотели услышать, но я хотел, чтобы это было прочитано.

Я думаю, проблема с веб-разработкой заключается в том, что изначально она не была предназначена для того, что используется сегодня.Мы создаем многофункциональные клиентские приложения внутри браузера с использованием HTML + CSS + JavaScript плюс любой серверной технологии, которая их генерирует.Да, это работает, но это причиняет боль, особенно с этими раздражающими несовместимостями с браузерами.Существование Flash и Silverlight доказывает это.Они позволяют вам создавать свое приложение с помощью одной-единственной технологии, все еще находясь в браузере.Однако недостатки необходимости использования плагина для вашего контента очевидны.

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

Программирование (PHP / JS) и формат документа (HTML / CSS) - это две разные вещи.Научиться программировать на PHP и JS одновременно также будет непросто.

При запуске вы должны сосредоточиться на HTML и JS на клиенте.Затем вы могли бы позволить им программировать javascript на сервере также.Это сделает его только одним языком программирования и для начала сосредоточит внимание на HTML, а не на CSS.

Как только они освоят основы JS и HTML, вы можете научить их более широко используемым серверным языкам программирования (таким как PHP, Ruby и т.д.) и CSS.

Джанго может провести вас часть пути через его чистоту.Она сосредоточена на производительности.Преподавание не проще, чем на любом другом языке / фреймворке, но посмотрите на это с другой стороны:обучаясь этому инструменту, ваши ученики хорошо разбираются в том, насколько легко это следует быть.Они никогда не примут Java-сервлеты или подобные кошмары после изучения Django.

Проверьте Opa: http://opalang.org/

Это перспективная технология веб-разработки.Это выглядит довольно многообещающе.За последние пару лет я много занимался веб-разработкой, и если бы мне пришлось сделать прогноз, какой новый фреймворк / язык / технология станут основным способом разработки веб-сайтов через ~ 5-10 лет, я бы сказал, что это будет Opa.

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

Овладевать многими технологиями - это не очень хорошо.Нам нужен Visual Basic для Интернета, что бы там ни говорили элиты.

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

Если цель состоит в том, чтобы объединить на одном языке, вы можете это сделать.Вы можете использовать Javascript на сервере, а затем создавать страницы с помощью document.createElement() и применяйте стили к ним непосредственно к styles собственность.А на сервере храните ваши данные непосредственно в файлах с помощью Javascript.

Очевидно, что это сработало бы не так уж хорошо.HTML не идеален, но есть причина, по которой он так вездесущ - он делает то, что делает, просто и хорошо.CSS одновременно запутан и слишком упрощен, но лежащая в основе идея определения переопределяемых правил для выражения вашего дизайна является здравой.И SQL иногда может быть непросто понять, но выражение запросов к базе данных таким способом является выразительным и на самом деле работает довольно хорошо.

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

В вашем следующем проекте попробуйте упростить:вам действительно нужна база данных?Можете ли вы объединить слои просмотра для упрощения, используя что-то вроде GWT, апплетов, Flash или .NET?Вам действительно нужно размещать свой контент в браузере (который вводит сложности с CSS, HTML и Javascript), или вы можете просто написать приложение?

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

Главные приоритеты: (без особого порядка)

  • Развивайте навыки решения проблем
  • Будьте продуктивны в команде

Далее:

  • Базовые навыки программирования (PHP, Python и т.д.)

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

  • Модель клиент/Сервер
  • Разметка (HTML, XHTML, XML и т.д.)
  • Стиль (CSS)
  • Сценарии на стороне клиента (JavaScript / jQuery)
  • Сценарии на стороне сервера (PHP, Ruby и т.д.)

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

На этом этапе вы можете начать знакомить с такими вещами, как файловый ввод-вывод и базы данных.

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

Кроме того, возможно, придется иметь дело с SQL для постоянного хранения, Memcache для сеансов и кэширования, API систем управления контентом, OpenID, Facebook, Twitter, OpenSocial и т.д.построить что-нибудь интересное.

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

HTML5 вероятно, будет больше соответствовать тому, что вы ищете, чем Flash или Silverlight, но это еще не совсем здесь...Хотя поддержка нарастает.

Маленькими шажками, Олав - если бы это было Матрица вы могли бы загрузить всю эту информацию одним кадром, но мы еще не готовы...пока ;-)

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

Ну, это мои 2 цента

Междисциплинарный характер веб-разработки - это одна из тех вещей, которая делает работу в ней приятной, особенно в командной среде.

Чтобы хорошо работать в команде, вы, естественно, объединяетесь с группой людей, обладающих широким спектром знаний, от специалистов по пользовательскому интерфейсу / графике до администраторов баз данных и системных администраторов.Даже в пределах одного уровня группы (например, серверные программисты) каждый человек обычно специализируется в своем наборе, например, у одних людей может быть больше опыта в области пользовательского интерфейса, у других - в области данных.

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

Если вы просто хотите научить их писать динамические веб-сайты, заставьте их пройти через руководство по HTML на w3schools.com и как только они закончат, найдите себе прилично выглядящую таблицу стилей, которую они могут включить, и настройте их на PHP.Это поможет им освоиться в качестве хобби, и если они захотят делать больше, они могут начать собирать воедино дополнительные знания, такие как CSS и JavaScript.

Ruby on Rails неплохо подходит для объединения всего этого, но для CSS это оставляет вас в стороне (хотя, вероятно, есть несколько фреймворков для RoR, которые делают CSS устаревшим, но тогда, я думаю, у вас есть другой язык разметки), и вам все еще нужен Javascript (хотя он и пишет для вас много Javascript и весь код БД).

С другой стороны, о ваших детях:программирование - это для программистов.В воскресенье днем, чтобы собрать что-то за несколько часов, вам нужно было бы знать фреймворк, купить несколько плагинов и запустить все в работу без особого труда.Что-то вроде Drupal или Joomla, где они продают шаблоны (для Joomla вы можете купить пачки из сотен) и плагины для выполнения всевозможных задач.И когда это не удается, ваши дети, вероятно, должны знать, как зайти на oDesk и выложить 100 долларов, чтобы что-то сделать на вашем фреймворке.Учиться программированию полезно, если вы хотите быть программистом.В противном случае лучше всего узнать, что вам нужно, чтобы нанять хороших программистов или купить хорошие готовые компоненты, и иметь для этого деньги.

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

angularjs ( ангулярный интерфейс ) мог бы быть вариант.он предназначен для одностраничных приложений и работает на nodejs-стеке и выполняет некоторую "магию" шаблонного javascript.

пример (шаблон/код):Он привязывает (через автоматически сгенерированное на стороне клиента js) значение из поля ввода к заголовку (h1).Если вы введете что-то в поле ввода, текст в заголовке обновится.И вам не нужно писать интерфейс-js.

  <input type="text" ng-model="yourName" placeholder="Enter a name here">
  <h1>Hello {{yourName}}!</h1>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top