Dart JavaScript основные отличия языков программирования друг от друга


Содержание материала:

прикладная математика

Dart vs. JS: Станет ли новый язык от Google заменой JavaScript

10 октября 2011 года Google официально презентовали Dart — новый структурированный язык web-программирования, в комплекте с библиотеками, виртуальной машиной, и редактором IDE, как альтернативу или полную замену JavaScript. Google намерен продвигать Dart «как язык для серьёзных разработок на web-платформе». По их мнению, он будет лучше подходить для широкомасштабных проектов. Сейчас проекты вроде Google Apps или Gmail используют достаточно сложные коды, которые реализованные на JavaScript. А вместе с переходом на язык Dart, компания обещала максимально упростить архитектуру этих решений.

Dart будет гибким, поскольку это и статический, и динамический язык, применимый на клиентской и на серверной сторонах. Приложения, написанные на нем, будет легче отлаживать, поддерживать и разрабатывать совместно. Этот язык оптимизирован с точки зрения исполнения и не позволит программистам использовать такие ходы, как определение константы, которую придётся рассчитывать по ходу выполнения. Ожидается, что там будут объекты и сообщения между ними, инкапсуляция, система типизации и ещё куча отличий от JavaScript. С другой стороны, никто не считает JS неудобным и алогичным. Просто он использует другую парадигму иерархии — прототипирование объектов вместо нисходящего наследования их описаниями. Она не лучше, не хуже, просто другая. Ведь JS создавался для удобного доступа к DOM и не был рассчитан на те проблемы, которые на него взваливают сейчас, как решение вычислительных задач, вроде игровой физики и т.п. Изменить его в эту сторону, с учетом поддержки предыдущего синтаксиса, очень непросто, есть риск получить еще один монстроязык.

Разработчики Dart выделили три главные цели:

Производительность. Виртуальные машины на Dart не будут иметь тех проблем с производительностью, которые есть у всех машин EcmaScript.

Удобство разработки. Будет сохранена динамическая, лёгкая в освоении, не требующая компиляции природа JavaScript, которая сделала web-платформу абсолютным лидером среди программистов-любителей.

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

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

Google сообщил об официальном сайте Dart под названием dartlang.org, на котором программисты смогут найти обучающие материалы и примеры кодов и библиотеки для взаимодействия с другими программными обеспечениями. В начале ноября 2011 был представлен новый редактор Dart под названием «Альфа». Его можно скачать и установить для 32x, 64x Windows, Linux и Mac. Ранее Google запустил в онлайне IDE, которая позволяет прямо в браузере редактировать короткие программы. В будущем
она должна развиться в полнофункциональную онлайн IDE. Проект находится в предварительной версии, поэтому сейчас самое подходящее время, чтобы тестировать его, обеспечивая обратную связь, и помогать совершенствовать Dart.

Одной из целей Dart было «предпринять активные действия для принятия его в качестве стандарта и повсеместного распространения». Для продвижения этой задумки Google должны были обзавестись поддержкой разработчиков других браузеров, а вместо этого получили резкую критику с колокольни IE. Это не первая инициатива Google которая вызывает ярость у MC — WebSockets, WebGL, Native Client. Но что плохого в том, что Google выпускает много альтернативных инновационных технологий? Он ведь вкладывает в это свои деньги без гарантии успеха. По-моему, незачем критиковать альтернативные технологии. Здесь всего два варианта — либо внедрение нового языка происходит более-менее естественным путем, через «накипело», либо какая-то корпорация пытается внедрить язык лишь в угоду своим корыстным интересам. Но Dart действительно нравится многим, при чем без ощущения того, что его пытаются насадить искусственно.

Со слов разработчика языка Ларса Бака (Lars Bak), на текущий момент ни один браузер не поддерживает Dart, однако наверняка положение дел исправит Chrome, и в самом ближайшем будущем. К тому же код может выполняться «либо на исходной виртуальной машине Dart, либо поверх JavaScript-машины с использованием компилятора, переводящего код Dart в JavaScript». Второй вариант, конечно обеспечивает выживаемость языка, но не его преимущество. Скомпилированный в JS-машине банальный HelloWorld занимает 17259 строк. Но следует помнить, что Dart создается для широкомасштабных проектов. По некоторым тестам получалось что VM Dart может быть в несколько раз быстрее JavaScript на V8:

Dart performance
Relative performance compared to JavaScript on V8
Benchmark VM Dart -> JS Compiler
Mandelbrot 18.1% 101.0%
DeltaBlue 60.5% 85.0%
Richards 49.9% 79.9%
NBody 37.5% 83.2%
BinaryTrees 70.3% 99.9%
Fannkuch 58.4% 78.9%
Meteor 48.2% 99.4% &lt

Трудно сказать, увенчается ли этот проект успехом, однако попытка избавиться от изъянов JavaScript, начав работу с нуля, достойна уважения. Если Google сможет стандартизовать язык Dart, создать инструменты разработки и разработать на этой основе мощные приложения — это будет изменение к лучшему. Новый мощный язык будет способствовать переносу пользовательского софта «в среду web-браузера» и потеснит с рынка коробочный софт.

Dart. Язык программирования от Google

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

Языковая практика от Google

Компания Google уже не раз выступала в качестве создателя нового языка программирования. Достаточно вспомнить такие проекты как Noop (экспериментальный язык программирования, специальной созданный для выполнения под виртуальной машиной) и Go (полноценно компилируемый, многопоточный язык программирования). Оба эти проекта стартанули в 2009 году и если первый особого фурора не произвел, то второй был подхвачен теплой волной оваций разработчиков со всего мира и начал активно развиваться, находя применение в различных по сложности проектах.

Особое значение следует придать слову «успех» говоря о разработанных компанией Google языках программирования. Их популярность (следовательно, и успех) нельзя сравнивать с такими «попсовыми» вещами как C# от Microsoft или Delphi от Embarcadero. Google в основном работает над узкоспециализированными продуктами в первую очередь предназначенные для решения определенного круга задач. Они не претендуют на универсальность и первым делом на них обращают внимание профессиональные разработчики, а не новички. Новостные ленты также не спешат баловать подобные технологии лестными словами. Шумиха держится несколько дней, а потом все затихает, как будто ничего и не было.

Слухи о новом языке программирования, ориентированном на разработку web-приложений, берут свое начало еще с конца 2009 года. Как раз того года, в котором компания представила Go и Noop. Однако тогда карты так и никто не раскрыл, и слухи остались лишь слухами. Затишье продлилось аж до ноября 2010, пока в одной из новостных групп компании не засветилось письмо с громким и революционным заголовком: «Будущее JavaScript» (Future of Javascript doc from our internal JavaScript Summit).

Письмо было составлено ведущими разработчиками компании в ходе внутреннего саммита, посвященного развитию клиентских языков для разработки web-приложений. Эти несколько килобайт текста не содержали спецификацию языка и не рассказывали обо всех планируемых возможностях новинки. В нем лишь упоминалось название проекта – Dash (позже его переименовали в Dart) и краткое описание проблемы, которую можно эффективно решить с помощью разрабатываемого языка.

А какая тут может быть проблема? Набор инструментов для web-разработчика уже давно сформирован и в принципе успешно выполняет свою роль. Для серверной части разработки есть хорошо зарекомендовавшие себя PHP, Python, Java, Ruby, С++, ну а на клиентской стороне позиции прочно держит JavaScript. На всех этих языках написаны миллионы строк хорошо отлаженного кода и новичок в этой тусовке без сильных преимуществ вряд ли сможет стать «своим». Мало кому захочется изучать новый язык программирования и решать с его помощью проблемы, которые успешно победили другие.

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

По мнению девелоперов компании Google хорошо зарекомендовавший себя временем JavaScript (а у него, кстати, даже нет конкурентов) имеет ряд фундаментальных проблем, которые попросту невозможно решить эволюционным путем. Новые «заплатки» могут исправить некоторые изъяны, но проблемы архитектуры полностью убрать не получится.

