Обзор языков программирования — AppTractor
Программирование
Каждый язык может рассматривать точку с запятой по-своему или требовать заглавных букв в написании, хотя, по большому счету, в основе всех языков один и тот же принцип. Но реальность программирования гораздо сложнее.
Компьютерные программы часто описываются как «наборы инструкций», и компьютерные языки воспринимаются многими только как словарный и синтаксический способ обеспечения этих инструкций.
С этой точки зрения, различные языки программирования могут иметь различную грамматику или различные словари. Каждый язык может рассматривать точку с запятой по-своему или требовать заглавных букв в написании, хотя, по большому счету, в основе всех языков один и тот же принцип.
Но реальность программирования гораздо сложнее.
Программирование сегодня
Это странно, но большинство действительно «глобальных» идей в компьютерном программировании были разработаны еще в 1950-х и 60-х годах. С тех пор появилось много новых языков, но ни один из них не реализует действительно нового подхода к логике и вычислениям.
Разработка новых языков программирования в течение последних нескольких десятилетий была основана на опыте разработчиков. Это означает, что появился код, который стало проще писать (движущая сила Ruby) и проще читать (Python), и делать определенные типы логических структур и способы решения проблем более интуитивными.
Некоторые языки были разработаны для решения конкретных проблем в программировании (например PHP и SASS), чтобы управлять определенными типами систем (SQL), или для работы в определенной среде или на определенной платформе (Java и JavaScript). Некоторые языки были разработаны специально для того, чтобы помочь новичкам научиться программировать (классическими примерами являются BASIC и Scratch).
С тех пор, как теории и практики вокруг дизайна языка вылились (в основном) в широко признанную ортодоксию, большая часть новой и интересной работы в развитии практики программирования в настоящее время сосредоточена вокруг системной архитектуры.
Относительно недавнее развитие включает в себя такое понятие, как SOA (Service Oriented Architecture- сервисо-ориентированная архитектура) и MVC (Model-View-Controller), а также фреймворки, такие как Ruby on Rails, позволяющие программистам легко работать в рамках этих парадигм.
Список языков программирования
Пополняющийся список популярных языков программирования, разметок и протоколов. Ссылки на описание каждого из них:
Кодировка ASCII
- Кодировка символов является одним из основных компьютерных и Интернет аспектов. ASCII — это первая, широко использованная система кодировки символов. Она была вытеснена UTF-8, но ASCII по-прежнему является основой для подавляющего большинства символов в Интернете и на сегодняшний день. Понимание этого очень важно для программистов. Читайте подробнее здесь (англ): The Ultimate Guide to ASCII Encoding
ASP / ASP.NET
- ASP — это аббревиатура для Active Server Pages. Это первый скриптовый серверный язык для веб-сервера Microsoft IIS. ASP был заменен на серверный фреймворк с открытым исходным кодом — ASP.NET. Подробнее (англ): ASP Primer
AutoLISP
- AutoLISP — это простой, легкий, интерпретируемый язык программирования, созданный специально для автоматизированного проектирования программного обеспечения. Читайте об этом (англ): AutoLISP Resources
Awk
- Awk является чрезвычайно мощным языком программирования для обработки текстов, позволяющим извлекать данные из файла или другого источника, и выводить их в любом формате, который вам нужен. Он является уже старым инструментом, но все еще так же полезен, как и раньше. Узнайте подробнее (англ): Awk Resources.
BASH
- Bash — это наиболее часто используемый интерфейс командной строки в мире Unix. Это интерфейс на основе текста по умолчанию и для Linux и для Mac OS X. Подробнее (англ): Bash Scripting Guide
Common Lisp
- Lisp является довольно уникальным языком программирования, возможно, самым древним языком и до сих пор продолжает использоваться. Это особенно важно в области искусственного интеллекта. Подробнее (англ): Common Lisp
C
- Если мы включим сюда две производные этого языка, то смело можно будет сказать, что ни один язык не проиносил большей пользы и большего влияния, чем С. Это особенно важно для развития операционных систем и другого программного обеспечения. Многие компиляторы и интерпретаторы для других языков написаны на языке C. Подробнее (англ): C Developer Resouces
C++
- Первоначально он назывался «C с классами», C++, во многих отношениях, просто более продвинутый преемник C (хотя в целом ситуация сложнее). C++ был разработан, чтобы добавить высокий уровень парадигмы программирования C, сохраняя при этом возможности аппаратной манипуляции низкого уровня. Многие из этих дополнений добавлялись в C на протяжении многих лет, и языки больше похожи на два диалекта одного и того же языка. Подробнее (англ): C++ Developer Resources
C#
- Использовался в качестве основного языка для . NET программирования, похож на C++, является расширением языка программирования C, но с важным дополнением в виде объектно-ориентированных возможностей. Подробнее (англ): C# Resources
CSS / CSS3
- CSS или Cascading Style Sheets, также не является языком программирования, а языком стиля страницы — это язык, предоставляющий стиль и правила компоновки документам и приложениям. Является основным используемым в Интернете языком стиля. Подробнее: CSS Resources
Emacs Lisp
- Emacs уже давно был известен как популярный и мощный текстовый редактор. Но добавление в него Emacs Lisp, превращает его в интегрированную среду разработки для почти любого языка программирования. Подробнее (англ): Emacs Lisp Resources Page.
F#
- F# — язык программирования общего назначения. Разработан, чтобы быть чрезвычайно эффективным. Будучи изначально только языком Microsoft, теперь является языком с открытым исходным кодом и используется на всех платформах. Подробнее (англ): F# Resources .
FORTAN
- Fortran впервые появился в 1957 году и до сих пор используется для решения некоторых из наиболее сложных проблем современной науки и техники. Подробнее (англ): Fortran Resources
FORTH
- Работа над Forth началась в 1968 году, и язык обычно используется на оборудовании, не имеющем традиционную операционную систему. Он также широко используется для управления станками. Подробнее (англ): FORTH Resources
Haskell
- Haskell является одним из наиболее популярных функциональных языков программирования, в дополнение к тому, что стал прототипом для дюжины других языков. Он широко используется в деловых и научных кругах и является отличным языком, с которого стоит начать знакомство с функциональным программированием. Подробнее (англ): Haskell Resources
HTML
- HTML не является языком программирования. Это язык разметки — язык добавления смысловых и стилистических аннотаций содержимому. Является основным языком для веб-контента. Знание его необходимо и обязательно всем веб-дизайнерам и веб-разработчикам, а также всем (писателям, редакторам), кто производит Интернет контент. Подробнее (англ): Ultimate Guide to HTML и Composing Good and Valid HTML
IDL
- IDL, или Interactive Data Language, это язык программирования, используемый в основном для анализа и визуализации данных. Он до сих пор широко используется в аэрокосмической промышленности и астрономии. Подробнее (англ): IDL Resources
INTERCAL
- INTERCAL является пародийным компьютерным языком, разработанным в начале 1970-х годов. Его создали как шутку, чтобы показать как технически сложны языки и трудно читаемы. Это реальный язык, который можно скачать, и с помощью которого можно даже что-то сделать. Подразумевается, что вы должны быть хорошо с ним знакомы для этого — но, опять же, не слишком хорошо, ведь и это не понравится самому INTERCAL. Подробнее (англ): INTERCAL Introduction and Resources
Java
- Java является языком высокого уровня и предназначен для использования на Java Virtual Machine. Имеет очень мало внешних зависимостей, и был предназначен для работы на любой физической машине. Много используется в сетевой архитектуре, а также во встраиваемых устройствах и других вычислительных приложениях. Подробнее (англ): See our detailed guide to Java.
Javascript
- JavaScript (не имеет фактического отношения к Java) это скриптовый язык, изначально разработанный для использования в веб-браузерах. Поэтому он имеет встроенную возможность работы с Document Object Model (DOM), отображением находящегося в памяти контента веб-страниц. Является основным языком программирования для front-end веб-разработки. В основном управляется событиями, и, благодаря Node.JS, в последнее время получил признание как серверный язык. Подробнее (англ): More on Javascript и jQuery. И здесь: Bootstrap Resources
Ksh
- Korn Shell (ksh) представляет собой интерфейс командной строки, используемый на Unix. Он был ранней оболочкой (shell), совместимый со стандартной оболочкой Bourne, но со всеми классными интерактивными функциями оболочки C. Подробнее (англ): Korn Shell Programming Resources
Linux Programming
- Программирование Linux включает в себя все: начиная от скриптов оболочки до разработки приложений и разработки ядер. Подробнее (англ): Linux Resource
Logo
- Logo один из самых ранних языков по обучению программированию, и до сих пор, вероятно, самый известный. Он известен своей черепахой, которую дети заставляют передвигаться компьютерными командами. Весело обучает программированию. Подробнее (англ): Logo Programming Resources
ML
- ML первоначально разработан как язык мета-программирования: язык для создания других языков. Но со временем он стал языком общего назначения, широко использовался в образовании, математике, естественных науках и даже финансах. Подробнее (англ): ML Resource and Introduction.
MPI
- Message Passing Interface (Интерфейс передачи сообщений) представляет собой стандартный протокол для отправки сообщений между процессами или программами. Был реализован в ряде языков программирования, включая C, C++, Java и Python. Благодаря MPI стали возможны параллельные вычисления. Подробнее (англ): See our Guide to MPI
Сетевое программирование с интернет-сокетами
- Сетевое программирование это процесс объединения компьютеров в сеть, а также создание программных систем, которые будут работать по всей этой сети. Гнездо (сокет) представляет собой конечную точку данных для этой сети, предоставляя интерфейс (API) для взаимодействия с системой извне. Большинство сетевых сокетов — это интернет сокеты, а это значит, что они используют Интернет протокол для связи. Подробнее (англ) :More about network programming & sockets
OAuth
- Вы, несомненно, использовали эту систему много раз, но вы могли этого даже не знать. Например, некоторые комментирующие системы позволяют войти с вашей учетной записью на Facebook или Google+. Это делается с помощью OAuth. Подробнее (англ): More on OAuth
Objective-C
- Еще одна версия C, созданная в 1980-е годы для того, чтобы обеспечить полностью объектно-ориентированную реализацию C. Сейчас основное применение этого языка приходится на Mac OSX и операционные системы iOS. До недавнего времени iOS приложения должны были быть написаны на Objective-C, но сейчас можно писать также на Swift. Подробнее (англ): More on Objective-C
OCaml
- OCaml является объектно-ориентированным функциональным компьютерным языком. По ML традиции, он много используется для написания других языков программирования и фреймворков. Подробнее (англ): OCaml Introduction and Resources.
Разработка операционной системы
- Эверестом среди работ по программированию считается разработка операционной системы. Если вы хотите доказать себе, что можете написать все, что угодно, то нет ничего лучше, чем написать свое собственное ядро операционной системы и связанные с ней инструменты.Но будьте осторожны: это путешествие по силам только храбрым и истинным программистам! Подробнее (англ): Operating System Development Resources.
Perl
- Очень полезный инструмент практически любого программиста. В качестве интерпретируемого языка его не нужно компилировать, иногда упоминается как «швейцарский армейский нож» скриптовых языков. Подробнее (англ): Perl Resources
PROLOG
- Пролог — язык логического программирования, разработан для обработки естественного языка. Подробнее (англ): Prolog Intro & Resources
Pure Data
- Pure Data является уникальным визуальным языком программирования. Был создан специально для того, чтобы позволить пользователям создавать видео, аудио и графические работы. Подробнее (англ): Pure Data Resource Page.
Python
- Python является языком программирования высокого уровня. Интерпретируемый (некомпилируемый) язык, также известный как «скриптовый язык». В основном используется в качестве инструмента для выполнения специализированных задач программирования, таких как задачи по автоматизации и анализу данных. Имеет сильный набор инструментов для математических и научных вычислений, часто используется исследователями. Подробнее (англ):Python Resources
Ruby on Rails
- Ruby on Rails — это фреймворк для веб-разработки для языка программирования Ruby. Он обеспечивает архитектуру MVC (Model View Controller), уровень абстракции базы данных, а также множество инструментов для ускорения процесса программирования веб-приложений. Очень популярен для быстрой разработки веб-приложений. Подробнее (англ): More about Ruby on Rails
SAS
- SAS является специализированным языком, предназначенным для анализа статистических данных. Широко используется в правительственных, научных кругах и бизнесе. Для людей, обладающим большим количеством данных, SAS является очевидным выбором. Подробнее (англ): SAS Programming Resources.
Scala
- Scala является относительно новым языком — более или менее новой и лучшей Java. Это отличный язык для Java-программистов, которые хотят быть более эффективными, или для людей, кто только начинают изучать программирование и хотят изучать мощный язык, который не будет ограничивать их в будущем. Подробнее (англ): Scala Resources.
Scheme
- Scheme — старый язык, но до сих пор используется для обучения программированию и более сложных предметов в информатике. Основан главным образом на Lisp, и частично на ALGOL. Подробнее (англ): Scheme Resource page.
Scratch
- Язык программирования Scratch был создан специально для обучения программированию детей в возрасте от 8 до 16 лет. Scratch — легкий, и с ним изучать основы логики программирования детям можно в увлекательной игровой форме. Подробнее (англ): Scratch Resources
Simula
- Simula — исторически важный язык, так как это был первый язык, внедривший понятия, ставшие основой для объектно-ориентированного программирования. Подробнее (англ): More on Simula’s interesting history.
SMIL
- SMIL (Synchronized Multimedia Integration Language) инструмент для тех людей, которые хотят создавать и распространять презентации. Особенно полезен, если вы хотите создавать презентации, которые должны время от времени обновляться. Подробнее (англ): SMIL Guide
SQL
- SQL (Structured Query Language) — язык, используемый для связи с Relational Database Management Systems (RDBMSes). SQL позволяет программисту создавать структуры данных, вставлять и редактировать данные, а также их запрашивать. Подробнее (англ): SQL Guide
Stata
- Stata это среда разработки и язык программирования для решения серьезных статистических проблем. И хотя он создан довольно давно, но все еще широко используется. Если вы связаны со статистической работой, Stata — отличный инструмент. Подробнее (англ): Stata Programming Resources
Swift
- Swift является новыйм языком программирования, разработанным компанией Apple, для iOS, OS X, watchOS, tvOS и Linux. Это язык будущего для разработчиков программ и приложений для устройств Apple. Подробнее (англ): Swift Resources
S-PLUS
- S-PLUS является коммерческой версией мощного языка программирования S, разработанного для выполнения статистического анализа. Проект GNU имеет свою собственную версию S, называемую R. Все необходимые ресурсы о S с акцентом на S-PLUS: S-PLUS Programming Resources Page.
UNIX Programming
- Широта программирования на Unix велика. Она охватывает диапазон от административных скриптов к коду на основе текста до разработки X Window. Подробнее (англ): UNIX Programming Resources
XML
- XML хорошо структурированный язык для разметки, предназначен, как для чтения человеком, так и машиной. Подробнее (англ):XML Guide & Validators
Урок подготовил: Акулов Иван
Источник урока
Если вы нашли опечатку — выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать [email protected].
Advertisement
Рейтинг языков программирования 2022. C# обошел Java, TypeScript сравнялся с PHP, а Dart – наиболее комфортный язык / Хабр
Python уже второй год подряд демонстрирует негативную динамику. Java тоже теряет позиции – в этом году она на третьем месте по популярности. На второе место поднялся язык C#. Доля JavaScript после небольшого падения в 2021 году снова растет. Но самая лучшая динамика у TypeScript (уже более 10% и прирост увеличился почти вдвое).
Украинский профильный ресурс DOU.UA провел очередной ежегодный опрос о языках программирования. На этот раз собрали 9245 анкет из Украины. Поехали.
Небольшое отступление и напоминание для тех кто пропустил, о том что DOU.UA в декабре 2021 года провел большой опрос среди украинских ИТ-специалистов о работе и зарплатах и оказалось, что медианные зарплаты у специалистов уровня Architect достигли отметки в $7200, зарплата у Senior увеличилась до $5500. Подробнее об этом можете прочитать в этой статье.
Коммерческое использование
Самым популярным языком среди украинских разработчиков остается JavaScript — 18,8%. На втором месте C# у него второй год подряд положительная динамика. Можно предположить, что это благодаря активному росту геймдев-индустрии. Далее следует Java, доля которой с 2017 года стабильно уменьшается.
Если TypeScript продолжит тем же темпом набирать популярность, то в следующем году есть все шансы оказаться в первой пятерке и даже тройке языков.
Какой язык используете для работы сейчас
В общем, популярность большинства языков в этом году выросла. Нехорошая динамика, не считая Java и Python, есть еще только у Ruby, C, Scala, Clojure и C++. Последний, кстати, продолжает стремительно терять популярность. Не в последнюю очередь из-за снижения доли среди новичков. Об этом будет дальше.
Какой язык используете для работы сейчас (2012–2021гг.)
Сферы использования
Если смотреть по отрасли применения, то ситуация другая: в бэкенд-программировании Java все еще доминирует, C# на третьем месте после PHP, а доля TypeScript и JavaScript не так уж велика, C# — также является популярным языком в геймдеве.
Языки программирования по сферам использования
На фронтенде TypeScript продолжает «откусывать» часть у JavaScript, но довольно медленно. Что касается обработки данных, то мы видим, что Python становится стандартом де-факто.
Ну и наконец интересно посмотреть на относительное количество респондентов в этих категориях.
В какой сфере в основном работаете
Личные предпочтения
Еще интересный вопрос – какой язык выбирают следующим в проекте? Здесь лидирует TypeScript. Однако напомним, что смотреть на выбор разработчиков оказалось плохим предиктором дальнейшего распространения – на практике их приглашают на проект, когда язык уже определен.
Если бы вы сейчас начинали коммерческий проект и у вас была бы свобода выбора языка
Посмотрим на «индекс предпочтения» — это относительное количество разработчиков, пишущих языком X и для следующего проекта в своей сфере выберут тот же язык X.
Наиболее комфортным является Dart, далее в первом кластере Clojure, Kotlin, Rust, Swift, C#, Go и TypeScript.
Есть и неожиданность: перемещение Scala из первого кластера во второй. Относительно языков, которые рассматривают как альтернативные: из 80 человек, которые указали Scala как основной язык программирования, 50 начали бы проект им же, 9 перешли бы на Python. Возможно, это связано с тем, что Spark (написанный на Scala) достаточно активно работает над Python API для пользователей. Еще 8 не указали следующий язык, далее следуют Java(4), Rust(3), Go(2) и Swift(2). Еще по одному голосу у Kotlin и Clojure.
Если смотреть на направления миграции с Java — это, прежде всего, Kotlin, далее Go, Scala и Python, затем TypeScript и Dart. Еще интересное направление миграции из PHP, это преимущественно Go и JavaScript и Python.
Изучение новых языков
Около трети респондентов планируют выучить новый язык в течение следующего года. На этот раз фаворитом является Go.
Какие языки вы собираетесь изучать в следующем году
Большинство респондентов планируют выучить следующий язык самостоятельно или с помощью коллег. Около 7% думают обратиться к профессиональным преподавателям.
Если мы уже затронули тему обучения, то посмотрим, с каким бэкграундом люди начинают свой путь. Чтобы это выяснить, проанализируем, какой язык программирования использовали как первый наши респонденты с опытом работы менее года.
Похоже, первым языком у начинающих скоро станет JavaScript.
Первый язык новичков
Дополнительные языки
Среди дополнительных языков безоговорочный лидер – JavaScript (более 28%). Далее следует TypeScript (17%). У всех остальных языках менее 10%.
Какие языки вы используете как дополнительные
Половина респондентов участвует в проектах с открытым кодом.
Какие языки используете в опенсорс-проектах
Финальная таблица
Дополнительные данные
Судя по данным, мы можем констатировать, что пик «войти в IT» был несколько лет назад. Сегодня количество новичков растет, но до бума прошлых лет не дотягивает.
Опыт работы программистом с динамикой (2012-2022 гг.)
Посмотрим на корреляцию между возрастом и языком программирования.
Возраст разработчика в зависимости от языка
Опыт разработчика в зависимости от языка
Если у вас есть комментарии, предложения или замечания по статье 👉 переходите к обсуждению или пишите на vlada@dou. ua.
Данные и скрипты обработки можно найти на GitHub
Анализ данных и текст: Руслан Шевченко
Инфографика: Игорь Яновский
Обзор популярных языков программирования для разработки приложений
Выбор языка программирования для изучения может быть сложной задачей. Вы предпочитаете проверенный язык, который существует уже несколько десятилетий? Или вы сосредотачиваетесь на инновациях и выбираете передовой язык со всеми прибамбасами? Изучая все тонкости каждого языка, вы можете легко принять решение в зависимости от вашего уровня навыков, того, что вы хотите делать, и проекта, который вы пытаетесь сделать.
Java
Java — один из крупнейших языков программирования в мире и один из старейших, используемых до сих пор. Почти на каждом компьютере установлена среда выполнения Java, которая позволяет запускать любое программное обеспечение, написанное на Java. Эта независимость от платформы делает его идеальным для широкого спектра программ. Кроме того, этот язык используется для разработки приложений для Android, что делает его широко популярным среди людей, которые хотят создавать приложения. Это хороший язык для изучения бизнес-кодирования, поскольку он используется многими розничными торговцами, банками и другими очень крупными организациями.
JavaScript
JavaScript не имеет отношения к Java, как ни странно. JavaScript — это веб-язык по своей сути, используемый, когда вы хотите создать веб-сайт со специальной функциональностью. Популярность этого языка резко возросла в последние годы, особенно с ростом популярности Node.js; эта библиотека позволяет программисту использовать JavaScript вне веб-браузера, что привело к увеличению использования языка в целом.
Python
Python — еще один из самых популярных языков программирования. Он подчеркивает удобочитаемость, удаляя большую часть синтаксиса, включенного в другие языки, вместо этого используя легко читаемые отступы. Python, как и Java, C/C# и C++, используется для создания автономного программного обеспечения для запуска на компьютере. Это не так полезно для мобильных приложений или Интернета. Скорость, с которой программа может быть создана на этом языке, является одним из самых больших преимуществ Python.
C
C — один из старейших языков программирования, изобретенный в середине 1970-х годов. Старые языки, такие как C, имеют гораздо более низкий уровень, чем более современные языки; это означает, что программист может получить более прямой доступ к памяти компьютера, и для запуска программы требуется меньше настроек, таких как среда выполнения, необходимая для Java. Этот язык более сложен для понимания, чем некоторые другие, но он даст вам глубокие знания о строительных блоках программ и дизайне программного обеспечения.
C#/C++
C# — одно из двух расширений C. Оно намного новее и более высокого уровня, чем C, и устраняет многие трудности, связанные с C. Например, когда программа, написанная на C, завершена. с блоком памяти блок должен быть вручную освобожден в коде, чтобы другая программа могла его использовать. В C# эти низкоуровневые задачи выполняются автоматически, подобно тому, как работают другие языки.
C++ — это другой «побочный продукт» C, нечто среднее между C и C#. Раньше этот язык назывался «C с классами», поскольку в этом основное отличие этого языка от C. В C++ вы можете использовать объектно-ориентированный подход с использованием классов, но при этом управлять своей памятью для повышения эффективности.
HTML/CSS
Хотя эти два языка технически не являются языками программирования, они широко используются в сочетании с другими языками. Эти два языка используются для создания функциональных и красивых веб-сайтов. HTML означает язык гипертекстовой разметки, и это структурный язык, который можно использовать для определения того, как будет выглядеть веб-сайт. CSS расшифровывается как каскадные таблицы стилей и содержит директивы дизайна вашего веб-сайта. Например, HTML будет использоваться для размещения заголовка на странице, а CSS — для изменения цвета фона или размера шрифта.
Objective-C/Swift
Хотя это два разных языка, они оба используются почти исключительно для одной цели: создания мобильных приложений в экосистеме Apple. Swift — один из самых новых языков на рынке, которому всего несколько лет, и он предназначен для работы как с Objective-C, так и сам по себе. Из-за закрытой экосистемы Apple довольно сложно использовать эти языки на компьютере с Windows. Им требуется работающая macOS, проприетарная операционная система Apple, которую по закону можно запускать только на их машинах. Однако такая тесная связь между macOS, iOS и Swift/Objective-C означает, что тестирование на этих языках не составляет труда.
- Основы Java
- Руководство по Java для начинающих
- Изучение Java
- JavaScript: общее введение
- Почему JavaScript?
- Введение в Node.js
- Чем хорош Python
- Учебник по Python
- Начало работы: выбор интерпретатора Python
- 11 советов для начинающих по изучению Python
- Язык Си
- Интерактивное руководство по C#
- Учебники по разработке на C++
- Что такое HTML?
- Введение в HTML: создание страниц для Интернета
- Начиная с HTML и CSS
- Swift против Objective-C
- Начало работы с iOS: Objective-C против Swift
- Свифт: Основы
- Лучшие языки программирования
0.
2 — Введение в языки программирования — Изучение C++Alex
Современные компьютеры невероятно быстры и постоянно становятся быстрее. Однако компьютеры также имеют некоторые существенные ограничения: они изначально понимают только ограниченный набор команд, и им нужно точно указать, что делать.
Компьютерная программа (также обычно называемая приложением) представляет собой набор инструкций, которые компьютер может выполнять для выполнения какой-либо задачи. Процесс создания программы называется программированием. Программисты обычно создают программы, создавая исходный код (обычно сокращенный до кода), который представляет собой список команд, введенных в один или несколько текстовых файлов.
Совокупность физических частей компьютера, составляющих компьютер и выполняющих программы, называется аппаратным обеспечением. Когда компьютерная программа загружается в память и оборудование последовательно выполняет каждую инструкцию, это называется запуском или выполнением программы.
Машинный язык
ЦП компьютера не поддерживает C++. Ограниченный набор инструкций, которые ЦП может понимать напрямую, называется машинным кодом (или машинным языком, или набором инструкций).
Вот пример инструкции на машинном языке: 10110000 01100001
Когда впервые были изобретены компьютеры, программистам приходилось писать программы непосредственно на машинном языке, что было очень трудоемко и требовало много времени.
Организация этих инструкций выходит за рамки этого введения, но интересно отметить два момента. Во-первых, каждая инструкция состоит из последовательности 1 и 0. Каждый отдельный 0 или 1 называется двоичной цифрой или битом для краткости. Количество битов, составляющих одну команду, может различаться — например, некоторые ЦП обрабатывают инструкции, которые всегда имеют длину 32 бита, тогда как некоторые другие ЦП (например, семейство x86, которое вы, вероятно, используете) имеют инструкции, которые могут быть переменная длина.
Во-вторых, каждый набор двоичных цифр интерпретируется ЦП в команду для выполнения очень конкретной задачи, например, сравнить эти два числа или поместить это число в эту ячейку памяти . Однако, поскольку разные ЦП имеют разные наборы инструкций, инструкции, написанные для одного типа ЦП, нельзя было использовать на ЦП, который не использует один и тот же набор инструкций. Это означало, что программы, как правило, не были переносимы (использовались без серьезной доработки) на различные типы систем, и их приходилось писать заново.
Язык ассемблера
Поскольку машинный язык настолько сложен для чтения и понимания людьми, был изобретен язык ассемблера. В языке ассемблера каждая инструкция идентифицируется коротким сокращением (а не набором битов), и могут использоваться имена и другие числа.
Вот та же инструкция, что и выше, на языке ассемблера: mov al, 061h
Это делает ассемблер намного проще для чтения и записи, чем машинный язык. Однако ЦП не может напрямую понимать язык ассемблера. Вместо этого программа сборки должна быть переведена на машинный язык, прежде чем она сможет быть выполнена компьютером. Это делается с помощью программы, называемой ассемблером. Программы, написанные на языках ассемблера, как правило, работают очень быстро, и ассемблер все еще используется сегодня, когда скорость имеет решающее значение.
Однако у ассемблера есть и недостатки. Во-первых, языки ассемблера по-прежнему требуют большого количества инструкций даже для выполнения простых задач. В то время как отдельные инструкции сами по себе в некоторой степени удобочитаемы для человека, понимание того, что делает вся программа, может быть сложным (это немного похоже на попытку понять предложение, глядя на каждую букву в отдельности). Во-вторых, язык ассемблера по-прежнему не очень переносим — программа, написанная на ассемблере для одного процессора, скорее всего, не будет работать на оборудовании, использующем другой набор инструкций, и ее придется переписывать или сильно модифицировать.
Языки высокого уровня
Для решения проблем читабельности и переносимости были разработаны новые языки программирования, такие как C, C++, Pascal (а позже такие языки, как Java, Javascript и Perl). Эти языки называются языками высокого уровня, поскольку они предназначены для того, чтобы позволить программисту писать программы, не заботясь о том, на каком компьютере будет выполняться программа.
Вот та же инструкция, что и выше, на C/C++: a = 97;
Как и программы на ассемблере, программы, написанные на языках высокого уровня, перед запуском должны быть переведены в формат, понятный компьютеру. Это можно сделать двумя основными способами: компиляцией и интерпретацией.
Компилятор — это программа, которая считывает исходный код и создает автономную исполняемую программу, которую затем можно запустить. После того, как ваш код был преобразован в исполняемый файл, вам не нужен компилятор для запуска программы. Вначале компиляторы были примитивными и создавали медленный неоптимизированный код. Однако за прошедшие годы компиляторы стали очень хороши в создании быстрого оптимизированного кода, а в некоторых случаях могут выполнять работу на языке ассемблера лучше, чем люди!
Вот упрощенное представление процесса компиляции:
Поскольку программы на C++ обычно компилируются, вскоре мы более подробно рассмотрим компиляторы.
Интерпретатор — это программа, которая непосредственно выполняет инструкции в исходном коде, не требуя их предварительной компиляции в исполняемый файл. Интерпретаторы, как правило, более гибкие, чем компиляторы, но менее эффективны при выполнении программ, поскольку процесс интерпретации необходимо выполнять каждый раз при запуске программы. Это означает, что интерпретатор необходим каждый раз при запуске программы.
Вот упрощенное представление процесса интерпретации:
Дополнительное чтение
Хорошее сравнение преимуществ компиляторов и интерпретаторов можно найти здесь.
Большинство языков можно компилировать или интерпретировать, однако традиционно такие языки, как C, C++ и Pascal, компилируются, тогда как языки сценариев, такие как Perl и Javascript, обычно интерпретируются. Некоторые языки, такие как Java, используют смесь этих двух.
Языки высокого уровня обладают многими полезными свойствами.
Во-первых, языки высокого уровня намного легче читать и писать, потому что команды ближе к естественному языку, который мы используем каждый день. Во-вторых, языки высокого уровня требуют меньшего количества инструкций для выполнения той же задачи, что и языки более низкого уровня, что делает программы более краткими и понятными. В С++ вы можете сделать что-то вроде a = b * 2 + 5;
в одну строку. На ассемблере для этого потребовалось бы 5 или 6 различных инструкций.
В-третьих, программы можно компилировать (или интерпретировать) для многих различных систем, и вам не нужно изменять программу для работы на разных ЦП (вы просто перекомпилируете для этого ЦП). Например:
Есть два общих исключения для переносимости. Во-первых, многие операционные системы, такие как Microsoft Windows, содержат специфичные для платформы возможности, которые вы можете использовать в своем коде. Это может значительно упростить написание программы для конкретной операционной системы, но за счет переносимости. В этих руководствах мы избегаем кода, специфичного для платформы.
Некоторые компиляторы также поддерживают специфичные для компилятора расширения — если вы их используете, ваши программы не смогут быть скомпилированы другими компиляторами, которые не поддерживают те же расширения без модификации. Мы поговорим об этом позже, когда вы установите компилятор.
Правила, передовой опыт и предупреждения
По мере изучения этих учебных пособий мы будем выделять многие важные моменты в следующих трех категориях:
Правило
язык. Несоблюдение правила обычно приводит к тому, что ваша программа не работает.Передовая практика
Передовая практика — это то, что вы должны делать, потому что такой способ работы обычно считается стандартным или настоятельно рекомендуется. То есть либо все так делают (а если вы поступаете иначе, вы будете делать то, чего люди не ожидают), либо это превосходит альтернативы.