Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

Языки программирования: различия между версиями

Материал из Aprel Wiki
Дополнительные действия
Нет описания правки
Нет описания правки
Строка 328: Строка 328:


Дело в том, что у событий есть одна маленькая проблема. Обработчики, висящие на событии, могут быть объявлены где угодно и кроме как при отладке нигде не видны. Причем они могут изменить состояние вызвавшего их объекта (традиция передавать sender как первый параметр тянется уже добрых четверть века) или вызывать следующие обработчики (ведь события это ни что иное, как реинкарнация оператора goto на более высоком уровне). В итоге простейший код можно превратить в эталонную лапшу. Что быдло и делает.
Дело в том, что у событий есть одна маленькая проблема. Обработчики, висящие на событии, могут быть объявлены где угодно и кроме как при отладке нигде не видны. Причем они могут изменить состояние вызвавшего их объекта (традиция передавать sender как первый параметр тянется уже добрых четверть века) или вызывать следующие обработчики (ведь события это ни что иное, как реинкарнация оператора goto на более высоком уровне). В итоге простейший код можно превратить в эталонную лапшу. Что быдло и делает.
== Визуальное программирование ==
{{Q|Вот она перед вами, коробка с карандашами<br>В неё совершенно свободно помещается что угодно.|[[:w:Приходько, Владимир Александрович|Владимир Приходько]]}}
Бывает для взрослых и детей.
=== Для взрослых ===
Суть в том, что вместо написания кода рисуешь то, что нужно:
;полностью визуальные:
* [[:w:ДРАКОН|ДРАКОН]] — просто рисуешь блок-схемы (требуется: космоплан «Буран»). Среди разработок примечательны: ''алгоритм «Кровохарканье»'' и ''алгоритм «Острая диарея»''. В Википузии этот язык весьма активно проталкивает один из создателей, сверх-олдфаг В. Паронджанов (аж 1938 года рождения), который с помощью Evacat (экс-админа Evaсat) даже [https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%9A%D0%B0%D0%BD%D0%B4%D0%B8%D0%B4%D0%B0%D1%82%D1%8B_%D0%B2_%D1%85%D0%BE%D1%80%D0%BE%D1%88%D0%B8%D0%B5_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8/16_%D1%8F%D0%BD%D0%B2%D0%B0%D1%80%D1%8F_2013#%D0%94%D0%A0%D0%90%D0%9A%D0%9E%D0%9D выставлял статью на статус «хорошей»], но не прокатило: обсуждающие накидали полную тележку замечаний. Да и в целом этот язык [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%94%D0%A0%D0%90%D0%9A%D0%9E%D0%9D породил километровые срачи], которые Evacat одно время пытался разруливать, но потом плюнул и, видимо, свалил из проекта.
* [[:w:LabVIEW|LabVIEW]] — язык и среда разработки. На сегодняшний день является самым мощным и развитым инструментом визуального программирования. Основан на параллельно выполняющихся потоках данных. Позиционируется как инструмент для студентов, учёных и инженеров, не имеющих профильного образования в области программирования. Используется в основном для работы с железом и создания автоматизированных систем. Позволяет писать программы под Windows, macOS, Linux, операционные системы реального времени и FPGA (разумеется, только при наличии фирменного оборудования). Имеет бесчисленное количество библиотек, тулкитов и модулей на все случаи жизни — от обработки радиосигналов до разработки промышленных SCADA-систем. Язык имеет чрезвычайно низкий порог вхождения, однако содержит и продвинутые элементы: событийно-управляемое программирование, ООП, взаимодействие с .NET, Фреймворк акторов. Программирование в LabVIEW существенно отличается от того, к чему привыкли пользователи традиционных языков. Например, в нём считается дурным тоном использовать переменные, операторы if/else и последовательно выполняющийся код.
** На деле является глючным проприетарным говном, стоящим тонны зелени, и крайне неудобном в работе: вместо кода программы разработчик думает о том, куда бы перетащить пиктограммы, чтобы не порвать провода и не наделать лишних связей, особенно доставляют неудобств элементы-рамки, о том, какого типа этот долбанный провод, и ожиданиепрокрутки окна при перетаскивании мышкой. Иногда поставляемые в комплекте модули зависают и глючат. Не говоря уже о несовместимости версий и вендор-локе. На основе LabView сделана среда программирования детских игрушек [[Lego]] Mindstorms, совершенно для этого непригодная даже для этого по тем же причинам, через несколько дней мытарств обычно ставится BricxCC, позволяющий писать на си-подобном языке без всяких «загрузок операционной системы». Задумка о визуализации исходника в виде графа вычислений неплохая, но только визуализации.
;частично визуальные:
* [[Delphi]] — рисуешь кнопочки и лепишь на них события: нажатие мышки, отжатие и так далее, «а всё остальное умный Дельфин сделает сам»;
* WinForms — то же, что и Delphi, только на C#.
* Qt — ещё один аналог, уже на C++. А вообще, тысячи их.
* SQL Manager Studio и аналоги — вместо написания SQL рисуешь структуру базы данных со связями {{Spoiler|работает через жопу, но тем не менее запросы быдлокодера, не знающего SQL, более-менее удовлетворяет — через жопу же! LOL~}}
=== Для детей ===
А это учебные языки для маленьких детей, точнее, для родителей, желающих вырастить программера:
* [[:w:Лого (язык программирования)|Logo]] — самый знаменитый из таких языков, учит программировать алгоритмы, доставляет тем, что знаменитая «черепашка» для рисования на экране существует и в варианте [http://commons.wikimedia.org/wiki/File:Turtle_draw.jpg программируемого робота] => суть обучения сводится к весёлой игре «научи Черепашку рисовать на экране или на полу». Язык учит сразу функциональному программированию и основан на [[LISP]]е, а точнее, является одной из немногих более-менее успешных попыток запилить в Лисп [[:w:М-выражение|M-выражения]], благодаря чему в отличие от чистого Лиспа гораздо более читабелен и понятен новичкам.
* [[:w:Скретч (язык программирования)|Scratch]] — имеет занятное отображение алгоритмов: вместо традиционных блок-схем используется более красивое и наглядное отображение, показывающее, где у какой команды ''begin'', а где ''end'', [http://commons.wikimedia.org/wiki/File:Scratch_Screenshot,_Running_Script.png вот так], что является нехилым плюсом для обучения и, без сомнения, [[WIN]]ом.
* [https://developers.google.com/blockly/ Blockly] — конструктор [[Лего]] от Google — косплеит Скретч.
* [[:w:EToys|EToys]] также известный как Squeak — учит ООП и основан на [[:w:Smalltalk|Smalltalk]]. Любишь котегов? Так-то.
* [[:w:Алиса (ПО)|Alice]] визуальный ООП язык
* [http://www.niisi.ru/kumir/ КуМир] и [http://www.piktomir.ru/ ПиктоМир] — российские языки для детей, основанные на «[[:w:школьный алгоритмический язык|Ершоле]]» (поскольку сочинены в основном ершовским учеником Кушниренко), наш ответ Scratch’у. Сначала осваивается ПиктоМир, а затем при помощи КуМира осуществляется переход от визуального программирования к абстрактному, подобно тому как Scratch является визуальной надстройкой над Смоллтоком. Кстати, [[:w:Ершов, Андрей Петрович|Андрей Ершов]] и Джон МакКарти в жизни были большими друзьями, и последние версии ершола — это собственно такой лисп и есть. А Алан Кей, автор Смоллтока и Скрэтча, у МакКарти учился.
== Какой язык учить? ==
Ибо ваистену,
{{Цитата|pre=1|Какой язык учить?
Хочешь программировать на выразительном и мощном языке: Python
Нужно по-быстрому веб-сайт: PHP
Желаешь в тусовку зовущих себя «рок-звездами» программирования: Ruby
Реально нужно научиться программировать: C
Ищешь просветления: Scheme
Уйти в хандру: SQL
Для офиса Microsoft или людей без одной хромосомы: Microsoft Visual Basic
Для получения постоянной, заурядной, но хорошо оплачиваемой работы по созданию финансовых приложений в офисной загородке под лампами дневного света: Java
Тоже самое, но с аббревиатурами и списком сертификатов в своей подписи: C#
Для получения волшебного, забытого в детстве, ощущения избавления от мании величия: Objective C|С закрытой части быдло[[хабра]]}}
Но, однако,
{{Цитата|pre=1|Какой язык учить?
если реально нужно научиться программировать, но лень — си-шелл
если вы недоучили C и хотите искупить вину страданием  — шелл
если у вас испорчено большинство кнопок клавиатуры — брейнфак
если вы снисходительно относитесь к низшим по званию — ада
если вам платят по строчкам кода — фортран
если ваша пенсия по старости недостаточна — кобол
если ваши программы записаны на магнитофонные кассеты — фокал
если вы не доверяете компилятору перемножить два числа — язык ассемблера
наоборот делать всегда если — форт
если вы ностальгируете по модему без коррекции ошибок — перл
если у вас чудовищная память, вмещающая две тысячи ключевых слов — PL/1
если вы хотите это, и то, и чтобы сразу — эрланг
если процедуры вам удобно держать в массивах — алгол-68
если всё это для вас детский лепет — хаскелл|Там же в мудрых комментариях}}
== [[Алсо]], немного занудства ==
{{Q|w=70%|вы все быдло и задроты. уважающий себя девелопер должен знать несколько языков и хотя бы иметь представления о многих технологиях. И в зависимости от задачи выбирать на чем писать. И не делать фетиш из языка.|[[Феерическая расстановка точек]] из [[Обсуждение:Программист|смежного обсуждения]]}}
Если вы вдруг нашли язык, с которым работаете, в разделах «быдлокодерские/небыдлокодерские языки», не спешите огорчаться или радоваться. Сами по себе вышеуказанные языки ничего не пишут и получающийся код является исключительно плодом вашего собственного [[моск]]а и ручек. Другой вопрос, что некоторые языки проще для освоения и быстрого создания говна в промышленных масштабах, без значительных умственных и физических затрат, что делает их прекрасной средой для размножения быдлокодеров.
Для чего тогда сделано в этой статье вышеуказанное разделение? Just for lulz and holywars.
Также, закон Холивара применительно к языкам программирования звучит так:
{{Цитата|Ненависть к языку программирования обратно пропорциональна знанию этого языка, знанию и пониманию задач, для решения которых он был создан и умению применять его на практике.}}
Язык сам по себе ничего не решает, главное то, что находится в верхней голове, брат.
== Галерея ==
<gallery>
Файл:3_circle_venn_diagram_l.png|[[Концепции ежа|Эпилептики, шизоиды, аутисты]].
Файл:Rsz tongues-cleaner.png|Схема языков.
Файл:Map-time.png|Развитие языков по времени.
Файл:PL ega.png|Здесь и Фортран есть!
Файл:Punch-card.jpg|«Одна перфокарта — одно действие». Помнишь?
Файл:Programmers_see_each_other.jpg|Как видят языки различные программисты.
Файл:C++.png|Полиморфизм, инкапсуляция, наследование.
Файл:2008-07-01.png|[[Python]] и [[9600 бод и все-все-все|все-все-все]].
</gallery>
== См. также ==
[[Копипаста:Программирование]] — дамп коллективного бессознательного /pr/, содержит провокационные суждения и радикальные мнения о разных языках и технологиях. Особенно интересен обзор языков от функциональщика.
== Примечания ==
{{примечания}}
{{nav|SO|Языки программирования}}
[[Категория:Техника]]