Решением недостатков JavaScript и должен заняться Dart, а если быть более точным, то он должен стать продвинутой заменой. Сильными сторонами новинки должны стать:

  • Повышение удобства разработки. Язык JavaScript имеет широкий порог вхождения, и этот порог всячески стараются расширять проекты подобные CoffeScript, JQuery. Dart не должен ничего усложнять, а наоборот, по возможности сделать порог проще (за счет более понятного и лаконичного синтаксиса), а также сохранить нетленные и хорошо зарекомендовавшие сущности JavaScript: интерпретируемость, простота освоения.
  • Увеличение производительности. Быстродействие – одна из главных проблем всех современных технологий. Постоянное повышение требований сулит бесконечную гонку в оптимизации и наращивания мощностей. С момента появления html5 и постепенного отказа от технологии Flash происходит стремительный рост объема клиентского кода и всем хочется, чтобы для интерпретации этого добра не требовались значительные ресурсы со стороны пользователя. Виртуальные машины EcmaScript (аля JavaScript) имеют ряд «узких» мест, которые негативно отражаются на общей производительности приложений, поэтому Dart должен предоставить более совершенный вариант.
  • Безопасность. Повышение уровня безопасности кода – процесс бесконечный и Dart должен внести новшества и в эту область, причем наращивание обороны не должно отрицательно сказаться как на простоте разработки, так и на производительности.
  • Дружелюбным к редакторам кода и дополнительным инструментам разработчиков. Современные web-приложения предъявляют новые требования в плане поддержки, отладки и модификации кода. Соответственно новый язык программирования должен быть спроектирован с учетом этих требований. Он должен прекрасно взаимодействовать с дополнительными инструментами, способные облегчить и без того нелегкий процесс разработки, а также быть готовым, что продвинутая IDE будет требовать нормальную поддержку таких вещей как: поиск вызова функций, рефакторинг и т.д.

    Несмотря на все плюшки, разработчики компании Google понимают риск идеи, и в том же открытом письме был приведен запасной вариант развития событий. Суть его заключается в параллельной поддержке развития JavaScript, так называемый проект «Harmony». Таким образом, поисковому гиганту удастся побыть и в роли революционера, и оказать помощь всем web-разработчикам, кто не оценил и не увидел преимуществ Dart’a.

    Hello world на Dart’е

    С чего начать знакомства с Dart’ом? Правильно, с написания самого простого приложения – Hello World. Реализация этой простенькой программы на Dart будет мало, чем отличаться от аналогичных вещей, написанных на Java, C#:

    Ok, с пониманием примера проблем возникнуть не должно. Более сложные демки (например, чат, проксик и т.д.) можно найти в репозитории проекта Dart. Я не буду разбирать эти примеры построчно в рамках статьи, т.к. во-первых, они все снабжены необходимым комментариями, а во-вторых, ты уже не маленький и в состоянии сам запустить пример.

    Прогноз нострадальца

    Красивые пресс-релизы сулят нам райские блага: разрабатывать станет проще, приложения станут безопасней, разработчики получат блэк джек с шлюхами, а работодатели будут пищать от быстроты процесса разработки приложений и все будут счастливы. Реально хороший прогноз, но, как и все революции вероятней всего, ИМХО, его постигнет фиаско. Либо на строительство «рая» потребуется чертовски много времени, которое тратить просто так никто не захочет. Ведь действительно, если отбросить все заоблачные радужные перспективы, а посмотреть на то, что сделано сегодня, то не трудно разглядеть ряд достаточно серьезных проблем, которые рано или поздно встанут тяжело преодолимым рвом на пути к счастью. Во всяком случае, я, как человек связанный с разработкой под WEB вижу несколько серьезных трудностей, которые обязательно вставят палки в колеса звезде смерти. Вот хотя бы некоторые из них:

    Отсутствие большего и сплоченного сообщества разработчиков. Ты скажешь, что сообщество однозначно появится и соберет в своих рядах тысячи фанатов нового режима. Нужно лишь немного подождать, т.к. этот процесс требует времени и постоянных релизов новых версий со стороны разработчиков. Да, отчасти ты прав, но не стоит забывать, что обещаниями сообщество сыто не будет. Мало кто решится писать серьезный и полезный код на одном голом энтузиазме. Если Dart не получит распространенность, то никто не решится написать тот же аналог jQuery. Зачем делать бессмысленную работу, если ей будут пользоваться только такие же фанаты, как и ты?

    Хорошо, может я, немного сгущаю краски, но мир JavaScript – это не только мощная и продвинута библиотека jQuery, которая используется в каждом втором проекте. Есть множество других прекрасных библиотек, фреймворков, которые решают тысячи задач. Кто решится отказаться от их использования и реализовать подобную альтернативу на Dart’е? Сам Google вряд ли сможет предложить готовые альтернативные решения в разумный срок. В итоге мы нарвемся на тот же тормоз мира JavaScript, что и был году эдак в 2005. Тогда JS переживал времена тотального застоя, и ни о каких фреймворках и библиотеках, вроде jQuery никто и не мечтал. Идеи витали в облаках, но не было реализации.

    Возможно, Google предусмотрела этот вариант и кросс интерпретатор сможет без особого труда «конвернуть» тонны отлаженного JavaScript кода в Dart’овский вариант, но будет ли такой результат оправданным? Сможет ли транслируемый код следовать всем каноном природы Dart’а и наследовать основные его принципы: повышенное быстродействие, безопасность, красоту кода и другие вкусняшки? Скорей всего нет, т.к. подобные трюки подвластны лишь Д.Копперфильду и не стоит забывать, что и его фантастические возможности это не более, чем иллюзия.

    Но это ведь Google! Они способны на такой амбициозный проект и однозначно доведут дело до конца!» — еще более сердитым тоном возразишь ты. Корпорация добра – сильный игрок, но в первую это обычные люди, которым свойственно допускать ошибки и поворачивать руль на 360 градусов в случае возникновения горячей ситуации. Они уже создавали провальные проекты, от которых потом просто-напросто отказывались. Достаточно вспомнить круто разрекламированные сервисы вроде: Wave и Buzz. Они вложили кучу средств в их поднятие, но когда поняли, что тема не стрельнет — попросту избавились от них (wave) либо реорганизовали в виде примочек к другим проектам (функционал buzz перебрался в google plus). Это далеко не единственные примеры неудачных проектов супер компании.

    Если уж проводить аналогию с Dart’ом (как с инструментом для разработки), то сразу хочется вспомнить много обещающий Google Web Toolkit (ссылка во врезке). Про этот инструментарий в нашем журнале даже было несколько статей. GWT сулил разработчикам тотальное упрощение процесса создания web-приложений масштаба enterprise. Программистам не требовалось париться с тоннами кода на html/css/JavaScript. По факту весь процесс разработки сводился к написанию кода на языке Java, следуя MVC паттерну. Все остальные тонкости брал на себя ядро GWT и формировал на стороне клиента правильный JavaScript. В этой части был прорыв, т.к. клиентский код создавался с с расчетом на определенные браузеры. При большом зоопарке бродилок это было весьма актуально, т.к. самостоятельно реализовать код, корректно работающий под всеми популярными бродилками, было крайне проблематично.

    Однако на этом все преимущества GWT по факту заканчивались. Сильное сообщество пользователей проекта собрать не удалось. Дополнительных модулей (разработанных не силами Google) разработано крайне мало. При практическом применении стали обнаруживаться концептуальные проблемы. Время в грубой форме заявило о новых тендерах разработки. В результате GWT стал медленно развиваться и для новых проектов его вряд ли кто решит использовать.

    Отсутствие нативной поддержки. Для красивой демонстрации возможностей Dart’а разработчики должны его донести до браузеров пользователей. Если этого не сделать, то программисты не станут писать «крутой» код, т.к. пользователь существо крайне ленивое и его фиг заставишь качать дополнительные библиотеки/плагины. К тому же все уже устали жевать вкусную жвачку со вкусом «Для просмотра контента вам требуется обновить плагин Dart». Мы уже проходили это с Flash, приносящему в систему пользователя не только радость, но и кучу проблем.

    Получается, что для достижения хотя бы 80% успеха разработчики Dart’а должны обеспечить его нативную поддержку во всех популярных браузеров. Сейчас первую строчку популярности делят между собой Google Chrome и Internet Explorer. Встроить нативную поддержку Dart’а в Chrome – не проблема. Google волен распоряжаться начинкой своих продуктов по собственному усмотрению. А вот как быть с Internet Explorer’ом, Opera, Safari, FireFox?

    Я еще могу предположить, что гигант сможет за небольшой временной промежуток времени договориться с Mozilla и Opera Software, но Apple с Microsoft будут упираться до последнего, а может и вовсе откажутся. Второй вариант даже больше возможен, нежели первый. Ведь буквально спустя полтора месяца после презентации Dart’а разработчики IE негативно высказались в его сторону. Свою позицию они объясняют достаточно просто. Они верят в развитие и совершенствование старого доброго JavaScript без проведения революций. Списать со счетов этих игроков просто так нельзя. Они занимают слишком весомую долю рынка и как бы ни того не хотелось с ними нужно считаться.

    Топ-пост этого месяца:  Добавить красивую форму подписки Feedburner на WordPress блог

    Борьба с наигранными проблемами. Об этом мало кто задумывается во время презентаций и красноречивых пресс-релизов, но эйфория рано или поздно проходит и начинается процесс осознания и размышлений. Презентация Dart’а не стала исключением, и сначала наблюдалось массовое пускание слюней, нежели здравое мышление и оценка сказанному. Внимательно присмотревшись к проблемам, которые пытается решить Google с помощью нового языка звучат весьма туманно. Не буду голословным, а приведу реальные примеры:

    — Простота и удобство разработки. Звучит круто, но что, же такого плохого и «тяжелого» в JavaScript? Dart проповедует классический принцип так называемой классовой парадигмы ООП (class oriented language). Она более проста в понимании, особенно для тех, кто уже имеет опыт работы с языками вроде C#, Delphi, Java. Если разработчик написал ни одну тысячу строк на одном из выше приведенных языков, то войти в мир Dart’а ему будет чрезвычайно просто.

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

    Google видит в этом проблему, но лично я выступаю «за», т.к. всегда придерживаюсь мнения: «для решения каждой задачи нужно выбирать наиболее подходящий инструмент». Вот и к JavaScript нужно относиться как к инструменту, хорошо подходящему для определенного круга задач. И если язык проповедует не те религиозные каноны ООП – это не повод изобретать альтернативу. Если уж не нравится стиль JavaScript, то проще создать еще один вариант синтаксического сахара (наподобие CoffeScript), который привнесет удобство написания и восприятия кода.

    — Дружелюбным к редакторам кода и дополнительным инструментам разработчиков. Перед нами опять сильный аргумент, который можно трактовать по-разному. Сегодня хороших IDE, ориентированных на JavaScript разработчиков не мало. Есть как проприетарные (например, WebStorm), так и OpenSource решения (например, Aptana studio). Их возможностей более, чем достаточно для рефакторинга или поиска вызова функций (тривиальная функция для продвинутого редактора). Во всяком случае, сообществу разработчиков этого достаточно и они не перестают удивлять новыми и интересными проектами, созданными целиком на JavaScript. Выделять «нативную гибкость» по отношению к средам разработки уж слишком притянутое за уши преимущество. Кто рискнет ради это убить кучу времени на изучение нового языка?

    — Производительность. Сейчас эту сильную сторону вообще тяжело проверить на практике, т.к. протестировать Dart в реально боевых условиях на данный момент невозможности — пока не существует нативной поддержки со стороны браузеров (исключая специальную сборку Chrome). Однако уже сейчас специалисты в области JavaScript рассуждают на эту тему и заявляют, что вряд ли Dart’у удастся добиться более существенных результатов, чем движку V8 (V8 JavaScript engine). Получается, что и вопрос повышенного быстродействия пока остается под большим вопросом.

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


    Googlовская зависимость. Я специально решил оставить эту причину возможной неудачи Dart напоследок. Даже если предположить, что все опасения и трудности будут преодолены, то продвижение Dart’а упрется в нежелание крупных игроков интернет-рынка отдавать гиганту такую привилегию или говоря другими словами принимать правила игры очень влиятельного партнера. Слишком велик риск оказаться в зависимости могущественной интернет-корпорации. Ведь отдав Google такую привилегию можно запросто нанести урон по развитию смежных технологий (HTML5, CSS3).

    Быть или не быть

    Если ты дошел до этого абзаца, то тебя наверняка мучает дилемма: «Стоит ли сегодня заморачиваться изучением Dart’а или нет?». Конечное решение должен принять ты сам, но на мой взгляд, активно бросаться за изучение Dart’а сейчас нет смысла, т.к. язык находится на этапе рождения и дальнейшая его судьба находится под большим вопросом. Посуди сам. Нативная поддержка отсутствует, следовательно, ощутить уже имеющиеся плюсы Dart’а прямо сейчас не удастся. Довольствоваться работой транслятора, конвертирующего Dart-код в JavaScript удовольствие также сомнительное. Спецификация языка в стадии совершенствования и доработки. Поэтому новая версия может принести несовместимость, из-за которой придется перелопачивать код. Получается, что объективных причин для немедленного изучения гугловской новинки попросту нет и не появится в ближайшем будущем.

    Вместо заключения

    Компания Google пытается провернуть на web-арене очередную революцию и ей остается пожелать только удачи. Можно по-разному относиться к Dart’у, но однозначно одно – он однозначно принесет определенную порцию новшеств. Даже если ему не удастся полностью заменить JavaScript, знания, полученные в ходе его разработки, наверняка удастся перенести в мир JS. А быть может, эти знания выльются в еще один абсолютно новый язык программирования. Нам же остается только наблюдать и успевать делать для себя выводы. Помни, идеального языка программирования нет, и не может быть. Dart – просто очередная революция и шаг вперед, который через n-е количества лет подвергнется не менее жесткой критике.

    Кто трудится на Dart

    Возглавляют группу разработчиков языка Dart достаточно известный программист Ларс Барк (ссылку на его профиль в Wikipedia ищи в соответствующей врезке). Ларс трудится в Google c 2004 года. До проекта Dart он принимал участие в разработке браузера Google Chrome. Как правило, все проекты подобного уровня создаются в главных офисах компании (обычно они располагаются на территории США или где-нибудь в Европе). Для Dart это правило не работает. Над новым языком трудятся и наши с вами соотечественники (руководит группой разработчиков Павел Фельдман) из Санкт-Петербургского офиса компании Google.

    5 перспективных языков программирования, которые перевернут мир ИТ

    Сегодня можно реально затеряться в фауне объектно-ориентированных, функциональных, императивных, динамических, компилируемых, интерпретируемых и скриптовых языков. Их стало настолько много, что ни один разработчик не может познать их все, но давайте посмотрим на 5 перспективных языков программирования, которые перевернут мир ИТ.

    И так — сегодня в посте:
    Ора,
    F#,
    Dart,
    Go,
    haXe

    Дубликаты не найдены

    В Opa-приложениях интерфейсы пользователя клиента, логика сервера и взаимодействие с БД — все написано на одном языке.

    NodeJs и MongoDB используют движок v8. Тоже все написано на одном языке + возможность использовать библиотеки С.

    1. никогда не слышал.
    2. F# неплохой, но я бы не назвал его чем-то революционным. Просто функциональный язык на .NET
    3. Дарт скорее всего не взлетит потому, что есть нативный ЖС и зоопарк браузеров в которых для установки Дарта нужны дополнительные нинужные телодвижения
    4. Говорят, что язык годный. Я последнюю неделю в нём копаюсь, пока чувства странные. Выглядит неплохо, все Питоняши от него в восторге, как бы не заменил серверные веб-технологии
    5. Слышал о haXe, но не встречал широкого применения.

    Вообщем хз, я не уверен в этом рейтинге.

    Opa
    Веб-программирование штука сложная. Даже самое простое веб-приложение состоит из огромного количества строк, написанных на нескольких языках, например HTML и JavaScript для клиента, PHP или Java для серверной стороны, SQL для базы данных. Opa заменяет их всех сразу — получаетсясовершенно новая парадигма веб-программирования. В Opa-приложениях интерфейсы пользователя клиента, логика сервера и взаимодействие с БД — все написано на одном языке.

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

    F#
    5 перспективных языков программирования, которые перевернут мир ИТ
    Функциональное программирование уже очень давно пользуется большой популярностью, но именно чисто функциональные языки (Lisp и Haskell) часто считаются непригодными для разработки ПО, из-за того, что коды функционального типа сложно сочетать с кодами и библиотеками, которые написаны на императивных языках (C++ или Java).

    F# — язык, разработанный в стенах Microsoft. Поскольку F# язык первого класса на .Net CLR, он поддерживает те же библиотеки и функции, какие используют и другие CLR языки (например C# или Visual Basic). Код F# похож на OCaml, но со своим уникальным синтаксисом. Например, чтобы облегчить научные расчёты числовыми типами данных в F# могут быть единицы измерения. Также тут есть и конструкции для облегчения асинхронных вводов/выводов, инструменты параллелизации ЦПУ и т.п.

    Dart
    5 перспективных языков программирования, которые перевернут мир ИТ
    JavaScript хорошо подходит для создания базовой динамичности на странице, но как только приложение начинает разростаться, можно заметить недостатки JS. Поэтому разработчики Google создали Dart. Возможно что Dart, так само как и JavaScript, приживется в веб-программировании основательно и надолго.

    Разница между JS и DART в том, что JavaScript основан на прототипах, а Dart на объектах. Сейчас Dart мало где используется, но так как Google выпускает Dart по беспланой лицензии BSD, вы можете спокойно писать свои приложения, соглашаясь с условиями лицензии.

    Go
    5 перспективных языков программирования, которые перевернут мир ИТ
    Команда Google не перестает нас радовать. Go это язык программирования общего назначения. На нем можно написать как приложение так и целые системы. Чем то он похож на C или C++, чем то на Java или C#, но нужно понимать, что Go был создан для легкого программирования и в основном он похож на С. Но во время оптимизации кода компилятор удаляет ненужные повторения кода.

    Спецификация языка пока еще не готова, но Google подготовила хорошую документацию, в которой нельзя не заметить разницу между Go и другими языками.

    haXe
    5 перспективных языков программирования, которые перевернут мир ИТ
    Переносимый код уже давно не фантастика. Например, C имеет множество компиляторов заточенных под разные архимектуры и ЦПУ. haXe больше чем переносимый язык. Это мультиплатформный язык — его можно использовать как на разных архитектурах, так и на разных типах ОС.

    Синтаксис haXe напоминает C, но этот языкпросто изобилирует огромным количеством функций. Но его главным преимуществом считается возможность устранения проблем, которые свойственны каждой из платформ. Например, haXe строготипизированный, но его код может конвертироваться в JavaScript, который в свою очередь не ограничивает переменные типами — компилятор учтет такую разницу и сделает все необходимое для получения нормального js на выходе.

    Хотя haXe все еще находится на стадии разработки — его создатель (игровая студия Motion Twin) успешно использует его в комерческих целях. haXe доступен для Windows, Mac OS X и Linux по комбинациях бесплатных лицензий.

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

    В чем разница между языками программирования JAVA и JavaScript?

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

    Что бы начать говорить о различиях JAVA и JavaScript, необходимо четко определить эти два понятия. JavaScript – это язык программирования, а под Java можно также подразумевать и платформу для разработки. Чтобы было возможно сопоставить эти два понятия, далее под Java будем подразумевать не платформу для разработки, а именно язык программирования.

    Назначения JAVA и JavaScript

    JAVA – объектно-ориентированный язык программирования, изначально разрабатываемый для программирования бытовой техники (назывался Qak). Позже язык Java начал использоваться для написания различных типов программного обеспечения, апплетов, настольных и серверных приложений.

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

    Если сравнивать данные языки программирования, исходя из их определений, то уже видим их главное различие. Java – язык программирования для создания различных типов приложений, а JavaScript – это вспомогательный язык, который используется в уже созданных приложениях, а также как дополнительный язык программирования.

    3 фундаментальные различия языков программирования Java и JavaScript:

    1. JAVA – объектно-ориентированный язык программирования, а JavaScript – объектно-ориентированный язык сценариев.

    2. При помощи JAVA создаются приложения, которые запускаются на виртуальных машинах или в браузерах, а JavaScript выполняется только в браузерах.

    3. JAVA-код необходимо скомпилировать, а JavaScript-код используется в текстовом виде.

    Почему название этих языков так похожи?

    Все дело в том, что изначально JavaScript имел название LiveScript, но после того как язык программирования Java стал всемирно известен, из коммерческих соображений LiveScript был переименован в JavaScript.

    Использование JavaScript в WEB

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

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

    JavaScript отличается так называем “низким порогом вхождения”, то есть для его изучения необходимо иметь не большой объем знаний в области WEB, в частности включающий базовые понятия html и css.
    Сейчас существует множество бесплатных ресурсов изучения JavaScript: книги, статьи, форумы, видеоуроки, online-курсы и т.д, что помогают с легкостью освоить JavaScript с начального уровня до продвинутого использования.

    Автор: web-программист агентства стратегического интернет-маркетинга «StarMarketing» Ярослав Кустрич.

    Язык dart компилируется в JavaScript точно такой же как и TypeScript?

    Наткнулся на AngularDart, который написан на гугловском языке Dart . И мне вот стало интересно в такой же JavaScript код он компилируется TypeScript ?

    В вики написано, что язык разрабатывался как альтернатива JavaScript

    Dart — язык программирования, созданный Google. Dart позиционируется в качестве замены/альтернативы JavaScript. Один из разработчиков языка Марк Миллер (Mark S. Miller) написал, что JavaScript «имеет фундаментальные изъяны»2 («Javascript has fundamental flaws…»), которые невозможно исправить. Поэтому и был создан Dart.

    В то время, как TypeScript делался, как оболочка над JavaScript с типами.

    Dart тоже сейчас компилится в JavaScript .

    И вот у меня возник вопрос:

    а есть ли в итоге отличия между скомпилируемыми кодами этих 2 ух языков? Ведь Dart (теоретически) может делать код ближе настольными языкам программирования, автоматически искореняя возможность потери контекстов через бинды и генеря проверки типов непосредственно в функциях JavaScript . Это предположение я делаю на основании почвы по которым данный язык родился на свет.

    UPD

    Потестил вот такой пример:

    По идее вот такой в TypeScript должен отвалиться с ошибкой что свойство не определено из-за потери контекста но в Dart контекст не потерялся => как-то по другому все компилиться.


    Чем отличается Java от Javascript

    Если верить статистике Github, то на данный момент, Java и JavaScript — это самые одни из самых популярных языков программирования, после Python, PHP и Ruby. Несмотря на схожесть в их названиях, это очень разные языки. Вы можете подумать, что JavaScript это более простая, облегченная версия Java. Но вы ошибаетесь. Это два совершенно разных полноценных языка программирования, которые позволяют делать различные вещи, но в то же время в них больше отличий чем схожих черт.

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

    Что такое Java?

    Первая версия Java с кодовым именем «Oak» и «Green» после первоначальной разработки появилась на свет в мае 1995 года. Множество программистов в то время расценивали этот язык как замену C/C++, поскольку здесь был похожий синтаксис, а также реализованы новые концепции. Язык делал программирование более простым и безопасным.

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

    Это становится возможным из-за Java машины (JVM). Java машина, это обычная программа, которая выступает в роли посредника между операционной системой и Jar файлом. Она читает файл программы, который содержит инструкции на Java и превращает их в инструкции платформы, на которой выполняется прямо во время выполнения. Такой процесс называется Just-in-time компиляция или JIT.

    Что такое JavaScript?

    JavaScript появился как простой язык для создания ограничителей HTML форм. Когда в компании Netscape Communications решили, что им нужен более динамичный интернет, был создан новый язык, который мог использоваться прямо внутри HTML. Этот язык назывался LiveScript и был разработан за десять дней.

    Затем язык развивался некоторое время под таким именем, но потом появилось несколько причин изменить название. Во-первых, JavaScript и Java должны были дополнять друг друга, поэтому JavaScript и получил похожий синтаксис, во-вторых, в то время Java была очень популярной, и поэтому разработчики, чтобы привлечь больше людей к языку решили использовать известное слово в названии и заменили Live на Java. Так и появился JavaScript. Но похожего в языках только синтаксис, позже, Java все меньше и меньше использовалась в интернете и пути языков разошлись. Сейчас HTML, CSS и JavaScript — это основные компоненты веб-разработки.

    В отличие от Java, которая компилируется, JavaScript — полностью интерпретируемый язык. Когда вы посещаете сайт, использующий JavaScript, ваш браузер получает полный исходный код программы. Далее она выполняется на лету с помощью JavaScript движка. Различные браузеры используеют разные движки: V8 (Chrome), SpiderMonkey (Firefox), Chakra (Edge) и так далее.

    Схожие стороны Java или JavaScript

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

    • Объективно ориентированное программирование (ООП) — оба языка требуют от программиста использования во время кодирования принципов объектов и связей между ними. Оба языка поддерживают такие паттерны ООП, как интерфейсы, инкапсуляция и полиморфизм.
    • Разработка фортэнда — оба языка могут использоваться для разработки фортэнда, другими словами — интерфейса пользователя, который работает вместе с сервером. JavaScript можно встраивать в HTML, или в качестве сторонней библиотеки на страницы сайта. А Java может работать в браузере в качестве java апплета.
    • Разработка бэкэнда — другими словами — разработка серверного программного обеспечения. Java уже давно используется в бэкэнд технологиях проектами Apache, JBoss, WebSphere. Новая технология, Node.js позволяет запускать серверы, написанные на JavaScript.
    Топ-пост этого месяца:  Хостинг Евробайт отзывы, услуги, преимущества и недостатки

    Основные отличия Java vs JavaScript

    Изначально языки разрабатывались для решения абсолютно разных задач. Java предназначена больше для создания полноценных приложений, тогда как JavaScript — скриптовый язык для организации интерфейса в веб. Вот основные отличия, чтобы было легче понять в чем разница java и javascript:

    • Компилируемость и интерпретация — как я уже писал выше, Java — это компилируемый язык программирования, а JavaScript — интерпретируемый. Отличие только в реализации, на деле оба языка могут выполняться на различных платформах.
    • Статическая и динамическая проверка типа — Java использует статическую проверку типов. Тип переменной проверяется во время компиляции. Программист должен явно задать какого типа будет переменная — строка, число, число с плавающей точкой и так далее). JavaScript, как и другие скриптовые языки использует динамическую типизацию. Правильность использования типов проверяется во время выполнения. Программисту не нужно задавать тип переменной при объявлении. Оба подхода имеют множество преимуществ и недостатков. Самое главное отличие java от javascript — при статической типизации большинство ошибок выплывают на этапе разработки, потому что компилятор знает чего ждать, код выполняется быстрее и потребляет меньше памяти. Преимущество динамической типизации — программы пишутся быстрее и проще.
    • Параллельность — реализация возможности выполнять несколько последовательностей инструкций в одно и то же время очень сильно отличается в Java и JavaScript. Java позволяет использовать несколько потоков для запуска параллельных задач. Реализация параллельности в JavaScript очень сложна. Она есть только в Node.js. В основном потоке она реализуется через очередь выполнения, которая называется цикл обработки событий. Оба метода работают хорошо, но потоки Java быстрее.
    • Классы и объекты — Java использует классы и отношения между ними. Свойства объекта определены в классе и являются неизменной частью класса. Наследовать классы можно от других классов и тогда они получают все свойства родителей. Вы удивитесь, но в JavaScript нет классов. Там есть только объекты. И наследование реализовано по-другому. Все объекты можно наследовать от других объектов напрямую. Для этого достаточно указать нужный объект в качестве прототипа.

    Когда лучше использовать?

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

    Лучше выбрать Java если вы разрабатываете:

    • Android приложение;
    • Коммерческое программное обеспечение;
    • ПО для научных вычислений;
    • ПО для анализа Big Data;
    • ПО общего назначения или инструменты безопасности;
    • Серверные программы.

    Лучше использовать javaScript в таких сферах:

    • Динамические одностраничные приложения (SPA);
    • Форт-энд приложения (Query, AngularJS, Backbone.js, Ember.js, ReactJS);
    • Серверные приложения (Node.js, MongoDB, Express.js и так далее);
    • Мобильные приложения (PhoneGap, Ract Native и т д).

    Выводы

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

    На завершение видео-шутка про противостояние Java и JavaScript на основе игры престолов:

    Чем отличаются языки программирования PHP, PYTHON, RUBY?

    Чем отличаются языки программирования такие как PHP, PYTHON, RUBY (может ещё есть какие популярные, но я ток про эти много слышал).

    1. Можно ли провести с ними аналогию на автомобили, например джип для бездорожья, спорткар для автобана и т.п. языки так же? Если да то какой для чего?
    Например делать социальную сеть по типу ВК можно на любом языке или нет. Или функционал сбербанк онлайн.

    2. Для пользователя будет ли видна какая то разница внешне на чём(на каком языке) сделан сервис?

    3. Может на каком то языке есть такое что на другом не сделать. Может кто знает примеры того что можно сделать на Ruby и нельзя на пхп и наоборот или с другими языками.

    4. Если предположить, что человек знает все 3 языка, то исходя из каких мыслей он будет делать что то выбирая определённый язык — время, деньги, личные предпочтения или это вытекает из поставленной задачи(если каждый язык для чего то определённого).

    5. Если взять все знания каждого языка, то как они будут располагаться по лесенке. Например — php 3 года изучения, Ruby 5 лет изучения, с++ 10 лет обучения.

    • Вопрос задан более трёх лет назад
    • 16026 просмотров

    1. Аналогию с самими языками проводить не стоит. Аналогию стоит провести для платформ.
    Платформы вроде .net и java, которые разрабатывались для энтерпрайза, разумеется лучше для него подходят. И не важно даже, десктопное у вас приложение или веб-сервис. Важно, что в платформе есть поддержка нужных стандартов и технологий с гарантией качества от производителя.
    С другой стороны, многие компоненты таких платформ это closed-source. Поэтому, если вы не банк, а стартап, то для веб-сервиса выбирайте
    Ruby или Python.
    Социальную сеть можно сделать много на чем, но я бы делал на рельсах или джанге. А вот функционал сбербанк-онлайн я бы делал на ASP.NET MVC (т.е. на C#) или на джаве (на спринге например). Однако, тот же близзовский battle.net написан на спринге (сервер когда-то случайно отдал мне stack-trace после ошибки).

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

    2. Нет, не будет. Не должно быть, если точнее. Для пользователя язык общения с сервисом — HTTP. Если в современном веб-фреймворке нельзя нормально абстрагироваться от используемой технологии, это плохой фреймворк.

    3. На PHP много чего нельзя сделать. Вернее, КАК БЫ можно все, но нормально можно только веб. Именно поэтому для меня он не язык, а какой-то шаблонизатор — слишком у него дурная история и связь с веб (что нехорошо для языка общего назначения). Конечно, современные веб-фреймворки его очень хорошо причесывают, что даже можно работать с ним, но мы же о языках говорим..

    4. Для веб-проектов между Ruby, Python и PHP человек бы выбирал исходя из своих умений. У каждого языка своя экосистема (библиотеки, пакетные менеджеры, серверы приложений/плагины для веб-сервера) и довольно непросто знать все сразу. Именно поэтому все расходятся по своим лагерям и просто работают. Первичный выбор языка часто определяет его популярность. Лет 5 назад Руби всех рвал за счет Рельсов, сегодня Питон и PHP подтянулись в плане экосистемы, поэтому ситуация уже другая.
    Если человек таки сумел познакомиться с разными языками, он выберет тот, в котором ему проще мыслить. Модель ООП, статическая/динамическая типизация — все это определяет ощущения КОНКРЕТНОГО человека от КОНКРЕТНОГО языка.

    5. PHP учится быстрее всех, но если вы не знаете других нормальных языков, лучше его не учите — испортитесь как программист. Python и Ruby учатся примерно одинаково. Изучение C++ — совсем другая история, я бы не ставил его в один ряд с Питоном — этот язык несколько другого уровня и требует других (более глубоких) знаний о вычислительной технике (т.е. он 100% учится дольше, чем Python).

    Императивное vs Декларативное программирование в javascript

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

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

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

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

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

    Сложность этой темы, как заметил Merrick, в том, что «это одна из тех вещей, которые вы понимаете интуитивно, но не можете объяснить».

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


    Вернемся к изначальному определению, над которым я уже смеялся:

    Императивное программирование похоже на то, «как» вы что-то делаете, а декларативное программирование больше похоже на «что» вы делаете».

    Вообще, здесь припрятано немного хорошей информации. Сначала разберем достоинства этого определения вне контекста программирования и рассмотрим пример из «реальной жизни».

    Вы решаете, что тратите слишком много времени на споры об «изнурительном JavaScript» («JavaScript Fatigue» ™) и реактивном функциональном программировании (Reactive Functional Programming), и ваш супруг достоин хорошего свидания. Вы решили пойти в Red Lobster, так как вы слушали много Бейонсе в последнее время. Вы приезжаете в Red Lobster, подходите к стойке и говорите…

    Императивный подход (КАК): я вижу, что стол под знаком Gone Fishin’ свободен. Мы бы хотели подойти к нему и занять.

    Декларативный подход (ЧТО): Стол для двоих, пожалуйста.

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

    Задам вопрос и хочу, чтобы вы подумали об «императивном» и «декларативном» ответе.

    «Я из Wal-Mart. Как мне добраться до вашего дома отсюда?»

    Императивный ответ: выйдите с северного выхода паркинга и поверните налево. Затем по I-15 на юг, пока не доберетесь до съезда с Bangerter Highway. Поверните направо, как будто вам нужно в ИКЕА. Идите прямо и поверните направо на первом светофоре. Двигайтесь дальше к следующему светофору, поверните налево. Мой дом 298.

    Декларативный ответ: мой адрес — 298 West Immutable Alley, Draper Utah 84020.

    Вне зависимости от того, как я доберусь до вашего дома, машину-то я вожу. Собираюсь ли я водить «императивную машину «на ручке» или «декларативную автоматическую машину». Хватит метафор?

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

    Декларативный ответ сотруднику Red Lobster предполагает, что тот знает все необходимые шаги, чтобы разместить нас. Знание адреса предполагает, что у вас есть какой-то GPS, который в курсе императивных шагов, как добраться до вашего дома.

    Автоматический автомобиль имеет какой-то уровень абстракции над переключением передач.

    Это было осознание, которое действительно заставило «щелкнуть» для меня, поэтому повторю: многие (если не все) декларативные подходы имеют в основе какую-то императивную абстракцию.

    Если это предложение имеет для вас смысл, то вы молодец!

    Теперь попытаемся совершить прыжок из «рая метафор» в «реальность» кода. Чтобы сделать этот маневр более изящным, давайте посмотрим на некоторые «языки» программирования, которые скорее декларативны по своей сути по сравнению с теми, которые императивны по своей природе.

    • Императивные: C, C++, Java;
    • Декларативные: SQL, HTML;
    • Могут сочетать в себе оба подхода: JavaScript, C#, Python.

    Подумайте здесь о типичном примере на SQL или HTML:

    Изучив оба примера, у вас появится очень четкое понимание происходящего. Они оба декларативные. Они «обеспокоены» тем, ЧТО вы хотите сделать, а не КАК.

    Вы описываете, чего вы пытаетесь достичь, не указывая как. Реализация выбора всех пользователей из Мексики была «абстрагирована». Вас не интересует, как веб-браузер анализирует вашу статью и отображает ее на экране. Ваше — это то, ЧТО такое пользователи из Мексики и новый заголовок и абзац на вашем сайте.

    Все идет прекрасно! Перейдем к практической части на JavaScript.

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

    Напишите функцию double, которая принимает массив чисел и возвращает новый массив после удвоения каждого элемента в этом массиве. double([1,2,3]) -> [2,4,6]

    Напишите функцию add, которая принимает массив и возвращает результат сложения элементов массива. add ([1,2,3]) -> 6

    Используя jQuery (или vanilla JavaScript), добавьте обработчик событий click к элементу с . При нажатии нужно переключить (добавить или удалить) класс подсветки, а также изменить текст, чтобы добавить подсветку или удалить подсветку в зависимости от текущего состояния элемента.

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

    Изучив, что общего у этих трех императивных примеров, мы сможем лучше определить, что на самом деле делает их императивными.

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

    Это может быть не столь очевидно, если вы не привыкли думать декларативно, или даже более конкретно — функционально. В каждом примере мы мутируем некоторую часть состояния (если Вы не знакомы с термином состояние (state), то это в основном информация о чем-то, что хранится в памяти, что должно звучать как очень похожее на переменные). В первых двух примерах мы создаем переменную results, а затем постоянно модифицируем ее. В третьем примере у нас нет переменных, но у нас есть состояние, живущее в DOM и затем мы изменяем это состояние в DOM.

    Прозвучит немного субъективно, но для меня код выше не очень читаем. Я не могу так просто взглянуть на код и понять, что происходит. Мой мозг должен пройти сквозь код словно интерпретатор, принимая во внимание контекст, в котором живет код (еще один «минус» мутированных данных).

    Ладно, хватит уже bullshita’ в коде) Рассмотрим некоторые декларативные примеры. Идея в том, чтобы исправить все проблемы сверху. Таким образом, каждый пример должен описывать, ЧТО происходит, не может мутировать состояние и должен легко читаться с первого взгляда.

    Обратите внимание, что в первых двух примерах мы использовали методы map и reduce «из коробки» JavaScript. Это восходит к тому, о чем мы говорим снова и снова в этой статье, что большинство декларативных решений являются абстракцией над некоторой императивной реализацией.

    В каждом примере мы описываем то, ЧТО мы хотим, а не КАК (мы не знаем, КАК реализованы map и reduce, но нам это и не важно). Мы не мутируем state. Все мутации абстрагированы в map и reduce. Это также и более читабельно (как только вы привыкнете к map и reduce, конечно).

    А как насчет № 3? Ну, я немного обманул вас и использовал React, но обратите внимание, что все три императивные ошибки исправлены. Настоящая красота React в том, что вы можете создавать декларативные UI. Глядя на наш компонент Btn, я могу легко понять, как будет выглядеть UI. Другое выгодное отличие — вместо того, чтобы состояние (state) «жило» в DOM, оно «живет» в компоненте React.

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

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

    Одна вещь, которую я не рассматривал слишком детально, — это то, что функциональное программирование является подмножеством декларативного программирования. Если вы еще этого не проходили, я настоятельно рекомендую ознакомиться с методами функционального программирования в JavaScript. Начните с .map, .reduce, .filter и «разрабатывайте план действий» с них.

    Улучшить ваш код, сделав его более функциональным, как говорится, «не сложнее низко висящих фруктов» (или проще, чем «взять с полки пирожок» — по-русски, в тексте приведено английское популярное выражение — прим.переводчика).

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

    • Декларативное программирование — это «акт программирования на языках, которые соответствуют ментальной модели разработчика, а не операционной модели машины».
    • Декларативное программирование — это программирование с помощью декларирования, т. е. декларативных предложений.
    • Декларативное свойство — это свойство, в котором может существовать только один возможный набор выражений, которые могут экспрессировать каждую конкретную модульную семантику. Императивное свойство двойственно: семантика противоречива по составу и / или может быть выражена с вариациями наборов выражений.
    • Декларативные языки «контрастируют» с императивными языками, которые указывают на явное управление внутренним состоянием компьютера, или процедурными языками, которые специфицируют четкую последовательность действий.
    • В информатике декларативное программирование — это парадигма программирования, которая выражает логику вычисления без описания его потока управления.

    Новый язык программирования от корпорации добра: выстрелит или нет?

    Содержание статьи

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

    Языковая практика от Google

    Компания Google уже не раз выступала в качестве создателя нового языка программирования. Достаточно вспомнить такие проекты, как Noop (экспериментальный язык программирования, специально созданный для выполнения под виртуальной машиной) и Go (полноценно компилируемый многопоточный язык программирования). Оба эти проекта стартанули в 2009 году, и если первый особого фурора не произвел, то второй был подхвачен теплой волной оваций разработчиков со всего мира и начал активно развиваться, находя применение в различных по сложности проектах.

    Хакер #163. Лучшие гаджеты для хакера

    Впрочем, говоря о разработанных компанией Google языках программирования, мы применяем слово «успех» в несколько особом смысле. Их популярность (следовательно, и успех) нельзя сравнивать с такими «попсовыми» вещами, как C# от Microsoft или Delphi от Embarcadero. Google в основном работает над узкоспециализированными продуктами, в первую очередь предназначенными для решения определенного круга задач. Они не претендуют на универсальность, и первым делом на них обращают внимание профессиональные разработчики, а не новички. Новостные ленты также не спешат баловать подобные технологии лестными эпитетами. Шумиха держится несколько дней, а потом все затихает, как будто ничего и не было.

    Топ-пост этого месяца:  Добавление удаление записей в избранное

    Слухи о новом языке программирования, ориентированном на разработку веб-приложений, появились еще в конце 2009 года. Это был год, в котором компания представила Go и Noop. Однако тогда карты так и никто не раскрыл, и слухи остались лишь слухами. Затишье продлилось аж до ноября 2010-го, пока в одной из новостных групп компании не засветилось письмо с громким и революционным заголовком: «Будущее JavaScript» (Future of Javascript doc from our internal JavaScript Summit).

    Письмо было составлено ведущими разработчиками компании в ходе внутреннего саммита, посвященного развитию клиентских языков для разработки web-приложений. Эти несколько килобайт текста не содержали спецификацию языка и не рассказывали обо всех планируемых возможностях новинки. В нем лишь упоминалось название проекта — Dash (позже его переименовали в Dart) и приводилось краткое описание проблемы, которую можно эффективно решить с помощью разрабатываемого языка.

    А какая тут может быть проблема? Набор инструментов для веб-разработчика уже давно сформирован и, в принципе, успешно выполняет свою роль. Для серверной части разработки есть хорошо зарекомендовавшие себя PHP, Python, Java, Ruby, С++, ну а на клиентской стороне позиции прочно держит JavaScript. На всех этих языках написаны миллионы строк хорошо отлаженного кода, и новичок без сильных преимуществ вряд ли сможет стать «своим» в этой тусовке. Мало кому захочется изучать новый язык программирования и решать с его помощью проблемы, с которыми уже успешно справились другие.

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

    По мнению девелоперов компании Google, хорошо зарекомендовавший себя JavaScript (а у него, кстати, даже нет конкурентов) имеет ряд фундаментальных проблем, которые попросту невозможно решить эволюционным путем. Новые «заплатки» могут исправить некоторые изъяны, но проблемы архитектуры полностью убрать не получится.


    Устранением недостатков JavaScript и призван заняться Dart, а если быть более точным, то он должен стать его продвинутой заменой. Сильными сторонами новинки должны быть:

    • Повышение удобства разработки. Язык JavaScript имеет высокий порог вхождения, и этот порог всячески стараются поднять проекты, подобные CoffeeScript и jQuery. Dart не должен ничего усложнять, наоборот, его задача — по возможности сделать порог ниже (за счет более понятного и лаконичного синтаксиса), а также сохранить нетленные сущности JavaScript — интерпретируемость и простоту освоения.
    • Увеличение производительности. Быстродействие — краеугольный камень всех современных технологий. Постоянное повышение требований сулит бесконечную гонку в оптимизации и наращивании мощностей. С момента появления HTML5 и постепенного отказа от технологии Flash стремительно растет объем клиентского кода и всем хочется, чтобы для интерпретации этого добра не требовались значительные ресурсы со стороны пользователя. Виртуальные машины ECMAScript (a-ля JavaScript) имеют ряд узких мест, которые негативно отражаются на общей производительности приложений, поэтому Dart должен предоставить более совершенный вариант.
    • Безопасность. Повышение уровня безопасности кода — процесс бесконечный, и Dart должен внести новшества и в эту область, причем наращивание обороны не должно отрицательно сказаться как на простоте разработки, так и на производительности.
    • Дружелюбие к редакторам кода и дополнительным инструментам разработчиков.Современные веб-приложения предъявляют новые требования в плане поддержки, отладки и модификации кода. Соответственно, новый язык программирования должен быть спроектирован с учетом этих требований. Он должен прекрасно взаимодействовать с дополнительными инструментами, способными облегчить и без того нелегкий процесс разработки, также он должен быть готов, что продвинутая > Официальный ресурс проекта Dart с консолью для быстрых тестов

    Несмотря на все плюшки, разработчики компании Google понимают риск идеи, и в том же открытом письме был приведен запасной вариант развития событий. Суть его заключается в параллельной поддержке развития JavaScript (так называемый проект «Harmony»). Таким образом, поисковому гиганту удастся и побыть в роли революционера, и оказать помощь всем тем веб-разработчикам, кто не оценил и не увидел преимуществ Dart’a.

    Hello world на Dart’е

    С чего начать знакомства с Dart’ом? Правильно, с написания самого простого приложения — Hello World. Реализация этой простенькой программы на Dart’е будет мало чем отличаться от аналогичных вещей, написанных на Java или C#:

    Более сложные демки (например, чат, проксик и прочее) можно найти в репозитории проекта Dart (goo.gl/DNudD) или на нашем диске. Я не буду разбирать эти примеры построчно в рамках статьи, так как, во-первых, они все снабжены необходимыми комментариями, а во-вторых, ты уже не маленький и в состоянии сам запустить пример.

    Прогноз нострадальца

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

    Аргумент против: Отсутствует сплоченное сообщество разработчиков

    Ты скажешь, что сообщество однозначно появится и соберет в своих рядах тысячи фанатов нового режима. Нужно лишь немного подождать — этот процесс требует времени и постоянных релизов новых версий со стороны разработчиков. Да, отчасти ты прав, но не стоит забывать, что обещаниями сообщество сыто не будет. Мало кто решится писать серьезный и полезный код на одном голом энтузиазме. Если Dart не станет достаточно распространенным, то никто не решится написать тот же аналог jQuery. Зачем делать бессмысленную работу, если ей будут пользоваться только такие же фанаты, как и ты?

    Итого: На данный момент — весомый минус

    Аргумент за: Dart — это не только новый язык, но еще и конвертер для JavaScript

    Может быть, я немного сгущаю краски, но мир JavaScript — это не только мощная и продвинутая библиотека jQuery, которая используется в каждом втором проекте. Есть множество других прекрасных библиотек, фреймворков, которые решают тысячи задач. Кто отважится отказаться от их использования и реализовать подобную альтернативу на Dart’е? Сама Google вряд ли сможет предложить готовые альтернативные решения в разумный срок. В итоге мы нарвемся на тот же тормоз мира JavaScript, что и был году эдак в 2005-м. Тогда JS переживал времена тотального застоя, и ни о каких фреймворках и библиотеках вроде jQuery никто и не мечтал. Идеи витали в облаках, но не было реализации.

    Возможно, Google предусмотрела этот вариант и кросс-интерпретатор сможет без особого труда «конвертнуть» тонны отлаженного JavaScript-кода в Dart’овский вариант, но будет ли такой результат оправданным? Сможет ли транслируемый код держаться всех канонов природы Dart’а и наследовать основные его принципы: повышенное быстродействие, безопасность, красоту кода и другие вкусняшки? Скорее всего — нет.

    Итого: Красиво, но зачем?

    Аргумент за: «Это же сделал Гугл!»

    Корпорация добра — сильный игрок, но в первую очередь это обычные люди, которым свойственно ошибаться и поворачивать руль на 180 градусов в горячей ситуации. Они уже создавали провальные проекты, от которых потом просто-напросто отказывались. Достаточно вспомнить круто разрекламированные сервисы вроде Wave и Buzz. Гугл вложил кучу средств в их поднятие, но когда там поняли, что тема не стрельнет, — попросту избавились от них (Wave) либо реорганизовали в виде примочек к другим проектам (функционал Buzz перебрался в Google Plus). Это далеко не единственные примеры неудачных проектов суперкомпании.

    Итого: Лажануть может каждый ��

    Официальный редактор кода для Dart

    Аргумент за: Plus, Wave и Buzz — проекты для пользователей, а Dart — для разработчиков. Здесь Гугл не лажанет!

    Если уж искать аналогию Dart’у как инструменту для разработки, то сразу хочется вспомнить многообещающий Google Web Toolkit (ссылка во врезке). Про этот инструментарий в нашем журнале даже было несколько статей. GWT сулил разработчикам тотально упростить создание веб-приложений масштаба enterprise. Программистам не требовалось париться с тоннами кода на HTML/CSS/JavaScript. По факту весь процесс разработки сводился к написанию кода на языке Java, следуя MVC-паттерну. Все остальные тонкости брал на себя GWT и формировал на стороне клиента правильный JavaScript. В этой части был прорыв, так как клиентский код создавался с расчетом на определенные браузеры. При большом зоопарке бродилок это было весьма актуально, поскольку самостоятельно реализовать код, корректно работающий под всеми популярными бродилками, было крайне проблематично. Однако на этом все преимущества GWT заканчивались. Сильное сообщество пользователей проекта собрать не удалось. Дополнительных модулей (разработанных не силами Google) создано крайне мало. При практическом применении стали обнаруживаться концептуальные проблемы. В результате GWT стал развиваться медленно, и для новых проектов его вряд ли кто решит использовать.

    Итого: Отсутствие лажи — величина переменная

    Аргумент против: Нет нативной поддержки

    Для красивой демонстрации возможностей Dart’а разработчики должны его донести до браузеров пользователей. Если этого не сделать, то программисты не станут писать «крутой» код, поскольку пользователь — существо крайне ленивое и его так просто не заставишь качать дополнительные библиотеки/плагины. К тому же все уже устали жевать вкусную жвачку со вкусом «Для просмотра контента вам требуется обновить плагин Dart». Мы уже проходили это с Flash, приносящим в систему пользователя не только радость, но и кучу проблем.

    Получается, что для достижения хотя бы 80% успеха разработчики Dart’а должны обеспечить его нативную поддержку во всех популярных браузерах. Сейчас первую строчку в рейтинге популярности делят между собой Google Chrome и Internet Explorer. Встроить нативную поддержку Dart’а в Chrome — не проблема. Google вольна распоряжаться начинкой своих продуктов по собственному усмотрению. А вот как быть с Internet Explorer, Opera, Safari, FireFox?

    Я еще могу предположить, что гигант сможет за небольшой промежуток времени договориться с Mozilla и Opera Software, но Apple с Microsoft будут упираться до последнего, а может, и вовсе откажутся. Второй вариант даже больше вероятен, нежели первый. Ведь буквально спустя полтора месяца после презентации Dart’а разработчики IE отозвались о нем неодобрительно. Свою позицию они объясняют достаточно просто: они верят в развитие и совершенствование старого доброго JavaScript. Революции им не нужны.

    Итого: Внедряться будет медленно и неравномерно

    Аргумент против: Да это же игла от Гугла!

    Даже если предположить, что все опасения и трудности будут преодолены, то продвижение Dart’а упрется в нежелание крупных игроков интернет-рынка отдавать гиганту такую привилегию или, говоря другими словами, принимать правила игры очень влиятельного партнера. Слишком велик риск оказаться в зависимости от могущественной интернет-корпорации. Ведь отдав Google такую привилегию, можно запросто нанести урон развитию смежных технологий (HTML5, CSS3).

    Итого: Коммунизм нам не нужен

    Демонстрационное приложение Sunflower

    Аргумент за: Простота и удобство разработки

    Звучит круто, но что же такого плохого и «тяжелого» в JavaScript? Dart проповедует классический принцип так называемой классовой парадигмы ООП (class oriented language). Она более проста в понимании, особенно для тех, кто уже имеет опыт работы с языками вроде C#, Delphi, Java. Если разработчик написал не одну тысячу строк на каком-то из этих языков, то войти в мир Dart’а ему будет чрезвычайно просто. С JavaScript все иначе. Этот язык проповедует другую парадигму ООП — прототипную. Да, с ней несколько трудней совладать в начале пути, но, как только скилл получит минимальную дозу опыта, все сразу встанет на свои места и программирование на JS будет казаться стандартным и привычным.

    Google видит в этом проблему, но лично я выступаю за, потому что всегда придерживаюсь мнения: для решения каждой задачи нужно выбирать наиболее подходящий инструмент. Вот и к JavaScript нужно относиться как к инструменту, хорошо приспособленному для решения определенного круга задач. И если язык проповедует не религиозные каноны ООП — это не повод изобретать альтернативу. Если уж не нравится стиль JavaScript, то проще создать еще один вариант синтаксического сахара (наподобие CoffeeScript), который привнесет удобство написания и восприятия кода.

    Итого: А трудностей-то и не было!

    Демонстрационное приложение Spirodraw

    Аргумент за: Дружелюбность к редакторам кода и дополнительным инструментам разработчиков

    Перед нами опять сильный аргумент, который можно трактовать по-разному. Сегодня есть немало хороших IDE, ориентированных на JavaScript-разработчиков. Есть как проприетарные (например, WebStorm), так и Open Source решения (например, Aptana studio). Их возможностей более чем достаточно для рефакторинга или поиска вызова функций (тривиальная функция для продвинутого редактора). Во всяком случае, сообществу разработчиков этого достаточно, и они не перестают удивлять новыми и интересными проектами, созданными целиком на JavaScript. Выделять «нативную гибкость» по отношению к средам разработки уж слишком притянутое за уши преимущество. Кто рискнет ради этого убить кучу времени на изучение нового языка?

    Итого: Надуманная проблема, надуманное решение

    Аргумент за: Высокая производительность

    Сейчас эту сильную сторону тяжело проверить на практике, поскольку на данный момент протестировать Dart в реальных боевых условиях нет возможности — пока не существует нативной поддержки со стороны браузеров (исключая специальную сборку Chrome). Однако уже сейчас специалисты в области JavaScript рассуждают на эту тему и заявляют, что вряд ли Dart’у удастся добиться более существенных результатов, чем движку V8 (V8 JavaScript engine). Получается, что и повышенное быстродействие пока остается под большим вопросом.

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

    Итого: Круто, но пока это только слова

    Быть или не быть?

    Дядя Гугл предлагает нам «интересные» идеи и большие перспективы перехода на Dart, но при детальном и скрупулезном осмотре пациента получается, что пока все это не более чем хорошая теория. Сегодня Dart — это просто интересный проект, а не грозный революционный факел. Приведенные аргументы и опровержения — хорошая пища для дальнейших размышлений и оценки перспектив новинки. Поэтому ответом на вопрос «Стоит ли сегодня заморачиваться изучением Dart’а или нет?» будет: думай и решай сам. Я полагаю, что активно бросаться изучать Dart сейчас нет смысла, поскольку язык находится на этапе рождения и дальнейшая его судьба под большим вопросом. Кроме Гугла и его фанатов новой идеей никто не проникся (я сейчас говорю о влиятельных игроках на арене веба), а значит, никакой надежды на счастливое будущее нет и не может быть.

    Кто работает на Dart?

    Возглавляет группу разработчиков языка Dart достаточно известный программист Ларс Бак (ссылку на его профиль в Wikipedia ищи в соответствующей врезке). Ларс трудится в Google c 2004 года. До проекта Dart он участвовал в разработке браузера Google Chrome. Как правило, все проекты подобного уровня создаются в главных офисах компании (обычно они располагаются на территории США или где-нибудь в Европе). Для Dart’а это правило не работает. Над новым языком трудятся и наши с вами соотечественники (руководит группой разработчиков Павел Фельдман) из Санкт-Петербургского офиса компании Google.

    Новый язык программирования

    Введение в новый язык программирования от Google — Blockly

    В отличие от языка Dart — возможной замены для JavaScript — и Go — современного языка программирования низкого уровня для создания серверов — Google Blockly является основанным на Web-технологиях визуальным языком программирования, намеренно напоминающим головоломку.

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

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

    Визуальные языки программирования уже существуют на протяжении довольно длительного времени. Википедия насчитывает более 100 языков визуального программирования (VPLs). Многие из них очень похожи друг на друга. Например, сходство между Blockly и App Inventor от MIT очевидно.

    Blockly отличается от своих собратьев тем, что этот редактор кода написан на JavaScript, и его исходный код является открытым. Это означает, что не только разработчики Google могут изменять и вносить свой вклад в Blockly. Важным моментом является то, что программы Blockly могут быть экспортированы в JavaScript, Dart, Python или XML-код. На данный момент в Blockly еще нет инструмента импорта кода, но я уверен, что какой-нибудь умный программист разработает такой функционал.

    Тест-драйв

    В Blockly-Суперлабиринте можно попробовать создать программу на Blockly, целью которой является прохождение Панды через Лабиринт. Первоначально в Лабиринте есть только блок «шаг вперёд», чтобы увидеть другие доступные команды, нужно нажать на вкладку «Лабиринт», Управление» или «Логика». Затем нужно выбрать блок с командой и перетащить ее на нужное место в области редактирования. Эта задача может быть решена несколькими способами.

    По форме блоков можно понять, как они будут соединяться с другими блоками. При перетаскивании одного блока внутрь другого, уже размещенный блок расширяется, и два блока отлично совмещаются. Если в блоке есть «+» , например, в блоке «если-то», это значит, что при нажатии на «+» откроется дополнительное меню настройки. Блоки, у которых внутри есть различные цветные слова (например, «вперед» в блоке «шаг вперёд»), позволяют воспользоваться дополнительными возможностями. Например, вы нажимаете «вперёд», и появляется всплывающее окно, с помощью которого можно выбрать движение «вперёд» или «назад».

    Работать с Blockly — настоящее удовольствие. Blockly, прямо как интегрированная среда программирования (IDE), выполняет последовательно каждый шаг вашей программы, подсвечивая текущую часть. Это не совсем отладка, но позволяет заметить, где дела идут не так.

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

  • Добавить комментарий