15 самых популярных языков программирования по версии GitHub. Язык программирования служит в основном для


15 самых популярных языков программирования по версии GitHub / Хабр

Разработчики программного обеспечения пользуются огромным спросом в настоящее время. В некоторых компаниях даже стажеры-программисты получают высокую зарплату. ИТ-компании борются друг с другом за талантливые кадры.

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

Однако некоторые игроки ИТ-рынка оказались предприимчивыми и создали проекты, посвященные ранжированию и трендам. К примеру, на этой неделе GitHub опубликовал собственный рейтинг 15 самых популярных языков программирования. Конечно же, популярность определялась по количеству pull-запросов на GitHub за последний год.

В настоящее время в GitHub представлены 5.8 миллиона активных пользователей, 331 тысяча организаций и 19.4 миллиона репозиториев.

No. 15 — TypeScript:

Язык своим появлением обязан компании Microsoft. Он создан как средство разработки веб-приложений, расширяющее возможности JavaScript. Основным разработчиком языка TypeScript является Андерс Хейлсберг который ранее участвовал в создании Turbo Pascal, Delphi и C#. В ближайшее время выйдет релиз TypeScript 2.0.

No. 14 — Swift:

Язык собственного приготовления – от компании Apple. Он был создан для iPhone-приложений в 2014 году. Однако Swift за столь короткий срок сумел завоевать популярность.

Такси-сервис Lyft переписал свое iPhone-приложение на этом языке и сообщил об «огромном скачке» в производительности.

А совсем недавно вышло новое приложение Swift Playgrounds – самый простой способ познакомиться с языком Swift. По крайней мере, в этом уверен Крейг Федериги, старший вице-президент компании Apple по программному обеспечению.

No. 13 — Scala:

Этот язык программирования вышел в свет в 2001 году. Его подхватили такие крупные компании, как Airbnb и Apple. По их мнению, на нем проще и быстрее писать приложения для их нужд, нежели на набившем оскомину языке Java.

Изначально Scala, поддерживающий объектно-ориентированную и функциональную парадигмы, был создан с расчетом на трансляцию в байт-код Java и .NET. Со временем также появился транслятор Scala в код JavaScript — Scala.js. Однако в мае 2016 года стало известно, что в рамках проекта Scala Native создается компилятор, обещающий ускорить выполнение приложений, написанных на этом языке.

No. 12 — Objective-C:

Изначальный С так понравился людям, что у него появились последователи. В частности, некоторые из них вдохновились на создание Objective-C, который предстал перед публикой в 1983 году. Конечно, в него были добавлены новые идеи и элементы языка Smalltalk, но буква С не зря венчает его название.

Особенно распространился Objective-C среди разработчиков под платформы Apple. Пока он удерживает эти позиции, но Swift грозится потеснить потомка С в скором времени.

No. 11 — Shell:

Это гадкий утенок среди прочих участников списка: Shell – не столько язык, сколько интерпретатор команд для выполнения тех или действий в операционных системах семейства UNIX. Его скрипты используются, например, для автоматизации обновления ПО. Он содержит стандартные конструкции для циклов, ветвления, объявления функций и так далее.

No. 10 — Go:

Был разработан внутри компании Google. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон. Официально язык был представлен в ноябре 2009 года.

Язык Go разрабатывался как язык системного программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться как попытка создать замену языку Си.

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

No. 9 — C:

Это язык, которому теперь пытаются найти замену. Язык Си был разработан Деннисом Ритчи в 1972 году в Bell Labs. Он является предшественником таких языков программирования как С++, Java, C#, JavaScript и Perl. По этой причине изучение этого языка ведет к понимаю и других языков. Язык С используется для разработки низкоуровневых приложений, так как считается ближе всего к аппаратному, уступая только ассемблеру.

No. 8 — C#:

С# принадлежит семье языков программирования Microsoft и был разработан в 2000 году и стал частью первого релиза .NET framework. Язык С# сочетает в себе надежность С++ с дополнительными возможностями Java. Поэтому если вы хорошо знаете Java, можно легко переключиться на С# и наоборот.

Язык С# позволяет разрабатывать практически любые приложения, которые связаны с Visual Studio IDE.

No. 7 — CSS:

Cascading Style Sheets (каскадные таблицы стилей) — формальный язык описания внешнего вида документа, написанного с использованием языка разметки. Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам.

Указан рост популярности языка в процентах. Его место в рейтинге определяется числом pull-запросов пользователей. Рейтинг отражает популярность применения языков программирования в репозиториях.

No. 6 — C++:

Языку Си не хватало работы с объектами. Чтобы решить проблему, в 1986 году был разработан С++, который является одним из самых распространенных языков в мире. Google Chrome, Mozilla Firefox, Winamp и линейка продуктов Adobe были разработаны с помощью С++. Кроме того, некоторые современные игры и операционные системы были разработаны на С++ из-за быстрого процессинга и компиляции. Кроме того, разработчики С++ имеют огромный спрос на рынке труда.

No. 5 — PHP:

PHP — это один из наиболее широко используемых языков для разработки динамических веб сайтов. PHP был разработан в 1995 году и является языком сценариев на стороне сервера, что означает, что PHP код обрабатывается на сервера, а конечный результат пользователь получает в виде обычного HTML.

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

Однако недоброжелатели не дремлют: Джефф Этвуд. основатель Stack Exchange, как-то писал, что PHP – это даже не язык программирования, это куча не связанных друг с другом фрагментов функциональности.

No. 4 — Ruby:

Ruby — простой и читаемый язык программирования, ориентированный на разработку веб приложений. Разработанный Юкихиро Мацумто в 1995 году, фреймворк Ruby использовался для разработки Github, Scribd, Yammer, Shopify и Groupon. Ruby сочетает в себе некоторые возможности Lisp, Pearl и Eiffel. Ruby имеет хороший рынок труда и разработчики получают достойно.

No. 3 — Python:

Python — это другой высокоуровневый язык программирования и часто считается самым легким языком, благодаря своей простоте, читаемости и синтаксису. Python был разработан Гвидо Ван Россумом в 1991 году. Python не использовался так широко в прошлом, однако стал особенно популярным за последние годы благодаря инвестициям Google. В настоящее время некоторые весьма известные и надежные сайты работают на python, особенно pinterest.com, instagram.com и rdio.com. Как и PHP, Python можно использовать для разработки веб приложений.

No. 2 — Java:

Java был разработан Джеймсом Гослингом в 1990 году в компании Sun Microsystems. Java дополнительно увеличивает возможности языка С++. Особенность Java заключается в том, что это первый чисто объектно-ориентированный язык программирования. Java был разработан по принципу WORA (Write Once Run Anywhere или «написав код однажды, вы запустите его везде»). Речь идет про переносимость Java. Необходимо скомпилировать исходный код на Java всего лишь раз, а затем запустить на любой машине с установленным JVM (Java Virtual Machine) и затем использовать.

