Разделы сайта
Выбор редакции:
- Как разделить диск с установленной системой Windows без потери данных Разбить диск на разделы 7
- Почему издатели не могут редактировать все страницы
- Нет в биосе загрузки с флешки - как настроить?
- Промокоды пандао на баллы
- Опасный вирус-вымогатель массово распространяется в интернете
- Установка дополнительной оперативной памяти
- Что делать, если наушники не воспроизводят звук на ноутбуке
- Диоды справочник Выпрямительные диоды большой мощности 220в
- Восстановление работы Microsoft Word for Mac в OS X Yosemite Не запускается word на mac os sierra
- Как сбросить пароль администратора в Mac OS X без установочного диска
Реклама
Кто изобрел первый язык программирования. Первый язык программирования |
Давайте скажем прямо и коротко: правильного ответа на вопрос «какой язык программирования мне выбрать первым?» в природе не существует. Даже ответа класса «один из вот этих трёх». Не существует даже сейчас, в конкретный момент времени, когда я это пишу, 10 апреля 2017 года, 21:38 по киевскому времени - но ещё меньше смысла в попытках ответить на этот вопрос, заглядывая на месяц, полгода или год вперёд. Что существует - это несколько правильных вопросов , которые полезно задать себе. Это и будет первым твоим тестовым заданием для входа в профессию: хочешь ли ты отвечать на эти вопросы и вообще подумать и поисследовать предметную область, прежде чем принять решение? Если да - айда за мной. Некоторые предуведомленияВо-первых, одного языка недостаточно. Даже на первом году обучения. Как минимум несколько «специализированых» языков всё равно понадобятся (HTML, CSS, SQL, YAML, JSON, XML, Markdown - как минимум примеры разных синтаксисов , которые почти наверняка придётся читать, и с большой вероятностью - писать). Но и не только. Не-JS-программисту почти наверняка понадобится прочитать чуточку JS; JS-программисту - проверить реализацию алгоритма, описанную на Python; системному программисту - разобраться с чужим говно кодом на скриптовом языке. А на пути к «миддл»-уровню их придётся освоить полдюжины. А чтобы стать настоящим профессионалом - разбираться в парадигмах всякой фантастической дряни. Во-вторых, вряд ли ты всю жизнь будешь писать на одном языке. И вряд ли даже достаточно долго. Может, даже и месяца не будешь. На самой первой работе в 2003-м году я был нанят C++-алгоритмистом, но немножко поддерживал сайт на PHP, и ещё дописывал интерфейс к нашей библиотеке на Excel VBA (содрогается) . И ничего, нормально, чего только с джунами не бывает. Но и не только это - сменится «основной» язык в полюбившейся конторе, или наймёт другой работодатель по твоей любимой теме, изменятся воздушные потоки стартапной или энтерпрайзной культуры - и ВЖУХ - ты уже и не помнишь конструкций так тщательно выбранного «первого языка». Поэтому, в общем, не стоит относиться к этому выбору слишком серьёзно, как к выбору жены или дома (их тоже можно сменить - но всё же чуть сложнее). Начать, попробовать всякое и найти своё - намного более осмысленная стратегия чем несколько недель/месяцев/лет анализировать «а с чего же всё-тки начать». В-третьих, и самых главных (и вытекает из первых двух) - зачастую не «ты выбираешь язык», а язык выбирает тебя . Стоит по-настоящему заинтересоваться тем, что ты делаешь, выбрать это как важную часть своей жизни - а я обращаюсь именно к таким людям, не к тем кто надеется «по субботам подработать программингом» (их уже ничего не спасёт) - так вот, стоит сделать этот выбор, и дальше все советы «что выбрать» будут до лампочки. Интересная задача или перспективный работодатель нарисуются сами, язык на котором не получается сделать круто, отвалится сам собой, зато вырастет другой. Just stay tuned. Внимание, правильные вопросы!И всё же, чтобы с чего-то начать, девушка/юноша, обдумывающий житьё (то есть выбирающий, какому бы язык программирования выучиться для начала ), может спросить себя вот о чём: Зачем собираешься учиться? Очень важный вопрос, который стоит честно задать себе первым делом. Получить дополнительный инструмент для своей основной профессии (например, микробиологии или бухгалтерии)? Развлечься в свободное время? Помочь ребёнку в школе?.. Ну, окей, на mkdev мы по умолчанию предполагаем, что ты собрался работать программистом (хотя с удовольствием научим и микробиолога - знаешь ли ты, что Ruby у них ужасно популярен?). Но: ты уже твёрдо уверен, что хочешь найти профессию в IT как можно быстрее, или просто решил попробовать, твоё ли это? Во втором случае, возможно, стоит перепробовать десяток языков и подходов, чтобы понять что тебе нравится - или ничего, это тоже ок! Связанный вопрос: Сколько у тебя времени? Без чёткого дедлайна «через год я уже должен зарабатывать X долларов» - может быть разумно (и вполне приятно) сразу планировать себе «вузовского класса» обучение: то есть составить список из нескольких классических языков - Scheme, Haskell, Prolog, нескольких промышленных (Java, Ruby, JS), пары супермодных (Rust, Pony, Elixir)... А вопрос «на чём именно писать» как-то сам вырастет. Но если хочется «настоящую профессию и побыстрее», то... Знаешь ли точно, в какой области хочешь работать? «Только разработка игр, ничего другое не прёт», «Искусственный интеллект - это то, о чём я со школы мечтал», «Хочется поближе к железу быть, всяких роботов и сенсоры программировать» или даже «Да вот друзья собираются делать стартап про сериалы с бигдатой» - хорошие варианты ответа на этот вопрос. Но ты совершенно не обязан их иметь. «А покажите, пожалуйста, весь ассортимент» - тоже хороший ответ. И «пока попробую у дяди в фирме бухгалтеру помочь, а там хочется чего-то поинтереснее» - тоже норм. Виктор поможет тебе сделать первые шаги в программировании, научит основам, и языку Ruby! Дальше: А что бы хотел делать? Кажется, это тот же вопрос, что выше? А нет. Закрой глаза, и представь, как выглядит твой идеальный рабочий процесс? Экспериментировать с интерфейсом, чтобы пользователь оказался счастлив, даже не подозревая сколько сил вложено? Выдумать новый алгоритм столкновения частиц для физического движка игры и три года доводить до ума? Быстро написать много кода, объединив десяток известных компонентов в новую стартапную идею, пока никто её не придумал? Разобраться со сложной чужой штукой, чтобы заставить её работать в новой среде? - есть огромное количество вариантов, и некоторые даже и уводят вдаль от профессии «просто программиста» - в область devops, или UI-специалистов, или аналитиков данных... Посвяти хотя бы 20 минут этой медитации, результат может быть Совсем Неожиданным. Например (в связке с предыдущим вопросом) даже если ты уверен, что хочешь участвовать в разработке игр, понять что ты хочешь отлаживать новые уровни, или что тебя действительно развлечёт проработка физически точных алгоритмов столкновений, или - создание игрового сервера который выдержит стотыщмиллионов соединений - это всё же сильно разные направления для обучения и саморазвития. И только ответив (или сознательно решив отложить ответ) на все вопросы выше, имеет смысл задать прагматический вопрос: Какие языки сейчас активно используются? - в той области, теме и среде, что тебе интересна. И выбрать штуки три (именно так!) для освоения в ближайшее время. Из чего именно выбирать - придётся разбираться на месте, хотя ниже мы и приводим короткий обзор некоторых из популярных сегодня языков. Некоторые ответыСлышишь странный тихий звук? Это устаревают и покрываются ржавчиной перечисленные ниже «ответы». Если ты читаешь эту статью через полгода после её написания, скорее всего раздел «ответы» уже слегка устарел (если не произошло какое-то катастрофическое событие, в результате которого устарело вообще всё); читаешь через год - устарел основательно. Читаешь через 5 лет - ...а чёрт его знает. В нашей области всё меняется каждый день, но зачастую остаётся довольно стабильным в более долгой перспективе. Ну, в общем, понятно - читай осторожно. Ниже - субъективные, короткие и неполные сведения о воображаемом топ-15 нынешних языков программирования (в алфавитном порядке).
C (100? - похоже, поисковый движок не справился) - единственный живой дедушка программирования, притом живее всех живых. Всё системное (с поправками на Rust и Go, про которые ниже), программирование всяких микроконтроллеров и встроенных устройств, всяких драйверов для дронов и прочих mindblowing штук - это по-прежнему C. Ещё он «базовый» язык для сшивания или ускорения других языков и библиотек (какая-нибудь научная хрень, которая скажем изначально писалась на Python, потом для скорости переписывается на C, потом к этой C-имплементации появляются обёртки на Ruby, Julia и Haskell... так и живём). Короче, вряд ли первый язык, но обязательный для изучения - совершенно точно. К тому же, вовсе не стоит на месте, и свежие стандарты вполне свежи и хороши; C++ (144) - уродливый (по мнению одних) или восхитительно-сложный (по мнению других) племянник C. Объектно-ориентированный, метапрограммируемый, чудовищно переусложнённый, долго компилируемый... короче, C++ - это моя первая любовь среди языков программирования. Сейчас используется, насколько можно судить, для разработки игр, некоторых десктопных систем и немношк везде где можно C, но нужно более сложный код (потому что компилятор gcc доступен на всех примерно ОС, и компилирует и то и это); C# (414) - один из немногих языков, программисты на котором продали душу диаволу почти намертво привязаны к экосистеме Microsoft (которая, будем честны - особенно для разработчиков - довольно впечатляюще развита). Области применения - игры, либо Сложный Дорогой Enterprise софт. Сам язык, по состоянию на текущий момент, довольно красивый и прогрессивный. И, в общем, как почти все не новые и прагматичные языки общего назначения, имеет в себе немношк функционального, мношк ОО, что-то из метапрограммирования и т.д.; Clojure (6) - такой, волшебный единорог от языков программирования, работает на JVM (почитай про Java ниже), наследник Lisp, функциональный язык. Его диалект ClojureScript компилится в JS (тоже читай ниже, почему это важно). Используется в «умных» стартапах и в продакшене Очень Серьёзных Компаний. Выбрать можно только по Большой Любви (но он клёвый); Erlang+Elixir (5+10) - Erlang - это язык и платформа, особо популярный для создания телекоммуникационных (раньше) и вообще высоконагруженных распределённых (сейчас) приложений. Elixir - язык, работающий на той же платформе, но менее инопланетянский чем Erlang (впрочем, «основной» язык платформы всё равно придётся хоть немного понимать, см. ниже рассуждение про Java). На сегодняшний день всё это немножко отдаёт «элитарностью», но надёжно укоренилось в некоторых областях (скажем, в банковских системах) - и ужасно интересно; ES (JavaScript, CoffeeScript, TypeScript и т.д.) (788+10+64+...) - очевидный фаворит на текущий момент, ES/JS/... - по сути, не язык, а семейство языков. На них пишут (несколькими разными способами) веб-интерфейсы и мобильные интерфейсы, и ещё (несколькими другими образами) серверный и админский софт, и черта лысого. Что именно сегодня называется «языком JavaScript» определить довольно тяжело: нанявшись на работу «JavaScript-программистом», ты, в зависимости от везения, можешь оказаться человеком, который поддерживает древний интерфейс банковской системы, которая кровь-из-носу должна работать под любым браузером; или частью модной команды пишущей на строго-типизированном TypeScript сложную визуализацию научных данных; или вдруг поучаствовать в разработке интерфейса будущего на «следующей» версии языка, которая сложным образом компилируется в нечто работающее на старой нокии... целый мир, который одним абзацем не опишешь. Но «свой первый язык» в этой области искать довольно опасно; Есть ещё третье мнение и рассказ о том, на чём основывается выбор языка программирования в реальной разработке Go (78) - простой как палка и эффективный язык, сделанный гуглом, в основном для случаев «сделать быстрый, тупой, надёжный код». Полёт мысли в нём сразу обрубается грубостью языка. Зато эффективный - не передать как; Java (466) - особый случай. Java это и язык, и платформа (JVM) - и в этой платформе работает, например, смешной и клёвый Clojure, научно-заумная Scala, и JRuby (тот же Ruby, но для JVM). Да и сама Java сегодня - вовсе не тот «ограниченный язык для корпоративных рабов», как ей когда-то создали репутацию. Учитывая невероятное количество мощных библиотек, выбор языков работающих на этой платформе и её универсальность, некоторое представление о Java должен иметь любой уважающий себя программист. А ещё Java - единственный (с некоторыми оговорками) язык разработки под Android; PHP (431) - старинный оккупант веба с чудовищной репутацией. В современном изводе от большей части адского наследия избавился, и вообще вполне приличный современный ОО-язык. Зато по старой памяти составляет Очень значительную часть инфраструктуры интернетов. Нанявшись PHP-шником можно с равной вероятностью попасть в аккуратный проект с Архитектурой и Тестами - а можно в поддержку безумной доисторической системы с неструктурированными if/else на 2000 строк; Python (303) - когдатошний «конкурент» Ruby в качестве модного языка для веба и стартапов, сейчас язык в основном для поддержки сложных и взрослых web-приложений, которые на нём и выросли - а больше для научных/bigdata исследований, местами даже забарывает R (см. ниже); R (16) - язык как бы общего назначения, но используют только учёные/бигдата. Довольно адовый синтаксис (потому што старый), зато куча крутых пакетов для него есть, и исследований на нём написанных. Чуть ли не лучший в мире, выходит, язык для удовлетворения любопытства ; Ruby (124) - ещё несколько лет назад «модный» и «хипстерский», сегодня - просто один из мейнстримных языков. Очень выразительный и лаконичный, немного «магический», довольно медленный. Используется в основном для веб-разработки. На сегодня это язык который легко с первого взгляда полюбить или возненавидеть, и довольно беспроблемно найти работу. Ещё Ruby сегодня любят админы и тестеры, на нём есть клёвые инструменты для тех и других; Rust (3) - один из довольно новых игроков. Быстрый и сложный. Обещает заменить C в области системного программирования, но пока что, кажется, учить его имеет смысл скорее «на будущее»; Scala (60) - «умный младший брат» на платформе Java: современный, сложный, функциональный, ужасно любимый всякой бизнес-аналитикой и от того стремительной набирающий популярность; Swift / Objective-C (58+15) - единственный выбор для разработки под iOS. Ориентироваться, конечно, стоит только на Swift (Objective-C уже только для поддержки старых приложений) - и он, в общем, не замечателен ни какими-то особыми фичами, ни какими-то особыми глупостями, приличный современный язык, сравнимый с C# и Java. Рекомендовать его как первый можно разве что для тех, кто решил намертво связать свою судьбу с Apple, поскольку применимость его (сознательно) ограничена. Как-то, в общем, вот так. Кое-что не попало в этот список - например, Perl, разработчики на котором вполне востребованы, но сам язык находится в странном состоянии и порекомендовать его как «первый» язык не поворачивается. Или, например, Lua - тоже популярный, но как язык мелких скриптов для других систем (в основном, игр), быть «просто Lua-программистом» вроде бы довольно бессмысленно. Ээээ я всё понял. А выбрать-то что?..Ну, это. Бери всё. (смайлик) Нет, правда. На самом деле, разумная стратегия (если, конечно, ты собираешься провести в нашей профессии значительную часть времени, а не «полгодика подзаработать») - прикинуть, какие несколько языков тебе интересно хотя бы посмотреть в следующие месяцы. Выбирать их можно как цвета в инструкциях для дизайнеров - можно «из близких», можно «из противоположных», можно «из взаимо-дополняющих»... Твоя цель на первых этапах - чтобы было интересно, и чтобы начало получаться. А проложить путь к этой цели можешь только ты, и скорее всего - не с первого раза. Такие дела. Короче...В нашей области умение задавать вопросы всегда важнее знания правильных ответов. Потому что ответы - меняются. А вопросы нужны каждый день. Интересуйся, учись всему понемножку, присматривайся к миру. Остальное как-то само. Начало развитияЯзык ассемблераВ случае, когда нужно иметь эффективную программу, вместо машинных языков используются близкие к ним машинно-ориентированные языки - ассемблеры . Люди используют мнемонические команды взамен машинных команд. Но даже работа с ассемблером достаточно сложна и требует специальной подготовки. Например, для процессора Zilog Z80 машинная команда 00000101 предписывает процессору уменьшить на единицу свой регистр B . На языке ассемблера это же будет записано как DEC B . Структурное программированиеСледующий шаг был сделан в 1954 году, когда был создан первый язык высокого уровня - Фортран (англ. FORTRAN - FORmula TRANslator ). Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них, можно писать программы до нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот язык становился нечитаемым и трудно управляемым, когда дело касалось больших программ. Решение этой проблемы пришло после изобретения языков структурного программирования (англ. structured programming language ), таких как Алгол (1958), Паскаль (1970), Си (1972). Структурное программирование предполагает точно обозначенные управляющие структуры, программные блоки , отсутствие инструкций безусловного перехода (GOTO), автономные подпрограммы, поддержка рекурсии и локальных переменных. Суть такого подхода заключается в возможности разбиения программы на составляющие элементы. Также создавались функциональные (аппликативные) языки (Пример: Lisp - англ. LISt Processing , 1958) и логические языки (пример: Prolog - англ. PROgramming in LOGic , 1972). Хотя структурное программирование, при его использовании, дало выдающиеся результаты, даже оно оказывалось несостоятельным тогда, когда программа достигала определенной длины. Для того чтобы написать более сложную (и длинную) программу, нужен был новый подход к программированию. ООПВ итоге в конце 1970-х и начале 1980-х были разработаны принципы объектно-ориентированного программирования . ООП сочетает лучшие принципы структурного программирования с новыми мощными концепциями, базовые из которых называются инкапсуляцией, полиморфизмом и наследованием. Примером объектно-ориентированных языков являются: Object Pascal , C++ , ООП позволяет оптимально организовывать программы, разбивая проблему на составные части, и работая с каждой по отдельности. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути, описывает часть мира, относящуюся к этой задаче. Ссылки
Wikimedia Foundation . 2010 . Смотреть что такое "Краткая история развития языков программирования" в других словарях:Язык программирования формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор… … Википедия Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия - (Айкакан Советакан Социалистакан Анрапетутюн) Армения (Айастан Страна армян). I. Общие сведения Армянская ССР образована 29 ноября 1920. С 12 марта 1922 по 5 декабря 1936 входила в состав Закавказской федерации (См.… … - (Летувос Тарибу Социалистине Республика) Литва (Летува). I. Общие сведения Литовская ССР образована 21 июля 1940. С 3 августа 1940 в составе СССР. Расположена на З. Европейской части СССР. Граничит на С. с… … Большая советская энциклопедия Образец Бурана ОК ГЛИ (БТС 002) для тестирования в атмосфере. Авиа космический салон МАКС, 1999 … Википедия Изначально программирование имело крайне примитивный вид и практически не имело отличий от упорядоченного бинарного кода с формализованным подходом. По сути, при зарождении сферы отличий языка программирования от компьютерного кода было немного. Очевидных и естественных удобств для программиста не существовало, он обязан был обладать знаниями числовых кодов для каждой команды машины. Даже распределение памяти для выполнения команд ложилось на специалиста. Для упрощения обращения с ЭВМ люди стали активно разрабатывать языки, одним из первых стал Ассемблер . Для отображения переменных стали использоваться символьные наименования. Вместо числовых операций человеку достаточно знать мнемонические имена, их запоминание в разы облегчалось. Уже на этом этапе языки программирования стали более приближёнными к понятному для человека языку. К первооткрывателям среди языков программирования относится Фортран - это сокращённое сочетание 2 слов: Formula и Translation . Создан уже в середине 50-х. До сих пор язык используется благодаря лёгкости и простоте написания, а также развитой системе библиотек для Фортран. Чаще используется для научных и инженерных подсчётов, а также активно применяется в физичке и остальных науках, связанных с математикой. Узконаправленные языкиИз-за увеличения сфер использования ЭВМ появились и другие языки для отдельных разработок в новых сферах:
Уже в 1968 г. был впервые запущен конкурс, в котором главным местом являлось звание лучшего языка программирования для начала карьерного пути. Данные планировалось использовать для обучения специалистов. Победу одержал Алгол-68 , но он остался малоизвестным, о популярности и речь не идёт. Специально для участия в конкурсе был создан Паскаль , разработчиком являлся Никлаус Вирт. Язык весьма доступный, удобный и объединяет немало мощных инструментов для структурирования информации. Несмотря на изначальную разработку с целью обучения студентов, Паскаль получил широкое распространение и активно развивался. Даже сегодня он является одним из лучших и известнейших языков программирования. Для обучения детей в школах был создан Лого , у истоков стоял Самуэль Пайперт . Достоинства - простота работы и обилие возможностей. В школах стал преподаваться простой язык Бейсик , он легко взаимодействует с ЭВМ в качестве прямого диалога. Время никак не повлияло на эту сферу, до сих пор Бейсик является самым простым языком для начала изучения большинства распространённых направлений программирования. Создание языка CРазвитие возможностей вычислительного оборудования привело к необходимости написания ёмких программ для управления ЭВМ . Это место по праву занял язык Си, который стал активно использоваться в 70-х годах. Явным достоинством языка является его универсальность. Он превосходит Паскаль благодаря наличию вложенных возможностей сотрудничества с разными машинными командами и подходящими частями памяти. Си используется повсеместно в качестве инструментального языка для написания операционных платформ, трансляционных устройств, баз данных и остальных прикладных, системных задач. не имеет чёткой направленности, он подходит для многих задач из-за эффективности, лёгкости переноса и экономного потребления ресурсов. Чаще всего Си по скорости обработки данных сопоставим с Ассемблером , производительность программ на обоих языках будет приблизительно равной. В небольшом языке заложена немалая мощность. Пролог и АдаВнедрение функционального программирования неизбежно повлекло создание Пролога. Задачи языка сводились к анализу и взаимодействию с человеческими языками. Логика приложения формальна, она оптимально подходит для автоматического решения задач и теорем. Только в 80-х годах был разработан язык Ада . Он расширяет классическое понимание и свойства языков того периода. Ада могла решать задачи в режиме реального времени и моделировать независимые решения. КлассификацияСегодня разработаны классификации языков по уровню работы, это распределение самое распространённое. Выделяют 3 основных уровня:
Согласно другой классификации языки делятся на:
Направления развитияИнформатика в современном мире развивается в 3 ключевых направлениях:
Существуют языки для написания сценариев, известными являются Rexx, Tcl, Perl и Python , а также языки оболочек систем Unix. В них разрабатывается индивидуальный стиль написания кода, который отличается от известного принципа системного уровня программирования. Они не используются для создания приложений на нижнем уровне, скорее для комбинирования различных компонентов из разных языков, из которых составляется набор отдельных функций. Активнее всего стали развиваться по мере распространения интернета, от чего стали широко применяться языки сценариев. Для создания сценариев чаще всего применяется Perl , а для Web-части пользуется популярностью JavaScript . Каспера Бейера «A Brief Totally Accurate History Of Programming Languages». 1800Жозеф Мари Жаккар учит ткацкий станок читать перфокарты и таким образом создает первое многопоточное устройство обработки данных. Его изобретение было воспринято в штыки ткачами шелка, которые предвидели рождение Skynet. 1842Ада Лавлейс заскучала, занимаясь своими благородными занятиями. Она набросала в записной книжке то, что позже станет известно как первая опубликованная компьютерная программа. Единственное неудобство было в том, что компьютер тогда еще не изобрели. 1936Алан Тьюринг изобретает всё, но это не оправдывает его в глазах британского суда, который приговаривает его к химической кастрации. Позже королева его помиловала, но он, к сожалению, был уже давно мертв к тому времени. 1957Джон Бэкус создает FORTRAN, первый язык, который использовали настоящие программисты. 1959Грейс Хоппер изобретает первый язык программирования, ориентированный на промышленное производство, и называет его “общий бизнес-ориентированный язык” (“common business-oriented language”), кратко - COBOL. 1964Джон Джордж Кемени и Томас Курц решили, что программирование - слишком сложное занятие, а потому нужно вернуться к основам. Они называют свой язык программирования BASIC. 1970Никлаус Вирт разрабатывает Pascal. Это один из нескольких языков, в создании которых принял участи е Вирт: ему нравилось создавать языки. Он также сформулировал Закон Вирта , делающий бессмысленным закон Мура , поскольку разработчики будут п и сать такие раздутые программы, что за ними даже мейнфреймы не угонятся. Позже это будет доказано путем изобретения Electron.js. 1972Деннису Ритчи стало скучно на работе в Bell Labs и он решил создать С с его фигурными скобками, и этот проект получил огромный успех. Впоследствии он добавил ошибки сегментации и другие дружественные к разработчику возможности для повышения производительности. Поскольку у него еще оставалось пару часов, он со своими приятелями в Bell Labs решил создать пример программы для демонстрации языка С. Так они создали операционную систему под названием Unix. 1980Алан Кёртис Кэй изобретает объектно-ориентированное программирование и называет его Smalltalk. В Smalltalk все является объектом, даже объект это объект. 1987Ларри Уолл со своим опытом работы в религиозной сфере становится проповедником, а сво е й доктриной делает Perl. 1983Жан Давид Ишбиа заметил, что программа Ады Лавлейс никогда так и не запускалась, и решил создать язык и назвать его в ее честь (Ada). Но язык тоже не запускается. 1986Брэд Кокс и Том Лав решили сделать нечитаемую версию С, основанную на Smalltalk. Они назвали ее Objective-C, но никто не в силах понять ее синтаксис. 1983Бьёрн Страуструп отправляется назад в будущее и замечает, что язык С требует слишком мало времени для компиляции. Он добавляет к языку каждую фичу, какую только может придумать, и называет его С++. Программисты по всему миру соглашаются с этим, поскольку у них появляется гениальное оправдание для просмотра видео с котиками и чтения xkcd на работе. 1991Гвидо ван Россуму не нравятся фигурные скобки, поэтому он изобретает . При выборе синтаксиса языка автор вдохновлялся Монти Пайтоном и его летающим цирком. 1993Роберту Иерузалимски с друзьями решили, что им нужен локальный, бразильский язык сценариев. В о время локализации была сделана ошибка, которая заставила индексы начинать отсчет с 1 вместо 0. Язык назвал и Lua. 1994Расмус Лердорф создает движок шаблонов для собственных CGI-сценариев своей домашней страницы и выпускает его дот-файлы в интернет. Мир решает повсеместно использовать эти дот-файлы, а Расмус в неистовстве добавляет в них некоторые дополнительные привязки к базам данных и называет результат РНР. 1995Юкихиро Мацумото был не слишком счастлив и заметил, что другие программисты тоже несчастны. Он создает Ruby, чтобы сделать их счастливыми. После создания Ruby “Мац” счастлив, сообщество Ruby счастливо, все счастливы. 1995Брендан Эйх берет выходной, чтобы разработать язык, с помощью которого будет управляться каждый веб-браузер в мире и в конечном итоге Skynet. Сначала он пошел в Netscape и сказал, что язык называется LiveScript, но за время ревью кода приобрела популярность Java, поэтому было решено использовать фигурные скобки и переименовать язык в JavaScript. Оказалось, что Java это торговая марка, что могло привести к проблемам, поэтому JavaScript позже был переименован в , но его все равно называют по-старому. 1996Джеймс Гослинг изобретает Java, первый по-настоящему слишком многословный объектно-ориентированный язык программирования, где шаблоны проектирования превалируют над прагматизмом. 2001Андерс Хейлсберг заново изобретает Java и называет этот язык C#, потому что программирование на C кажется более крутым, чем на Java. Новая версия Java всем нравится, поскольку совершенно не похожа на Java. 2005Давид Хейнемейер Ханссон создает веб-фреймворк, позже названный Ruby on Rails. Люди забывают, что это были две разные вещи. 2006Джон Резиг пишет вспомогательную библиотеку для JavaScript. Все считают, что это язык, и делают себе карьеру на копипасте кода jQuery из интернета. 2009Кен Томпсон и Роб Пайк решают создать язык, похожий на С, но более «товарный», с большим количеством инструментов для обеспечения безопасности и с Гоферами (Гофер - грызун, персонаж историй про Винни-Пуха, — прим. перев.) в качестве талисманов. Они называют этот язык Go, решают сделать его код открытым и начинают продавать брендовые наколенники и шлемы с Гофером. 2010Грэйдон Хор тоже хочет создать язык, подобный С. Он называет его Rust. Все требуют, чтобы каждый кусочек их программ немедленно переписывался на Rust. Грэйдону хочется чего-то более блестящего и он начинает работать над Swift для Apple. 2012Андерс Хейлсберг хочет писать С# в веб-браузерах. Он создает TypeScript, который по сути является JavaScript с большим количеством Java. 2013Джереми Ашкенас хочет быть таким же счастливым, как Ruby-разработчики, поэтому создает CoffeeScript, который транслируется в JavaScript, но выглядит скорее как Ruby. Джереми так и не стал таким же по-настоящему счастливым, как Матц и Ruby-разработчики. 2014Крис Латнер создает Swift, главная цель которого – не быть Objective-C. В конечном итоге этот язык напоминает Java. Позволю себе выделить некоторую общую тенденцию в развитии языков программирования. Проницательный читатель, наверное, уже давно догадался, о чем я собираюсь сказать. Языки развиваются в сторону все большей и большей абстракции. И это сопровождается падением эффективности. Вопрос: а стоит ли этого абстракция? Ответ: стоит. Стоит, так как повышение уровня абстракции влечет за собой повышение уровня надежности программирования. С низкой эффективностью можно бороться путем создания более быстрых компьютеров. Если требования к памяти слишком высоки, можно увеличить ее объем. Это, конечно, требует времени и средств, но это решаемо. А вот с ошибками в программах можно бороться только одним способом: их надо исправлять. А еще лучше - не совершать. А еще лучше максимально затруднить их совершение. И именно на это направлены все исследования в области языков программирования. А с потерей эффективности придется смириться. Целью данного обзора была попытка дать читателю представление о всем многообразии существующих языков программирования. Среди программистов часто бытует мнение о «всеобщей применимости» того или иного языка (C, C++, Pascal и т.п.). Это мнение возникает по нескольким причинам: недостаток информации, привычка, инертность мышления. Я попытался слегка компенсировать первый фактор. По поводу остальных могу лишь сказать, что настоящий профессионал должен постоянно стремиться повышать свои профессиональную квалификацию. А для этого нужно не бояться экспериментировать. Ну и что, что все вокруг пишут на C/С++/VB/Pascal/Perl/Java/… (нужное подчеркнуть)? А почему бы не попробовать что-нибудь новенькое? А вдруг это окажется эффективнее? Разумеется, прежде чем приниматься использовать новый язык, нужно внимательно изучить все его особенности, включая наличии эффективной реализации, возможности взаимодействия с существующими модулями и т.п., и только после этого принимать решение. Разумеется, всегда есть риск пойти не тем путем, но… Не ошибается лишь тот, кто ничего не делает. И еще. Мне доводилось слышать, а порой и участвовать в дискуссиях вида «язык A лучше, чем язык B». Я надеюсь, что, прочитав этот обзор, многие убедятся в бессмысленности таких споров. Максимум, о чем может идти речь - это о преимуществах одного языка над другим при решении той или иной задачи в тех или иных условиях. Вот здесь действительно иногда есть о чем поспорить. И решение подчас отнюдь не очевидно. Однако же спорить «вообще» - очевидная глупость. Эта статья задумывалась как ответ тем, кто кричит «язык X MUST DIE». Надеюсь, что ответ получился достаточно адекватным и убедительным. Надеюсь также, что статья имеет, помимо полемической, и познавательную ценность. |
Читайте: |
---|
Популярное:
Контент менеджер — обязанности, зарплата, обучение Недостатки и преимущества работы контент-специалиста |
Новое
- Почему издатели не могут редактировать все страницы
- Нет в биосе загрузки с флешки - как настроить?
- Промокоды пандао на баллы
- Опасный вирус-вымогатель массово распространяется в интернете
- Установка дополнительной оперативной памяти
- Что делать, если наушники не воспроизводят звук на ноутбуке
- Диоды справочник Выпрямительные диоды большой мощности 220в
- Восстановление работы Microsoft Word for Mac в OS X Yosemite Не запускается word на mac os sierra
- Как сбросить пароль администратора в Mac OS X без установочного диска
- Настройка Shadow Defender