Существует ли язык высокого уровня для Интернета?
преамбула
Для создания динамических веб-сайтов нам необходимо освоить как минимум четыре языка:
- HTML для структуры веб-страниц
- CSS для верстки и дизайна
- JavaScript для интерактивности
- Язык для бизнес-правил или динамических данных
Кроме того, есть SQL для постоянного хранения, Memcache для сессий и кэширования, API для множества различных систем управления контентом. Мы также должны рассмотреть возможность взаимодействия с OpenID, Facebook, Twitter, OpenSocial при создании веб-приложения, чтобы оно было интересным.
В общем, это полный беспорядок!
Если принять во внимание две цели:
- Обучение веб-разработке для детей
- Сохранение продуктивности в команде
Вопрос
Какие существуют высокоуровневые системы, объединяющие HTML + CSS + Javascript + (вставьте сюда язык высокого уровня, предпочтительно PHP)?
Фон
- Я инженер-программист с более чем 15-летним опытом работы руководителем проекта и разработчиком таких технологий, как Broadvision, Autonomy, Enterprise Java и Oracle.
В последние годы я сосредоточился на разработке веб-сайтов сообщества, используя Drupal или PHP-фреймворки, такие как CakePHP. Мне нравится веб-разработка и мне нравится несоответствие импеданса между задействованными технологиями. Тем не менее, неизбежный вывод, к которому я прихожу, заключается в том, что должен быть лучший путь.
- Я отец двух сыновей (13 и 9), и хотя я не хочу, чтобы они становились программистами, я бы хотел, чтобы они воспринимали компьютеры больше, чем игровые автоматы. Мне нравится мотивировать их немного повозиться с веб-разработкой, чтобы выразить себя.
Всякий раз, когда я показываю им кусочки, мне бы хотелось, чтобы у них был набор инструментов, позволяющий им создавать "интересные" результаты в течение часа или двух в воскресенье днем.
19 ответов
" Links - это новый язык программирования, разработанный для облегчения веб-программирования. . . Links облегчает проблему несоответствия импеданса, предоставляя единый язык для всех трех уровней. Система генерирует код для каждого уровня; например, переводит некоторый код в Javascript для браузер, некоторые в байт-код для сервера, а некоторые в SQL для базы данных."
Сначала я не собирался публиковать это, так как это исследовательский проект, а не производственная система; но все эти ответы, говорящие "вот так, разберись с этим", требовали контрпример.
GWT в некотором роде идет к тому, чтобы быть инструментарием высокого уровня, позволяя вам писать Java для создания Javascript.
Как научить детей веб-разработке?
Армия детей в веб-разработке - это то, что унизило нашу профессию, потому что теперь почти каждый называет себя программистом, в то время как нам становится все труднее дистанцироваться от них и получать достойную оплату.
Много языков и технологий для освоения? Это хорошо. Пусть будет какой-то барьер для вступления в ряды разработчиков.
ДОБАВЛЕНО: Следуя комментариям, я вижу, что не совсем ясно выразился. Я ничего не говорю о возрасте, будь то 10, 30, 50 или 80. Все дело в отношении. Понимает ли человек и принимает ли тот факт, что профессия - это гораздо больше, чем перемещение элементов управления с помощью мыши в каком-то конструкторе или CMS. Нужно получить много знаний, включая основы CS, алгоритмы, структуры данных, базы данных, архитектуру, расширяемость, обслуживание, производительность, масштабируемость, удобство использования, маркетинг и многое другое, которые принадлежат мастерской профессионального разработчика программного обеспечения. Я, человек, неосведомлен о них и не предпринимает попыток самообразования и стремится стать более опытным, они не относятся к профессии. И пусть это мнение будет предвзятым.
Веб-программирование по своей сути является многопрофильным ремеслом.
Основной причиной этого является разделение интересов... причина того, что HTML, CSS и JavaScript, SQL и т. Д. Не объединяются в одном языке, заключается в том, что у каждого из них свои цели, предостережения, подводные камни и сильные стороны.
Можете ли вы представить себе попытку отладки сайта, в котором код SQL, CSS, JavaScript и PHP смешан в одних и тех же исходных файлах? Возможно, вы уже имели несчастье сделать это. К сожалению, есть буквально тысячи сайтов, написанных таким образом, и это полный кошмар, пытающийся отладить или добавить к таким грязным объединениям представления, данных и структуры.
В общем, полный беспорядок! Как научить детей веб-разработке?
Я думаю, что самое важное - научить основам программирования и заставить их придерживаться. Переменные, логика, указатели, управление памятью, алгоритмы, структуры данных и т. Д.
Когда у вас есть основы программирования, легко работать на нескольких языках, подбирать новые и легко менять со временем. Это бесценный навык для чего-то столь же постоянно развивающегося и основанного на тенденциях, как веб-программирование.
По моему мнению, люди, плохо знакомые с программированием, должны начинать работать на языках более низкого уровня, например, на Си. Людям следует познакомиться с внутренними, фундаментальными концепциями программирования и получить знания о том, что происходит за кулисами, прежде чем им даже покажут язык более высокого уровня, такой как PHP или Python.
Я думаю, что такое отношение к обучению программированию приведет к появлению лучших веб-разработчиков, а также обеспечит барьер входа, который отсеет людей, у которых нет интереса или интеллекта. Я думаю, что результатом такого подхода станут лучшие разработчики, лучшее программное обеспечение и, в конечном итоге, более мощные языки и инструменты.
Самое близкое, я думаю, вы получите.NET. Существует много платформ для многих языков, но ни одна из тех, которые мне известны, не обрабатывает абсолютно все. Кроме того, вы не должны пытаться убедить детей, что программирование - это прогулка в парке. Это сложная карьера, которая требует большой учебы и поддержки. Мы работаем с технологиями, которые здесь сегодня и ушли завтра.
Если подумать, программирование ничем не отличается от столярного дела или воздухоплавания. Практически любая профессия, которую вы выбрали, потребует, чтобы вы изучали много разных вещей, чтобы быть лучше в том, что вы делаете.
Как вы должны учить детей веб-разработке? Вау, это тернистый. Как можно научить их хирургии, или закону об интеллектуальной собственности, или гражданскому строительству? Или по этому вопросу автомеханик, или сантехника, или генподряд?
Вы думали о том, чтобы появиться в ленте Улицы Сезам?
Элмо не нравится, когда вы упрощаете его профессию.
Индустрия программного обеспечения страдает от того, что неквалифицированные специалисты не делают ничего, кроме создания некачественных продуктов и в то же время отвлекают эту профессию от превращения в настоящую инженерную дисциплину. Это не то, чтобы получить сертификат. Ради любви к Богу, не "учите" никого программированию. Объясните им, что создание отличного программного обеспечения происходит только благодаря многолетнему опыту и богатым знаниям прошлых и современных технологий. Худшее, что вы можете сделать, это представить еще одного недоделанного разработчика, создающего работу для других, работающих с ними. Скажите им, чтобы получить образование. Я знаю, что это не тот ответ, который вы, вероятно, хотели услышать, но я хотел, чтобы это прочитали.
Django может помочь вам пройти через свою чистоту. Он ориентирован на производительность. Преподавание не легче, чем любой другой язык / структура, но посмотрите на это так: когда вы обучаете этому инструменту, ваши ученики хорошо осведомлены о том, насколько простым оно должно быть. Они никогда не примут Java-сервлеты или подобные кошмары после изучения Django.
Я думаю, что проблема с веб-разработкой заключается в том, что она изначально не была разработана для того, что используется сегодня. Мы создаем многофункциональные клиентские приложения в браузере с использованием HTML+CSS+JavaScript и любой серверной технологии, которая их генерирует. Да, это работает, но это боль, особенно с этими раздражающими несовместимостями браузера. Существование Flash и Silverlight доказывает это. Они позволяют создавать ваше приложение с единой технологией, которая все еще находится внутри браузера. Недостатки использования плагина для вашего контента очевидны.
Проверьте Опа: http://opalang.org/
Это перспективная технология веб-разработки. Это выглядит довольно многообещающе. За последние пару лет я много занимался веб-разработкой, и если бы мне нужно было предсказать, какой новый фреймворк / язык / технология станет основным способом разработки веб-сайтов через ~5-10 лет, я бы сказал, будет Опа.
Документация отличная, сообщество отличное, учебники и отзывчивость на вопросы, задаваемые командой, работающей над проектом, превосходны. В целом они, кажется, уделяют внимание деталям в отношении разработки этой новой структуры, которая, кажется, не имеет себе равных.
Программирование (PHP/JS) и формат документа (HTML/CSS) - это две разные вещи. Обучение программированию на PHP и JS одновременно также будет трудным.
Вы должны сосредоточиться на HTML и JS на клиенте при запуске. Затем вы можете позволить им программировать javascript на сервере. Это сделает его только одним языком программирования и сосредоточится на HTML поверх CSS для начала.
Как только они изучат основы JS и HTML, вы можете научить их более широко используемому языку программирования на стороне сервера (например, PHP, Ruby и т. Д.) И CSS.
Языки являются наименьшим из ваших забот. Это проблемная область, с которой они работают, которая сложна. Использование разных языков фактически делает вещи более управляемыми, потому что: а) это делает границы явными и б) языки могут быть оптимизированы для домена.
Я думаю, что ваш подход может быть пересмотрен. Примите это таким, какой он есть, на мой взгляд, но я думаю, что этот порядок может работать лучше.
Главные приоритеты: (без определенного заказа)
- Развить навыки решения проблем
- Будь продуктивным как команда
Следующий:
- Базовые навыки программирования (PHP, Python и т. Д.)
После того, как они знают, как решать проблемы как индивидуально, так и в команде, они могут перейти к специфике, такой как:
- Модель клиент / сервер
- Разметка (HTML, XHTML, XML и т. Д.)
- Стиль (CSS)
- Скрипты на стороне клиента (JavaScript / jQuery)
- Скрипты на стороне сервера (PHP, Ruby и т. Д.)
Собирайте их знания о том, что происходит по частям, а не прыгайте в глубокий конец с летучей мыши - они будут быстро поражены.
На этом этапе вы можете начать вводить такие вещи, как файловый ввод-вывод и базы данных.
Это даст им достаточно полный набор навыков. Отсюда они действительно могут начать учиться.
Кроме того, может потребоваться иметь дело с SQL для постоянного хранения, Memcache для сеансов и кэширования, API-интерфейсами систем управления контентом, OpenID, Facebook, Twitter, OpenSocial и т. Д., Чтобы создать что-нибудь интересное.
Это целые темы сами по себе, вы не можете откусить их всех одним куском. Особенно, если вы берете этих людей с нуля. Прежде чем вы сможете создать что-то интересное, вы должны научиться строить что-то мирское.
HTML5, вероятно, будет больше похож на то, что вы ищете, чем на Flash или Silverlight, но это еще не совсем здесь... Хотя поддержка строится.
Малышка, Олав - если бы это была "Матрица", ты мог бы загрузить всю эту информацию за один раз, но мы еще не пришли... пока;-)
На данный момент и в ближайшем будущем веб-разработка - это синергия множества различных технологий, работающих вместе, чтобы обеспечить интересный пользовательский опыт.
Ну, это мои 2 цента
Многие технологии освоить не очень хорошая вещь. Нам нужен Visual Basic для Интернета, независимо от того, что говорят элиты.
Вам нужны разные языки для разных целей. В большинстве веб-приложений на самом деле происходит совсем немного, поэтому вам нужны разные языки и решения.
Если цель состоит в том, чтобы объединиться на одном языке, вы можете сделать это. Вы можете использовать Javascript на сервере, а затем создавать страницы, используя document.createElement()
и применять стили к ним непосредственно styles
имущество. А на сервере храните свои данные прямо в файлах с помощью Javascript.
Очевидно, это не сработает. HTML не идеален, но есть причина, по которой он настолько повсеместен - он делает то, что делает просто и хорошо. CSS является одновременно запутанным и слишком упрощенным, но основная идея определения переопределяемых правил, чтобы выразить ваш дизайн, является разумной. И иногда может быть сложно понять SQL, но выражение запросов к базе данных таким способом является выразительным и на самом деле работает довольно хорошо.
При этом я не говорю, что существует или должна быть одна архитектура. Там не должно быть. Каждый проект должен использовать архитектуру в соответствии со своими требованиями.
В вашем следующем проекте попробуйте упростить: вам действительно нужна база данных? Можете ли вы объединить слои представления для упрощения, используя что-то вроде GWT, Applets, Flash или.NET? Вам действительно нужно показывать свой контент в браузере (который представляет сложности CSS, HTML и Javascript), или вы можете просто написать приложение?
Мультидисциплинарная природа веб-разработки - это одна из вещей, которая доставляет удовольствие работать, особенно в командной среде.
Чтобы хорошо работать в команде, вы, естественно, объединяетесь с группой людей с широким кругом знаний, от UI/ графиков до администраторов баз данных и системных администраторов. Даже в пределах одного уровня группы (например, программисты внутреннего уровня) каждый человек, как правило, специализируется на другом наборе, например, некоторые люди могут иметь больший опыт работы с пользовательским интерфейсом, другие - с данными.
Я бы выбрал этот вариант в любой день, по сравнению с работой в комнате из 10 Java-программистов, работающих над каким-то промежуточным программным обеспечением.
Ruby on Rails - это отличный способ объединить все это, но для CSS это оставляет вас в покое (хотя, вероятно, есть несколько фреймворков для RoR, которые делают CSS устаревшим, но тогда у вас есть другой язык разметки, я думаю), и вам все еще нужен Javascript (хотя он действительно для вас пишет много Javascript и весь код БД).
С другой стороны, о ваших детях: программирование для программистов. В воскресенье днем, чтобы собрать что-то за несколько часов, вам нужно будет знать структуру, и купить несколько плагинов, и все будет готово и без особых усилий. Что-то вроде Drupal или Joomla, где они продают шаблоны (для Joomla вы можете купить пачки сотен) и плагины, чтобы делать разные вещи. И когда это не удается, ваши дети, вероятно, должны знать, как перейти на ODesk и потерять 100 долларов, чтобы что-то сделать в вашей среде. Обучение программированию - это хорошо, если вы хотите стать программистом. В противном случае лучше узнать, что вам нужно, чтобы нанять хороших программистов или купить хорошие предопределенные компоненты, и иметь на это деньги.
Последнее замечание о детях: пусть играют в видеоигры. Это лучшее обучение, которое они могут получить за то, что ждет в будущем компьютерную сторону. Видеоигры позволяют вам исследовать компьютер, играть в него и отдыхать. Как только вы это сделаете, изучение HTML, CSS, Javascript и некоторых стеков приложений - это просто.
http://angularjs.org/ может быть вариантом. он предназначен для одностраничных приложений и работает на ноджексном стеке и делает "магию" шаблона-javascript.
пример (шаблон / код): связывает (через auto-generate-client-side-js) значение из поля ввода с заголовком (h1). Если вы введете что-то в поле ввода, текст в заголовке будет обновлен. И вам не нужно писать frontend-js.
<input type="text" ng-model="yourName" placeholder="Enter a name here">
<h1>Hello {{yourName}}!</h1>
Если вы просто хотите научить их писать динамические веб-сайты, ознакомьтесь с руководством по HTML на w3schools.com и, как только они это сделают, найдите себе прилично выглядящую таблицу стилей, которую они могут включить, и настройте их на PHP. Это заставит их работать как хобби, и если они захотят сделать больше, они могут начать собирать вместе дополнительные знания, такие как CSS и JavaScript.