No. 1 — JavaScript:

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

Указан рост популярности языка в процентах. Его место в рейтинге определяется числом pull-запросов пользователей. Рейтинг отражает популярность применения языков программирования в репозиториях.

По данным GitHub, JavaScript, C# и Go показали двойной рост аудитории. А аудитория Swift и TypeScript выросла в 3,5 раза.
Индекс TIOBE распределил места немного по-другому: на первом месте оказался языка Java, далее следуют С, С++, С# и Python. А лидер рейтинга GitHub здесь занимает только 6-е место.

habr.com

Учебный курс "Информатика"

  • Моделирование и формализация
  • Алгоритм и его свойства
  • Способы записи алгоритмов
  • Линейные алгоритмы (следование)
  • Ветвления в алгоритмах
  • Циклическая форма организации действий
  • Замкнутые и разомкнутые системы управления
  • Языки программирования
  • Вопросы и упражнения
  • Презентация "Язык Pascal. Алфавит. Величины"
  • Презентация "Объектно-ориентированное программирование"
  •      Человеку в течение всей своей жизни приходится решать много задач, и всё же часто ему хочется поручить выполнение своих работ кому-нибудь другому, например, машине. ЭВМ - это электронно-вычислительная машина, и её услугами человек пользуется уже не одно десятилетие. Единственное, что необходимо сделать человеку, чтобы заставить ЭВМ трудиться - это составить программу на понятном для этой машины языке. Такие языки называются языками программирования. Они служат для написания программ для ЭВМ.     Работы над созданием языков программирования начались в 50-х годах. Интересы потребителей и характер использования вычислительных машин того времени привели к тому, что созданные языки программирования были тесно связаны с математическими и научными вычислениями, т.е. они были проблемно-ориентированными.     В 1954 году в США был начат проект языка программирования Фортран, а чуть позже в Европе был начат Алгол. Название Фортран - это сокращение слов «ФОРмула - ТРАНслятор», т.е. преобразование в машинный код математических формул. Алгол, хоть и происходит от английских слов Algorithmic Language (алгоритмический язык), также является проблемно-ориентированным и в основном для выполнения вычислений. Велись нескончаемые споры о том, какой из этих двух языков лучше. Основной недостаток Фортрана - это то, что он относительно сложен для многих пользователей. Этот язык значительно усложняет решение простых задач. Поэтому на базе Фортрана был создан более простой язык программирования Бейсик, ставший сейчас очень популярным языком общения человека и ЭВМ.     Язык Бейсик разработан в 1965 г. в Дартмунтском колледже в США Джоном Кетмени. Название Бейсик (BASIC) несёт тройную смысловую нагрузку. Во-первых, BASIC происходит от сокращения английской фразы «Beginner s All- Purpose Symbolic Instruction Code»,т.е. многоцелевой язык символических инструкций для начинающих. Во-вторых, так назывался разговорный язык, который был разработан в прошлом веке специально для туземного населения колоний Великобритании. Наконец, в-третьих, BASIC означает базовый.     Язык Алгол также отличается удобством, элементарностью, а главное - обозримостью вычислительных программ и алгоритмов. Фундаментальные идеи Алгола стали основополагающими для многих языков программирования высокого уровня.     И Фортран, и Алгол являются языками программирования, ориентированными в основном для вычислений. Но компьютеры используются для решения не только вычислительных задач. Для удовлетворения потребностей в решении экономических и коммерческих задач был создан язык Кобол. Он не «математичен», поскольку разрабатывался так, чтобы походить на обычный, хотя и сильно сокращённый английский язык. В СССР была разработана русская версия Кобола.     В 60-х годах фирма IBM, мощная компания по производству ЭВМ, сделала попытку совместить всё лучшее, что имеется в основных языках программирования, в одном языке ПЛ/1. Главным лозунгом явилось: иметь в одном языке средства, необходимые всем категориям программистов, с тем, чтобы отдельному программисту достаточно было ознакомиться лишь с определённым подмножеством языка. Этот лозунг не нашёл широкого признания, особенно среди других производителей ЭВМ, так что продолжают использоваться отдельные языки, тем более что ПЛ/1 сложен для изучения и применения.

        В период выхода на мировой рынок микропроцессоров появился Паскаль - язык программирования, являющийся прямым развитием линии Алгола. Он создан швейцарским математиком Никласом Виртом в 1969 году и назван в честь английского учёного Б.Паскаля. Это очень компактный язык, поэтому его часто используют для обучения приёмам программирования. Он, как и Бейсик, очень популярен среди пользователей персональных компьютеров.     Программы для компьютера в принципе можно записывать сразу в машинных кодах, используя для этого непосредственно последовательность нулей и единиц, как для команд, так для адресов и данных. Однако такая работа очень трудоёмка и легко приводит к ошибкам, поэтому современная практика программирования основана на том, что сначала программа пишется на каком-то языке, более удобном для человека, а затем эта программа транслируется, т.е. переводится в машинный код.     Таким образом, для программирования используется два средства:     1.Язык программирования, используемый человеком или входной язык.     2.Объектный язык, на котором получается программа в машинных кодах, непосредственно загружаемая в память ЭВМ.     Программа на машинном языке оказывается более эффективной, особенно если она разработана высоко квалифицированным программистом и учитывает особенности архитектуры конкретного компьютера. Но общая тенденция развития программирования состоит в том, чтобы писать программу на символическом языке, который представляет собой сокращения машинных команд и условные адреса, а затем транслировать её в машинные коды. Такой язык программирования называется языком Ассемблера. На языке Ассемблера пишут программы в основном системные программисты     В самом языке программирования не заложен способ его реализации. Имеется два основных подхода к реализации языков программирования: компиляция и интерпретация. Компилятор (или транслятор) переводит программу на языке программирования в машинный код (на объектный язык) конкретного компьютера, на котором будет выполняться программа. Ясно, что один и тот же компьютер может «понимать» и Basic, и Pascal, и какой-либо другой язык, всё зависит от того, транслятор какого языка программирования размещён в оперативной памяти ПК. Интерпретатор же является собственно той системой, которая исполняет программу на языке программирования (на входном языке), т.е. каждая инструкция исходной программы переводится и сразу выполняется. Между этими двумя подходами имеется множество промежуточных вариантов: существуют компиляторы, которые компилируют во время ввода программы (т.е. в интерактивном режиме). Существуют интерпретаторы, которые компилируют программу в промежуточный код.        Программы-трансляторы составляются системными программистами и входят в программное обеспечение компьютера. Цепочка событий от составления программы на языке программирования высокого уровня до получения результатов решения задачи представлена на следующей странице.

        Компьютер является универсальным исполнителем по обработке информации. Следовательно, для него, как для любого исполнителя, свойственна определенная система команд исполнителя. Именно эта система команд называется языком машинных команд. Состав языка машинных команд был предложен Джоном фон Нейманом еще в 1946 г. и во многом сохранился в современных компьютерах.     Программа управления компьютером - это последовательность команд. Каждая команда является директивой для процессора на выполнение определенного действия. Эти действия выполняет либо сам процессор (арифметические и логические операции), либо внешние устройства (команды ввода, вывода) под управлением процессора. Этапы решения задачи на ЭВМ:

        Согласно принципам Дж. фон Неймана, программа во время ее исполнения и обрабатываемые ею данные находятся в оперативной памяти ЭВМ. И то, и другое имеет вид двоичных кодов. Процессор исполняет программу, начиная с первой команды и заканчивая на последней (или на специальной команде "стоп"). Во время исполнения очередной команды процессор переписывает её в свои регистры, исполняет и переходит к следующей команде.     Программисты, работавшие на ЭВМ первого поколения (ламповые машины 50-60-х гг.), писали программы на языке машинных команд. Это довольно сложная работа. Для облегчения программирования созданы языки программирования высокого уровня. Примерами таких языков являются Фортран, Паскаль, Бейсик, Си и др. Составление программ на таких языках много проще, чем на языке машинных команд. Программирование стало доступно большему числу людей.     В 80-е годы активно прорабатывалась идея визуального программирования, основной смысл которой состоит в том, чтобы процесс «сборки» программы осуществлялся на экране дисплея из программных конструкций - картинок. В результате появились среды разработки 4-го поколения (4GL), в которых разрабатываемый программный продукт строится из готовых крупных блоков при помощи мыши. Примерами таких сред являются: Delphi, Visual Age, Visual Java.     Для программиста, составляющего программы на универсальных языках программирования, в том числе перечисленных выше, компьютер является универсальным исполнителем. Иначе говоря, на таких языках можно составить программу решения любой задачи по обработке информации.

        Программы решения задач составляются программистами по алгоритмам. Человек не должен объяснять исполнителю свои цели и смысл команд программы. Очевидно, что компьютер и не сможет понять смысла совершаемых им действий. Кроме того, компьютер не обладает способностью к анализу результатов, например, с точки зрения их соответствия постановке задачи. Компьютер не может обойтись без программы и исходных данных, подготовить которые под силу только человеку. С этой точки зрения решение задачи компьютером - это формальное исполнение алгоритма её решения, закодированного и хранимого вместе с данными в оперативной памяти.     Для человека этот факт важен потому, что он должен понимать ограниченность возможностей компьютера как исполнителя, необходимость самому предусмотреть все тонкости команд, поручаемых компьютеру для исполнения, и что вся ответственность за использование компьютеров обществом лежит только на людях. Человек использует компьютер для решения самых разнообразных информационных задач: работа с текстами, создание графических изображений, получение справки из базы данных, табличные расчеты, решение математической задачи, расчет технической конструкции и многое другое. Для их решения в распоряжении пользователя ЭВМ имеется обширное программное обеспечение: системное программное обеспечение (ядром которого является операционная система), прикладное программное обеспечение (программы, предназначенные для пользователя) и системы программирования (средства для создания программ на языках программирования).     Исходя из условия задачи, пользователь решает для себя вопрос о том, каким программным средством он воспользуется. Если в составе доступного прикладного программного обеспечения имеется программа, подходящая для решения данной задачи, то пользователь выбирает её в качестве инструмента (система управления базами данных, табличный процессор, математический пакет и др.). В случае же, если готовым прикладным программным обеспечением воспользоваться нельзя, приходится прибегать к программированию на универсальных языках, т. е. выступать в роли программиста.     Принято делить программистов на две категории: системные программисты и прикладные программисты. Системные программисты занимаются разработкой системного программного обеспечения, систем программирования и инструментальных средств прикладного программного обеспечения. Прикладные программисты составляют программы для решения практических (прикладных) задач: технических, экономических, физических и др.     Пользователь (не программист) работает с каким-либо средством прикладного программного обеспечения (текстовым редактором, табличным процессором, бухгалтерским пакетом программ и т. п.). В этом случае компьютер для него является специализированным исполнителем, ориентированным на определенный тип работы (редактирование текста, табличные расчеты, вычисление заработной платы и пр.). Такой пользователь может и не знать, какие услуги компьютера реализуются аппаратными, а какие - программными средствами. Для него компьютер является "виртуальной машиной", обслуживающей его информационные потребности.

    infolike.narod.ru

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

    Языки программирования. Эволюция языков программирования. Их классификация

    Эволюция языков программирования

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

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

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

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

    Уже в 1951 г. его последователь Грейс Мюррей Хоппер создала первый в мире компилятор и ею же был введён сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки – это называется компиляцией» – так она объясняла происхождение введённого ею термина.

    Середина 50-х годов характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных командах стала уменьшаться. Начали появляться языки программирования нового типа, выступающие в роли посредника между машиной и программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN, отFORmulaTRANslator– переводчик формул), разработанный группой программистов фирмыIBMв 1954 г. (первая версия).

    В середине 60-х годов сотрудники математического факультета Дартмутского коллежа Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык назвали «универсальным символическим кодом для начинающих» (BeginnersAllPurposeSymbolicInstructionCode, или сокращенноBASIC). Годом рождения нового языка можно считать 1964 г. Сегодня универсальный язык Бейсик (имеющий множество версий) приобрел большую популярность и получил широкое распространение среди пользователей ЭВМ во всем мире. В значительной мере этому способствовало то, что Бейсик начали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 70-х годов.

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

    Языки программирования служат разным целям, и их выбор определяет удобность пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера бывают самые разнообразные: вычислительные, экономические, графические, экспертные и т.д. Такая разнотипность решаемых компьютером задач и определяет многообразие языков программирования. По всей видимости, в программировании наилучший результат достигается при индивидуальном подходе, исходящем из класса задачи, уровня и интересов программиста. Например, Бейсик широко употребляется при написании простых программ; Фортран является классическим языком программирования при решении на ЭВМ математических задач; язык Кобол (создан в 1960 г.) был задуман как основной язык для массовой обработки данных в сферах управления и бизнеса. Отметим и еще один достаточно популярный язык – Пролог, разработанный как язык программирования для создания систем искусственного интеллекта.

    В конце 50-х годов плодом международного сотрудничества в области программирования явился Алгол (ALGOL, отALGOrithmicLanguage– алгоритмический язык). Алгол предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленных задач. Специалисты – практики восприняли этот язык далеко неоднозначно, но, тем не менее, его влияние на развитие других языков и теорию программирования оказалось весьма значительным.

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

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

    Не менее впечатляющей, в том числе и финансовой, удачи добился джазист Филип Кан, француз, разработавший систему Турбо-Паскаль. Суть его идеи состояла в объединении последовательных этапов обработки программы – компиляции, редактирования связей, отладки и диагностики ошибок – в едином интерфейсе. Версии Турбо-Паскаля заполнили практически все образовательные учреждения, программистские центры и частные фирмы.

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

    Большой отпечаток на современное программирование наложил язык Си (первая версия – 1972 г.), являющийся очень популярным в среде разработчиков программного обеспечения (включая операционные системы). Си сочетает в себе черты как языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не обеспечивают такие языки как Бейсик Паскаль.

    Принципиально иное направление в программировании связанно с методологиями непроцедурного программирования. К ним можно отнести объектно-ориентированное и декларативное программирование. Объектно-ориентированный язык создают окружение в виде множества независимых объектов. Каждый объект ведет себя подобно отдельному компьютеру, их можно использовать для решения задач как «черные ящики», не вникая во внутренние механизмы их функционирования. Из языков объектного программирования, популярны среди профессионалов, следует назвать, прежде всего, Си++, для более широкого круга программистов предпочтительны среди типа DelphiиVisualBasic.

    Классификация языков программирования

    Различают стили программирования:

    процедурный, функциональный, логический, объектно-ориентированный.

    Процедурное(императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена Д. фон Нейманом в 40–х г.

    Языки общения с компьютером делятся на:

    • Низкого уровня: двоичный язык, шестнадцатеричный язык; символический язык - язык Ассемблера, язык Макроассемблера.

    • Высокого уровня: универсальные - Фортран, Basic, Алгол, Кобол, Паскаль, Ада.

    Уровень языка программирования определяется смысловой емкостью его конструкций и его ориентацией на программиста – человека.

    Двоичный язык – непосредственно машинный язык. В настоящее время такие языки программистами не применяются. Шестнадцатеричный язык обеспечивает некоторое упрощение записи программы на машинном языке путем представления четырех двоичных цифр одной шестнадцатеричной. Этот язык используется в качестве дополнения к языкам высокого уровня, таким как Паскаль, для программирования критичных к времени выполнения фрагментов алгоритмов. Язык Ассемблера – этот язык предназначен для представления в символической форме программ, записанных на машинном языке. Он позволяет программисту пользоваться мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ и ячейкам памяти, а также задавать наиболее удобные в том или ином контексте схемы адресации.

    Функциональноепрограммирование – это способ составления программ, в которых единственным действием является вызов функции”.

    Логическоепрограммирование - программирование в терминах логики, первоначально предназначено для работы с естественными языками.

    Объектно-ориентированноепрограммирование ориентировано на данные и обработку данных разного типа. Здесь введены понятия объект, свойство, метод, событие.

    Языки программирования высокого уровня

    Понятие языков программирования

    Языки программирования – это формальные языки специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный» язык (русский, английский и т.д.), имеет алфавит, словарный запас, свои грамматику и синтаксис, а также семантику.

    Алфавит– фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.

    Синтаксис – система правил, определяющих допустимые конструкции языка программирования из букв алфавита.

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

    Языки высоко уровня – языки программирования, ориентированные на решение прикладных задач.

    Язык высокого уровня имеет следующие достоинства:

    -алфавит языка шире машинного (что облегчает понятность текста программы, написание программы более наглядно)

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

    -конструкция команд содержит виды обработки данных, и задаются в удобном виде

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

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

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

    Поэтому необходимы приемы описание конструкций языков программирование типа: «Оператором присваивания называется …», причем продолжение подобной фразы на естественный язык чаще всего оказывается либо слишком громоздким, либо неоднозначным, либо и тем, и другим одновременно.

    Для строгого и точного описания синтаксиса языка программирования, как правило, используют специальные метаязыки (языки для описания других языков). Наиболее распространенными метаязыками являются металингвистические формулы Бэкуса – Наура (язык БНФ) и синтаксические диаграммы Вирта.

    Язык БНФ (называется также языком нормальных форм) представляет компактную форму в виде некоторых формул, похожих на математические. Для каждого понятия языка существует единственная метаформула (нормальная форма). Она состоит из левой и правой частей. В левой части указывается определяемое понятие, а в правой – задается множество допустимых конструкций языка, которые объединяются в это понятие. В формуле используют специальные метасимволы в виде угловых скобок, в которых заключено определяемое понятие (в левой части формулы) или ранее определенное понятие (в ее правой части), а разделение левой и правой частей указывается метасимволом «::=», смысл которого эквивалентен словами «по определению есть».

    Например, метаформулы

    <переменная>::=А|B

    <выражение>::=<переменная>|<переменная>+<переменная>|<переменная>-<переменная>

    означают, что в том (сугубо модельном) языке, на который эта метаформула распространяется, под термином <переменная> понимается любая из букв А или В, а под термином <выражение> - любая из следующих десяти записей: А; В; А+А; А+В; В+А; В+В; А-А; А-В; В-А; В-В. Знак | следует читать «или».

    Правая часть метаформулы может содержать правило построения допустимых последовательностей.

    Синтаксическая диаграмма является графическим представлением значения метапеременной метаязыка. Диаграмма состоит из основных символов или понятий языка.

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

    Для сравнения с метаформулами приведем несколько примеров.

    Синтаксическая диаграмма.

    <переменная>::=

    А

    В

    эквивалентна метаформуле <переменная>::= А | B.

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

    Грамматика языков программирования

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

    <буква>::= AaBbCcDdEeFfи т.д.

    <цифра>::= 0123456789

    <знак арифметической операции>::=*/+-

    <разделитель>::=.,;()[]{}’:=

    <служебное слово>::= begin end if then else for next и т.д.

    <комментарий>::=<любая последовательность символов>

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

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

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

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

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

    Модуль – это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки.

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

    Заголовокнеобходим для ссылок на модуль.

    Интерфейс содержит объявления, выключая процедуры и функции.

    Раздел «реализация» содержит тела процедур и функций, перечисленных в интерфейсной части.

    Раздел «инициализация» содержит операторы, необходимые для инициализации модуля.

    Каждый модуль компилируется отдельно, и каждый элемент модуля можно использовать в программе без дополнительного объявления.

    studfiles.net

    где и когда появились языки программирования?

    Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования. Смысл появления такого языка – оснащенный набор вычислительных формул дополнительной информации, превращает данный набор в алгоритм. Язык программирования служит двум связанным между собой целям: он дает программисту аппарат для задания действий, которые должны быть выполнены, и формирует концепции, которыми пользуется программист, размышляя о том, что делать. Первой цели идеально отвечает язык, который настолько "близок к машине", что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для программиста образом. Второй цели идеально отвечает язык, который настолько "близок к решаемой задаче", чтобы концепции ее решения можно было выражать прямо и коротко. Можно писать программы непосредственно на машинном языке, хотя это и сложно. На заре компьютеризации (в начале 1950-х г. г. ) , машинный язык был единственным языком, большего человек к тому времени не придумал. Для спасения программистов от сурового машинного языка программирования, были созданы языки высокого уровня (т. е. немашинные языки) , которые стали своеобразным связующим мостом между человеком и машинным языком компьютера. Языки высокого уровня работают через трансляционные программы, которые вводят "исходный код" (гибрид английских слов и математических выражений, который считывает машина) , и в конечном итоге заставляет компьютер выполнять соответствующие команды, которые даются на машинном языке. Существует два основных вида трансляторов: интерпретаторы, которые сканируют и проверяют исходный код в один шаг, и компиляторы, которые сканируют исходный код для производства текста программы на машинном языке, которая затем выполняется отдельно. Если быть совсем точным, то уж по настоящему первым языком программирования была, по всей видимости, та нотация, с помощью которой были написаны программы Чарльза Бэббиджа в знаменитой статье Ады Августы Байрон, графини Лавлейс "Sketch Of the Analytical Engine"(статья представляла собой перевод статьи итальянца Менабреа о работе разностной машины Бэббиджа и, содержала существенное дополнение, написанное самой Адой Августой) . Однако это был не вполне язык программирования, да и машина, для которой он предназначался существовала только в уме гениального человека. Первый язык программирования - Plankalk&#252;l, то есть в переводе с немецкого "Исчисление планов" или "План вычислений", был разработан немецким учёным, изобретателем и конструктором Конрадом Цузе в нацистской Германии между 1942 и 1945 годами. Фортра&#769;н (Fortran) — первый реализованный язык программирования высокого уровня, правда, с одной небольшой оговоркой — для машин, построенных по классической схеме фон Неймана. Создан в период с 1954 по 1957 год группой программистов под руководством Джона Бэкуса (John Backus) в корпорации IBM. Через пару лет начались его коммерческие поставки. До этого программирование велось либо непосредственно в машинных кодах, либо на символических ассемблерах. Собственно, эту деятельность и называли не программированием, а кодированием; только с появлением Фортрана возникла профессия «программист» . Название Fortran является аббревиатурой от FORmula TRANslator, то есть, переводчик формул.

    ой.... помню что то такой на информатике проходили.... помоему то был 60 года.... или 50е ...ууууууууууууууу ностальгия ...

    * языков программирования: 51, * диалектов: 77, * реализаций: 186, * версий: 482. Чтобы все описать места не хватит. Поэтому пройди по ссылочке: <a rel="nofollow" href="http://progopedia.ru/" target="_blank">http://progopedia.ru/</a>

    touch.otvet.mail.ru

    Десять мнений: какой язык программирования учить первым

    Время от времени мне задают по e-mail, казалось бы, простые вопросы, но на которые почему-то очень сложно ответить. И вот мне в голову пришла странная мысль. А что, если взять один из таких вопросов, задать его десяти широчайше известным в узких кругах людям, и объединить ответы в один пост? Собственно, с результатами такого эксперимента вы можете ознакомиться под катом. Вопрос, который был задан: «Какой язык программирования вы бы посоветовали учить первым, и почему именно его?»

    Евгений Охотников, автор блога Размышлизмы eao197.

    Для ответа на этот вопрос нужно сперва ответить еще на один: а для чего нужно учить язык программирования? Если для того, чтобы начать сразу зарабатывать программированием, то здесь нужно идти от конъюнктуры: посмотреть по сторонам, определить куда проще всего устроиться junior-программистом и взяться за изучение именно этого языка (выбор тут будет из чего-то вроде Java, PHP, JavaScript и т.д.).

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

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

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

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

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

    Это работало 25 лет назад. Надеюсь, если найти адекватную замену для Бейсика (например, Python или Ruby, но без погружения в ООП), то эта же цепочка будет работать и сейчас. Она должным образом отформатирует мозги новичка и станет хорошим тестом на профпригодность. После чего можно будет изучать все, что захочется — хоть Java, хоть JavaScript, хоть C++, хоть Prolog, хоть Haskell.

     

    Никита Прокопов, tonsky.livejournal.com.

    JavaScript:

    • Минималистичный — самое необходимое можно изучить очень быстро;
    • Почти не парит мозг инфраструктурой. IDE и среда исполнения это браузер, компиляции и сборки нет, зависимости можно подключить напрямую из сети;
    • Динамический, позволяет интерактивную разработку. Когда не знаешь как правильно писать, важно как можно быстрее попробовать возможные варианты;
    • Сразу можно делать все интересные вещи: графику, UI, видео, аудио, анимации, сеть;
    • С прицелом под любое возможное устройство;
    • Бесконечное количество справочных ресурсов;

     

    Reangd, автор блога Программист — это звучит гордо.

    Начинать нужно с чего-то такого, что не отобьет на первых парах желание. Язык должен быть таким, чтобы сел — перепечатал из книги строчку и она уже что-то делает. Чтобы все было понятно, без магических заклинаний вроде public static void main, когда для понимания каждого слова приходиться читать по паре глав. Чтобы установка, компиляция и запуск были простые, без необходимости изучать для этого новый язык вроде make-а. Чтобы писать на нем можно было везде, вплоть до телефонов, а не иметь прибитый гвоздями к одной платформе язык. Чтобы было большое комьюнити и куча учебных материалов на всех языках. Чтобы можно было и ООП пописать и функциональщину потрогать. Чтобы учить было легко и при написании не приходилось сильно задумываться как ту или иную вещь сделать, но при этом достаточно строгий, не позволяющий строки в числа неявно конвертировать. Пожалуй все, хочется только добавить, что задерживаться на нем не нужно, как только поняли, что программирование нравится обязательно должен последовать 2, 3, 4 языки.

    Ах да, про сам язык то забыл сказать — конечно же Python.

     

    Анастасия Казакова (@anastasiak2512), C/C++ разработчик, менеджер по продуктовому маркетингу CLion, кросс-платформенной среды для разработки на C и C++ от компании JetBrains.

    Хотя для меня первым языком программирования был C, я бы не советовала начинать с него. Мне сейчас кажется, что самый правильный вариант, это какой-нибудь функциональный язык. Возьмите Lisp, Scala, OCaml, Haskell. Почему? Чтобы ответить, сначала скажу, что программирование — это алгоритмы, и начинать надо с них. Но чтобы изучать алгоритмы и их практическое применение, нужен инструмент для работы с ними, язык. Почему же именно функциональный?

    Во-первых, отсутствие лишнего. Программа на функциональном языке будет содержать только то, что нужно для выражения идеи/алгоритма. Это краткость чрезвычайно важна, так как позволяет отделить мух от котлет. Язык — это инструмент для выражения алгоритма в терминах, понятных машине. Чем больше «машинных» деталей, тем поначалу хуже. Конечно, со временем, станет интересно копаться в деталях реализации того или иного объекта, структуры данных, организации той или иной области памяти. Тут всегда можно будет открыть C и начать изучать адресную арифметику. Но начинать с этого, это все равно что изучать инструмент вперед цели, для которой он служит.

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

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

     

    Сергей Зефиров, thesz.livejournal.com.

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

    Поэтому это какой-либо Лисп или какой-либо типизированый ФП (Хаскель, Агда, Скала).

     

    Андрей Карпов, технический директор ООО «СиПроВер», один из создателей анализатора PVS-Studio (публикации на Хабрахабр).

    Если говорить о самом первом языке программирования, тогда, по всей видимости, речь идет о ребенке. Здесь на первый план выходит задача заинтересовать и больше ничего. Правильный или неправильный язык — не имеет значения. Раньше для этой цели идеально подходил QuickBASIC. Сейчас это, пожалуй, SmallBASIC или различные конструкторы с возможностью запрограммировать робота, собранного своими руками.

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

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

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

     

    Роман Душкин, автор множества книг и организатор конкурсов по функциональному программированию.

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

    Я бы начал с электронных таблиц. MS Excel или Google Spreadsheet — это то, что требуется. Как сказал кто-то из корифеев ФП, MS Excel — это наиболее широко используемая система функционального программирования. Действительно, если поднатореть в формулах, то можно делать много забавных и очень нетривиальных вещей, даже не влезая в дебри VBA (а вот этого точно не нужно, я категорически против VBA). Современные электронные таблицы предлагают вполне серьезный инструментарий по обработке данных, их поиску, выборке и другим операциям. Учитывая то, что ячейки и формулы в электронных таблицах составляют взаимосвязанные цепочки чистых вычислений без побочных эффектов — это то, что надо для первичного вхождения в парадигму чистого ФП. При помощи функций электронных таблиц можно эмулировать практически все чистые (не монадические) функции первого порядка модуля Prelude языка Хаскелл. Можно, при умении и расторопности, эмулировать и функции высших порядков.

    В общем, электронные таблицы с функциями для обработки данных — это то, что нужно. Единственный минус, который мне видится, заключается в смешении уровней M и V в схеме MVC. Но, думаю, что это совсем не критично при первом изучении языков программирования.

     

    Антон Лебедевич, автор блога о мониторинге и статистике mabrek.github.io.

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

     

    Alex Ott, alexott.net.

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

    • Обучение алгоритмическому мышлению и организации программ. Для многих людей, не являющихся программистами, это часто сложная проблема. В этой части необходимо показать, как создаются программы, и из каких кусочков они создаются (циклы, ветвление, присваивание). Это самое правильное место, где можно заложить правильный стиль написания программ, например, объяснить опасность присваиваний глобальным переменным в многопоточных программах и т.д. Для этой части необходим очень простой язык, не перегруженный синтаксисом и машинно-зависимыми вещами. Тут хорошо подходит SICP + Schema, поскольку синтаксис максимально прост, и не зависит от компьютера (например, можно работать с любыми числами, не опасаясь переполнений и т.п.).
    • Обучение основам компьютерной архитектуры и т.п. Это обзорная часть для всех — как представляются числа, как устроена память, функции операционной системы, и т.п., так что люди смогут рассуждать о времени выполнении, и почему, например, не стоит каждый раз читать данные из файла в цикле. Тут уже можно взять Python или что-то подобное…
    • Обзор алгоритмов и т.п. Объяснение сложности алгоритмов в применении к конкретному языку, например, когда стоит использовать список vs array, какая сложность стандартных функций и т.п.
    • Обучение решению класса задач. Тут уже сложнее, поскольку у каждого своя специфика, зависящая от требований — наличия библиотек, необходимости итеративной разработки и т.п.. Для «ученых» это может быть Python/R, для big data — Java 8 или Scala, для около-железячников, особого выбора кроме C нет, и т.д.

     

    Андрей Листочкин (@listochkin), программирует на JavaScript, Rust, Ruby, Java и многих других языках. В институте учил Pascal, Delphi, SQL, Prolog, Lisp, ассемблер, из всего этого больше всего понравился Prolog. Помогает вести одно из крупнейших чат-сообществ разработчиков в Украине и Восточной Европе Dev-UA, организует Rust и JS митапы, выступает на конференциях и иногда помогает вести подкаст DevZen.

    У меня два ответа на этот вопрос.

    1. Тот, какой нужен. Скажем, вам 12 лет, вы любите Майнкрафт и хотите написать для него мод. Моды под Майнкрафт пишутся на Java, поэтому учите Java. Или, например, вам 35 и вы хотите что-то такое особенное посчитать в Google Spreadsheets, а там сложные формулы пишутся на JavaScript, поэтому учите JavaScript.

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

    2. А вот если у вас нет ничего сиюминутно важного или вы просто захотели в будущем стать программистом, и при этом ваша цель — не просто стать им, а стать одним из лучших, то учите Haskell. Он научит вас хорошему и не научит плохому, и после него вам гораздо проще будет писать хороший код на JavaScript, Ruby и других языках.

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

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

    В то же время для Haskell есть изумительная книга Learn You a Haskell for Great Good!, а для Мака — прекрасный комбайн, чтобы поставить и начать писать код: Haskell for Mac. Это редактор с подсветкой синтаксиса, подсказками, визуализацией данных и REPL. То, что доктор прописал, и стоит совсем недорого.

     

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

    Дополнение: Десять мнений: что отпугивает от работодателя на интервью

    Метки: Десять мнений, Языки программирования.

    eax.me

    WordPress » Языки программирования, подробно о наиболее часто используемых

    Сколько бы программ для каждой ОС ни выпускалось, пользователям иногда требуются такие функции, которые они не реализуют. Поэтому для их реализации и с помощью простейших программ используются языки программирования. Использование их подразумевает написание особого кода, который проходя через компилятор или интерпретатор (зависит от типа языка) распознается машиной и редактирует тексты имеющихся программ, либо создает вспомогательные. Из наиболее популярных языков программирования, о которых читателю наверняка доводилось слышать – семейство С и С++, Basic, Pascal, создающие системы для DOS, Windows. Но еще более актуальными в наше время являются языки веб-программирования – HTML, Java, PHP и другие, о которых мы ведем речь ниже.

    Веб-программирование и его основные языки

     Суть его заключается в создании скриптов (кодов), которые помогают создавать нужные действия и находить информацию при просмотре содержимого веб-страниц в сети Интернет. Различают веб-языки, средства создания desktop, языки администрирования, языки программирования под мобильные устройства. Кроме того, все они делятся на две группы:

     1. Клиентские – которые обрабатываются браузером на компьютере пользователя. Позволяют быстро без отправки данных заполнять форму и реализовывать ее. Их основной минус в том, что работа программы зависит от того, насколько «тормозит» IE, Opera или другой браузер. Да и вообще, настроен ли он правильно, чтобы считывать язык программирования. JavaScript как раз относится к клиентским. 2. Серверные – вызванный с их помощью код или команда сперва проходят обработку на сервере и уже потом возвращаются к пользователю в исправленном и простом виде. Работают и обслуживаются при работе СУБД. Типичный представитель – HTML.

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

    Это инструмент создания таблиц, списков, графики без применения компилятора. Шаблон HTML может выглядеть как обычный текстовый файл, который по идее распознает любой из существующих браузеров. Состоит текст из тегов – отдельных команд интерпретирующему отделу браузера. Известные html теги: 

    <HTML> — начало любого тега. <HEAD> — заголовок, может приобретать формы <title>…</title> <h2>, <h3> и т.д. согласно уровню. </HEAD> — закрывается заголовок. <BODY> — тело, которое может содержать под-теги, управляющие способом отображения текста. Например, <P>…</P> — абзац, <B> Текст </B> выделение шрифтом, <S>…</S> перечеркивание и т.д. </BODY> — закрывается тело. </HTML> — конец тега.

    Не все символы при этом можно заключить в теги, язык программирования HTML имеет свои секреты, с которыми вы познакомитесь в процессе курса. Например, привыкнете к тому, что &….. – это знак &, а Ω>… — обычная буква W. Особенность данного языка в том, что он является базисным, его необходимо знать так или иначе для перехода к более высоким уровням программирования. И хотя его одного достаточно для того, чтобы строить сайты, это будут простейшие ресурсы без обратной связи с пользователями, малодинамичные и тяжело весящие при этом. Поэтому идем дальше: какой язык программирования еще можно выбрать? 

    JavaScript

    Этот скрипт был создан Netscape Communications, авторами одноименного браузера и сперва предназначался для узконаправленного поведения страниц. Свой синтаксис он позаимствовал у языков программирования С++ и Java. Характеризуется слабой и динамической типизацией. Преимуществом является то, что уже в отличие от HTML гораздо шире использует браузерную функциональность имеющихся объектов, т.е. является объектно-ориентированным. JavaScript – это высокий уровень программирования, который допускает меньше ошибок и сокращает время работы над программой, а также позволяет переносить ее с ПК на ПК. Но имеет он и свой недостаток, который угадывается в большем размере программ, по сравнению с HTML-кодом.

    Популярный пример, созданный на языке программирования JavaScript – AJAX, а благодаря независимости от типа ОС, программы и сайты, написанные на нем, одинаково открываются и на Windows, и на Linux, и на распространенных Apple Mac. В настоящий момент этот язык свободный в плане доступа, еще более легкий, чем Java, однако требующий усидчивости в его постижении.

    РНР

    На сегодня это наиболее популярный инструмент веб-программирования, который отличается следующими выгодными сторонами:

     • Быстрое написание кода ввиду относительной простоты синтаксиса. • «Скроен» из различных базовых языков С, С++, Perl, поэтому если вам доводилось изучать их основы, освоение РНР будет быстрым. • Поддерживается большинством хостингов; • Обладает высокой скоростью обработки данных; • Реализованы средства безопасности, шифры на системном и уровне приложения • Уже большое количество популярных «движков» для создания веб-сайтов написаны на нем – взять хотя бы блог-редактор WordPress; • Немаловажный фактор – бесплатное распространение.

    Курсы языка программирования РНР помогут освоить написание сайтов в динамике. Этот инструмент является серверным и в плане реализации функций является очень гибким, интересным как для пользователей с точки зрения живости, небанальности сайта, так и для поисковиков.

    Языки программирования Desktop приложений

    В отличие от веб-приложений, десктоп названы так потому, что не требуют доступа в интернет для запуска. Это всякого рода игры, вспомогательные программы, редакторы и прочие «полезности», которые должны быть у пользователя на компьютере. Их устанавливать не нужно: достаточно поместить в папку каталога или прямо на рабочий стол. Такие языки программирования, как С++ и Java используются наиболее часто для их написания.

    С++

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

     • Процедурное программирование; • Возможность разделения на модули; • Абстрагирование и классификация объектов; • Совместим с предшественником С в большинстве программ.

    На С++ написано множество известных платформ, например, Intel C++ Compiler. Известное приветствие Hello, world на этом языке программирования выглядит так:

     #include <iostream>

     int main() { std::cout << «Hello, world!\n»; return 0; }

    Java

    Язык, который был разработан Гослингом под кодовым названием Oak, сперва предназначался не для написания десктоп приложений, а для управления быттехникой и электроникой. Но после первых удачных опытов написания клиентов и серверных программ получил распространение и новое имя в честь марки кофе Ява (от кофемолок к компьютерам). Позволяет транслировать команды в байтовый код, который проходит через интерпретатор и передается абсолютно любой машине, будь то ПК на Windows или ноутбук на OS X, лишь бы была поддержка. Язык программирования Java также обеспечивает надежную систему безопасности, блокирующие операции при распознавании попыток несанкционированного доступа. 

    Языки программирования под мобильные устройства

    Эра мобилизации породила особый интерес к подобным инструментам: например, устройства Android на сегодняшний день занимают 1 место по распространению в мире. Что делает знание языков для написания мобильных приложений must have любого опытного программиста. Мобильное программирование позволяет создавать полезные программы для планшетов и смартфонов, для коммуникации, развлечений и игр, выхода в интернет и других функций устройства. Основная задача – создавать коды с учетом кроссплатформенности и востребованности приложений с точки зрения пользователя.

    Android программирование

    Стоит помнить о том, что Java-языки стали базовыми на данном поприще, но существует также ряд framework, позволяющих программировать и на других языках программирования – Питон, С++ и т.д. Особенностью их является тестирование для разных версий и достижение их совместимости. В частности, речь о многочисленных «десертах» от Андроид: версии 1.6 Donut, 2.1 ?clair, 4.2 Jelly Bean. Делятся версии и по уровню АРI, так что запутаться нетрудно. Следует ориентироваться при создании приложения всегда не на последнюю версию, а на наиболее распространенную, но при этом максимально реализовывать возможности совместимости обеих.

    В основном для написания приложений под Android на Java используется среда Eclipse c особым режимом для «мобильного» программирования. Подходят также NetBeans, Motodev Studio для андроидных устройств. Программируют и на С++, что позволяет писать программы быстрее, например, используя Android Native Development Kit. Нет смысла приводить примеры приложений, написанных на этих языках, потому что их существуют миллионы. Но если у вас есть концептуальная идея переноса готового ресурса, приложения в мобильную среду, стоит изучить программирование под Android отдельно.

    Язык запросов к базам данных SQL

    Структурированный язык запросов SQL позволяет наладить связь с базой данных, придерживающейся синтаксиса стандарта ANSI. БД может представлять собой сводную таблицу, конфигурированную информацию, связанную между собой в форме столбцов (атрибутов) и строк (описаний свойств). Чтобы найти конкретную ячейку, необходимо задать команду или запрос, который обозначается query. Изучение языка программирования SQL позволяет постичь эти запросы и сделать работу с базами данных простой и быстрой. Очень важно выполнять регулярное резервное копирование SQL Server по расписанию.

    Запросы в SQL

    Выделяют среди них 4 основных, которые позволяют манипулировать данными языка, это:

     • SELECT – выбрать строку; • INSERT – добавить строку; • UPDATE – изменить; • DELETE – удалить;

    К запросам добавляются другие операторы из числа арифметических знаков (=, <, >, <=, >= и т.д.), чтобы уточнить направление действия. Например, пользователь хочет выделить определенные столбцы (column) – пишется запрос SELECT column1, column2 FROM table_name.

    Кроме операторов, используют прописные условия BETWEEN, LIKE, AND, OR, WHERE, позволяющие уточнить свойства строк или столбцов. Так, например, оператор WHERE часто используется с основным UPDATE для того, чтобы обновить данные в конкретных столбцах:

    UPDATE table_name SET FirstName = ‘Хонда’ WHERE FirstName = ‘Хонда’ AND LastName = ‘Аккорд’;С помощью запроса UPDATE также удаляют отдельные ячейки, тогда как оператор DELETE убирает строки полностью. Мы познакомились с основными SQL запросами, но этот язык программирования стоит изучать более углубленно и на практике.

    Языки программирования для администрирования

    Администрирование в любой среде ОС подразумевает определение задач, проблем и умение их решать с помощью базовых языков программирования либо инструментов. Поскольку для Windows и OS существует достаточно простых и сложных рычагов администрирования, отдельное внимание стоит уделить простой и безошибочной Linux. И если кто-то по-прежнему считает ее непонятной и непостижимой, приглашаем убедиться в процессе курсов, что это не так.

    Администрирование для Linux

     Среда «Линукс» основана на ядре Unix System, объединяющем отдельные независимые модули. Для того, чтобы создавать приложения, как правило в Linux используют инструменты Bash, Shell, а также популярный в наше время язык программирования Python. Его преимуществами считаются многофункциональность, бесплатный доступ и универсальность в плане создания программ любой направленности. Так, с помощью Python можно:

     1. Вести работу с базами данных; 2. Редактировать записи пользователя, администратора; 3. Конвертировать серверные файлы; 4. Создавать индивидуальные настройки безопасности; 5. Работать с серверами на удалении. 

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

    Так же друзья, советую почитать и эти статьи!!!

    wordpressu.ru

    3.3.1 Типы языков программирования — функциональные, процедурные, объектно-ориентированные языки

    Поколения языков программирования

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

    Развитию программирования поспособствовала идея Джона Фон Ньюмана (англ. John Von Neumann), опубликованная в 1945 году, в которой он описал компьютер, где в памяти вместе с данными хранится и сама программа.

    Языком программирования первого поколения считается машинный код. Машинный код состоит из инструкций, которые компьютер (процессор) может выполнить (а также данных, которые принадлежат этим инструкциям). Программируя на машинном коде, программист должен был писать свою программу в двоичном коде, так что бы процессор мог это понять и исполнить. В сущности, такое программирование требует хорошего знания и понимания аппаратного обеспечения, потому что в процессе программирования необходимо знать что процессор может сделать, где находятся устройства ввода-вывода (англ. I/O- Input-Output), а также как с ними необходимо общаться и сколько времени будет потрачено на ту или иную операцию. Таким образом, машинный код очень крепко связан с аппаратным обеспечением, на котором соответствующая программа будет работать. На сегодняшний день машинный код из компьютеров никуда не исчез, все действия на низком уровне (уровне аппаратного обеспечения) происходят до сих пор в машинном коде, т.е. на каком бы языке программирования не была написана программа в, конечном итоге она преобразуется в понятный аппаратному обеспечению машинный код.

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

    MOV AL, 19

    ADD AL, 4

    OUT 2

    Данный отрывок кода присваивает регистру AL значение 19(обычно значения представлены числами в шестнадцатеричной системе), прибавляет к значению регистра AL число 4 и после этого отправляет на выход номер 2. Написанная программа переводится из ассемблера в машинный код и после этого процессор может начать её выполнение.

    Языки ассемблера и машинный код считаются языками низкого уровня.

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

    К числу языков третьего поколения относится большинство известных и используемых языков программирования, например:

    FORTRAN (The IBM Mathematical FORmula TRANslating System) - язык программирования, разработанный в 1950-тых годах для математических вычислений и в научных целях.

    COBOL (COmmon Business Oriented Language) - Объектно-ориентированный язык программирования, созданный в 1959году, в основном для написания программ удовлетворяющих бизнес нуждам.

    BASIC (Beginner's All-purpose Symbolic Instruction Code) - Язык, разработанный в 1963 году, который поначалу создавался для того, чтобы инженеры могли производить на компьютерах различные симуляции.

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

    С - имя происходит от того, что этот язык в основном базировался на языке с именем B. Создавался для написания операционных систем (многие UNIX совместимые операционные системы написаны на этом языке), уже долгое время является одним из самых популярных языков программирования.

    С++ - объектно-ориентированный С.

    Java - язык программирования, разработанный на основе С++.

    Visual Basic, Delphi, Python, C# - все являются языками третьего поколения. Многие языки программирования третьего поколения моложе (новее), чем некоторые языки четвёртого и пятого поколений.

    Языки программирования четвертого поколения разработаны с целью упростить их изучение и использование. Эти языки, как правило, непроцедурные сосредоточены на единственном применении. Примером языка программирования четвертого поколения может служить SQL(Structured Query Language). Тут больше говориться «что делать» и меньше - «как делать». Языки пятого поколения созданы для разработки систем искусственного интеллекта и для решения связанных с этой темой проблем.

    Базовые типы языков программирования.

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

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

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

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

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

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

    Интерпретируемые и компилируемые языки

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

    Компиляция заключается в том, что программа в машинном коде (называемая компилятором) преобразует другую программу, написанную на языке программирования в машинный код. После этого полученный машинный код программы выполняется. Примером компилируемых языков можно назвать C, Fortran, Pascal.

    Интерпретация заключается в том, что программа в машинном коде (интерпретатор) записывает файл программы во внутреннюю память и начинает её построчно выполнять. Примером может служить старый язык BASIC.

    Интерпретация программы примерно в 10-200 раз медленнее, чем выполнение скомпилированного кода. В противовес отладка (удаление ошибок из программы) интерпретируемой программы, как правило, проще, чем в случае транслируемой программы. В некоторых подходящих случаях и при наличии подручных инструментов эти различия могут быть гораздо меньше. Хорошим примером служит Java с кодом, оптимизированным и скомпилированном на промежуточном уровне, который во время выполнения транслируется компилятором Just-in-Time в подходящий конкретному аппаратному обеспечению.

    В принципе программу, написанную на любом языке можно как интерпретировать, так и скомпилировать.

    www.e-uni.ee