Python и другие языки программирования: сходство и отличия. Отличия языков программирования


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

 

Гвидо ван Россум, создатель высокоуровневого языка программирования Python, написал в статью, в которой кратко очертил сходство и различие своего детища и других интерпретируемых языков. Статья была написана им еще в 1997 году, поэтому он заранее предупреждает о вероятных изменениях и публикует свою статью «Comparing Python to Other Languages» на сайте python.org «скорее в качестве исторического артефакта».

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

Java

Предполагается, что программы, написанные на Python, в целом работают медленнее, чем программы на Java, но при этом их разработка занимает гораздо меньше времени.

Программы на Python обычно в 3-5 раз короче, чем их аналоги на Java. Эта разница может быть приписана встроенным в Python на высоком уровне типов данных и их динамической типизации.

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

Из-за динамической типизации выполнение программы на Python идет тяжелее, чем в случае с Java. Например, вычисляя выражение a+b, программа должна сначала определить тип объектов a и b, ведь он неизвестен при компилляции. Затем она запрашивает подходящую операцию сложения, которая может быть перезагружена методом, определенным пользователем.

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

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

JavaScript

Частично Python совпадает JavaScript, преимущественно в том, что касается объектов. Как и в случае с JS, создание программ на Python предполагает использование простых функций и переменных, не занимаясь определениями классов. JS на этом и останавливается. Что же касается Python, он позволяет писать гораздо более крупные программы и повторно использовать код. Для этого он задействует объекто-ориентированный стиль программирования, где велика роль классов и наследования.

Perl

Python и Perl происходят из скриптов Unix. У них много сходных черт, но философия различна.

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

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

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

TcL

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

В «типовых» больших приложениях на TcL обычно можно найти расширения на C или C++ (для них это характерно). Но аналогичные приложения можно создать с использованием одного только Python. Конечно, такая разработка гораздо выгоднее по времени, ведь нет необходимости возиться с частями на C или C++.

Считается, что подкупающая черта TcL – инструмент Tk. Python перенял его интерфейс в качестве своей стандартной библиотеки GUI-компонентов.

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

Smalltalk

Возможно, самая большая разница между Python и Smalltalk заключается в более «распространенном» синтаксисе Python, который является значительным подспорьем при обучении программированию. Как и у Smalltalk, в Python типизация и связывание осуществляются динамически, а всё в Python является объектом. Но Python различает встроенные типы объектов и классы, определяемые пользователем, и зачастую не разрешает наследование от объектов встроенного типа.

Стандартная библиотека типов данных в Smalltalk более «рафинирована», в то время как библиотека Python имеет лучшие возможности для взаимодействия с Интернет- и www- реалиями, такими как email, HTML, FTP.

Python имеет отличия в философии касательно разработки окружения и распространения кода. Там где Smalltalk имеет монолитный «образ системы», который включает в себя как окружение, так и пользовательскую программу, Python хранит оба стандартных модуля в отдельных файлах, которые легко могут быть изменены или вынесены за пределы системы. Одним из последствий этого является существование более чем одной опции для приложения графического интерфейса пользователя (GUI) к программе на Python, поскольку GUI не встроен в систему.

С++

Почти все сказанное о Java относится также и к C++, но с оговоркой: если код на Python в 3-5 раз короче, чем его эквивалент на Java, то в случае с С++ он короче в 5-10 раз! Не связанные между собой случайные примеры свидетельствуют, что один программист на Python может сделать за два месяца то, что два программиста на С++ не могут завершить за год.

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

Common Lisp и Scheme

Эти языки близки к Python своей динамической семантикой, но настолько различаются своим подходом к синтаксису, что их сравнение превращается почти в религиозный спор: является ли скудость синтаксиса Lisp преимуществом или недостатком? Следует заметить, что Python имеет интроспективную совместимость подобную к аналогичной у Lisp, а программы на Python могут конструировать и исполнять элементы программ на лету.

Обычно практичность является решающим фактором: Common Lisp большой (во всех смыслах), а мир Scheme разделяется на множество несовместимых версий, тогда как Python имеет единую, свободную, компактную реализацию.

techrocks.ru

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

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

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

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

Отличия языков программирования высокого уровня

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

К примеру, если подключенное к ПК устройство (например, кулер) может работать на максимальных оборотах 1000 об/мин, то когда программист, используя низкоуровневый язык, пишет на него драйвера, он должен это знать и учитывать, так как если он поставить большее количество оборотов, то устройство испортится. Программисты же, которые используют языки программирования высокого уровня даже не задумываются об этом – они просто задают, к примеру, запуск кулера в определенный момент времени и его остановку. Но стоит помнить, что это довольно упрощенные определения.

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

Когда возникли языки высокого уровня

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

Также приблизительно в те же годы был создан всеми любимый язык C, с которого в итоге развились и С++ и СИ Шарп, и ряд других достойных примеров, список которых может оказаться довольно длинным. Также именно из высокоуровневого языка С берет свое начало популярнейший в наше время язык высокого уровня Java, на котором одинаково эффективно пишутся программы, скрипты, плагины и прочие «примочки» как на компьютеры, так и на разнообразные гаджеты: смартфоны, планшеты, смарт часы, очки виртуальной и дополненной реальности. Указанные языки были лидерами еще в далекие 80-90-е годы и остаются ими и поныне, хотя конечно, за это время изменилось и появилось очень многое.

Некоторые популярные языки высокого уровня

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

C#

СИ Шарп является одним из основных языков для написания программного обеспечения под самую популярную операционную систему для настольных компьютеров Windows от Microsoft. Именно в недрах данной компании C# и зародился, используясь в первую очередь для разработки приложения на платформу .NET Framework. С его помощью довольно легко реализовывать взаимодействие с базами данных MS SQL, он прекрасно интегрируется с другими языками (тем самым С и С++).

С++

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

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

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

Java

Замечательный высокоуровневый язык программирования, который активно используется в написании ПО для компьютерной техники. В последние годы в него буквально вдохнула вторую жизнь мобильная ОС Android, программы на которую пишутся в основном именно на Java. Благодаря последнему факту актуальность данного языка ничуть не убывает. Зная его можно писать отличные приложения как для ПК, так и для самых разных современных гаджетов (включая смарт часы и очки виртуальной реальности).

PHP

Отличный язык, дополняющий современные языки программирования высокого уровня. Он незаменим для разработки самых разнообразных веб-приложений, настройки работы серверного ПО, создания динамичных Интернет-ресурсов, снабженных различными интерактивными функциями, всплывающими окнами и прочими «погремушками». Если Вы видите в своем браузера на любимом сайте появившееся окно с приложением – скорее всего оно написано именно на PHP.

Python

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

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

bunkerbook.ru

Языки программирования. Обзор, возможности, достоинства, недостатки

Оглавление

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

2. Компиляторы и интерпретаторы. 3

3. Уровни языков программирования. 5

4. Языки низкого уровня. 6

4.1 Ассемблер. 6

5. Обзор языков программирования высокого уровня. 7

5.1 Фортран. 7

5.2 Кобол. 7

5.3 Алгол. 8

5.4 Паскаль. 8

5.5 Бейсик. 9

5.6 Си. 9

5.7 Си++. 10

6. Список литературы: 12

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

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

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

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

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

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

Компиляторы и интерпретаторы.

Что же нужно, чтобы «создать язык программирования»?

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

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

Трансляция – это перевод. Если мы посмотрим, как работают переводчики с иностранных языков, то тоже увидим, что существует два подхода: синхронный перевод и перевод текстов.

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

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

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

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

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

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

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

Существует два уровня языков программирования: языки низкого уровня и языки высокого уровня .

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

Языки низкого уровня мало похожи на нормальный, привычный человеку язык. Большие, грамосткие программы на таких языках пишутся редко. Зато если программа будет написана на таком языке, то она будет работать быстро, занимая маленький объем и допуская минимальное количество ошибок. Чем ниже и ближе к машинному уровень языка, тем меньше и конкретнее задачи, которые ставятся перед каждой командой.

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

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

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

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

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

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

· алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;

mirznanii.com

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

Лекция 1 – Языки программирования. Visual Basic

{Материал из Википедии — свободной энциклопедии} Язы́к программи́рования— формальнаязнаковаясистема, предназначенная для описанияалгоритмовв форме, которая удобна для исполнителя (например,компьютера). Язык программирования определяет наборлексических,синтаксическихисемантическихправил, используемых при составлениикомпьютерной программы. Он позволяетпрограммистуточно определить то, на какие события будет реагировать компьютер, как будут храниться и передаватьсяданные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах. Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования (См.Список языков программирования(англ.)). Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.Cоздатели языков по-разному толкуют понятиеязык программирования. Среди общих мест, признаваемых большинством разработчиков, находятся следующие:

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

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

  • Исполнение:язык программирования может использовать специальные конструкции для определения и манипулированияструктурами данныхи управления процессом вычислений.

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

  • Типов и структур данных

  • Операционную семантику (алгоритм вычисления конструкций языка)

  • Семантические конструкции языка

  • Библиотеки примитивов (например, инструкции ввода-вывода)

  • Философии назначения и возможностей языка

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

Типы данных

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

Особая система, по которой данные организуются в программе, — это система типовязыка программирования; разработка и изучение систем типов известна под названиемтеория типов. Языки могут быть классифицированы как системысо статической типизациейи языки сдинамической типизацией. Статически-типизированные языки могут быть в дальнейшем подразделены на языки собязательной декларацией, где каждая переменная и объявление функции имеет обязательное объявление типа, и языки свыводимыми типами. Иногда динамически-типизированные языки называютсялатентно типизированными.

Структуры данных

Системы типов в языках высокого уровня позволяют определять сложные, составные типы, так называемые структуры данных. Как правило, структурные типы данных образуются какдекартово произведениебазовых (атомарных) типов и ранее определённых составных типов. Основные структуры данных (списки, очереди, хэш-таблицы, двоичные деревья и пары) часто представлены особыми синтаксическими конструкциями в языках высокого уровня. Такие данные структурируются автоматически.

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

Языки программирования делятся на два класса — компилируемыеиинтерпретируемые. Программа на компилируемом языке при помощи специальной программыкомпиляторапреобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается висполняемый файл, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит программу с языка высокого уровня на низкоуровневый язык, понятный процессору. Если программа написана на интерпретируемом языке, тоинтерпретаторнепосредственно выполняет (интерпретирует) ее текст без предварительного перевода. При этом программа остается на исходном языке и не может быть запущена без интерпретатора. Можно сказать, что процессор компьютера — это интерпретатор машинного кода. Кратко говоря, компилятор переводит программу на машинный язык сразу и целиком, создавая при этом отдельную программу, а интерпретатор переводит на машинный язык прямо во время исполнения программы. Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например,Паскаль, можно написать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов). Для любого интерпретируемого языка можно создать компилятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения. Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем при каждом изменении текста программы требуется ее перекомпиляция, что создает трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция. Интерпретируемые языки обладают некоторыми специфическими дополнительными возможностями (см. выше), кроме того, программы на них можно запускать сразу же после изменения, что облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий. Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без дополнительной программы-интерпретатора. Некоторые языки, например,JavaиC#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня,байт-код. Далее байт-код выполняетсявиртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation,JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine,JVM), для C# —Common Language Runtime. Подобный подход в некотором смысле позволяет использовать плюсы как интерпретаторов, так и компиляторов. Следует упомянуть также оригинальный языкФорт(Forth), который является как бы одновременно интерпретируемым и компилируемым.

studfiles.net

Learning Curve: особенности языков программирования

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

Итак, типичный вопрос: я новичок, какой язык программирования лучше выбрать? Или иногда даже так: а стоит ли мне переучиться с языка X на язык Y? Вариант: в чем специфика обучения (отличия) языков X и Y?

Мой ответ таков — что касательно перспективных языков программирования и технологий, многоуважаемая мной Майкрософт прочно опирается на понятие Learning Curve (кривая обучения, этапы адаптации). Это очень важная концепция, она имеет критичное значения для успешного переучивания/изучения и для последующего попадания в струю востребованного тренда. У каждой отдельной технологии программирования есть своя Learning Curve, специфичная и особенная, давайте же попробуем взглянуть на неё с некоторой долей юмора, но, тем не менее, попытаться при этом извлечь определенную пользу.

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

Javascript

Особенности обучения (хронология) языку Javascript:

Java

Особенности обучения (хронология) языку Java:

CPP

Особенности обучения (хронология) языку C++:

Python

Особенности обучения (хронология) языку Python:

Lisp

Особенности обучения (хронология) языку Lisp:

Haskell

Особенности обучения (хронология) языку Haskell:

PHP

Особенности обучения (хронология) языку PHP:

© Сказка ложь, да в ней намёк.

Продолжение поста: Learning Curve 2: этапы развития в программировании.

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

blogerator.org

какие языки программирования существуют? и для чего нужен каждый? в чем их отличия?

В них отличия всего лишь в тегах. Какие отличия между испанским и английским языками: разные слова, каких то слов нет в одном языке, каких то в другом, некоторые слова одинаковые. В программирование тоже самое, только вместо слов теги. А перечислить их все сложно. Их много: 1.Веб языки: HTML, PHP, CSS,JavaScript,Flash 2.Программные языки: Pascal,Turbo Pascal,C,C++. Кстати советую начать с Веб языков. Потому что они легче, а основа похожа. Тем более создашь платформу для распространения своих программ. Желаю удачи, Дорогой Коллега! Я ведь тоже программист.

Войну и мир в двух словах не рассказать? :)

Эк тебя тыркнуло! Хлебнул лишнего или током стукнуло? Знаешь русский и имеешь подвешенный - этого достаточно, поверь - это так!

Что - про все рассказать? :))))))))

Несколько тысяч языков. Отличия - когда кому-то казалось что-то в существующих языках неудобным, изобретался новый язык, чаще всего не принципиально новый, а с "исправлениями". Из первых: Fotran - для технических вычислений, Cobol - для экономистов, Basic - для "простого народа", Algol - для простой записи математических алгоритмов, PL/1 - как очень универсальный, Pascal - для обучения студентов основам программирования, C - для написания операционных систем.. . А потом в них вносились усовершенствования. и из каждого получались десятки других, да и на новых концепциях возникали совсем новые языки - язык списочных структур Lisp, язык автоматизации логических выводов Prolog, язык специально для работы со строками символов Refal, язык компактной записи алгебры матриц и векторов APL...

<a rel="nofollow" href="http://rutracker.org/forum/viewtopic.php?t=3232116" target="_blank" >PureBasic.</a>

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

touch.otvet.mail.ru

Чем отличаются языки программирования низкого уровня от языков высокого? Каким является Delphi? А каким C++?

Машинные языки сложны в изучении и икод написаный на нём прочитать гораздо сложней чем если программа написана на языке высокого уровня. Чтоб написать програму на низкоуровневом языке придётся сначало понять алгоритмы работы компьютера (как хранятся данные в ОЗУ, какие регистры есть в процессоре и т. п. ) в ЯВУ этого гемора как правило нет и выбирается компелятор под определёную архитектуру. (типа код для мак и пс будет одинаковый или ооочень похожий, но скомпилирован по разному) . Делфи и С++ являются высокоуровневыми.

Оба высокого.<br>Низкого - это ассемблер, когда команды языка соответствуют командам процессора.

wikipedia.org/wiki/Язык_программирования

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

Оба высокого!<br>QuikeBasic - это язык низкого уровня.<br>Но если не ошибаюсь, Pascal уже высокого!<br>Учи языки высокого уровня - будет тебе счастье!

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

В настоящее время насчитывается несколько сотен таких языков, а если считать и их диалекты, то это число возрастет до нескольких тысяч. Языки программирования высокого уровня существенно отличаются от машинно-ориентированных (низкого уровня) языков. Во-первых, машинная программа в конечном счете записывается с помощью лишь двух символов 0 и 1. Во-вторых, каждая ЭВМ имеет ограниченный набор машинных операций, ориентированных на структуру процессора. Как правило, этот набор состоит из сравнительно небольшого числа простейших операций, типа: переслать число в ячейку; считать число их ячейки; увеличить содержимое ячейки на +1 и т.п. Команда на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементарные арифметические и логические операции. Команда содержит код и адреса ячеек, с содержимым которых выполняется закодированное действие. <br><br>Языки программирования высокого уровня имеют следующие достоинства: <br><br>aлфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста; <br>набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса; <br>конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде; <br>используется аппарат переменных и действий с ними; <br>поддерживается широкий набор типов данных. <br> Таким образом, языки программирования высокого уровня являются машинно-независимыми и требуют использования соответствующих программ-переводчиков (трансляторов) для представления программы на языке машины, на которой она будет исполняться.

Delphi и C++ высокого уровня. Языки низкого уровня являются машинно-ориентированными (програмирование ведётся на языке машин (машинные коды)). А высокого процедурно-ориентированными, объектно-ориентированными (Delphi, С++), и т.д., програмирование ведётся на удобном для людей языке!

<a rel="nofollow" href="http://notepad-plus.sourceforge.net/ru/site.htm" target="_blank" >Ответы на ВАШ вопрос поищите ЗДЕСЬ</a> <a rel="nofollow" href="http://www.samouchka.net/ebooks/cpp/" target="_blank" >…и ЗДЕСЬ</a> <a rel="nofollow" href="http://www.codenet.ru/progr/visualc/" target="_blank" >…и Здесь</a> <a rel="nofollow" href="http://books.kulichki.com/index.php?book=c" target="_blank" >…и ЗДЕСЬ</a> <a rel="nofollow" href="http://progvcpp.narod.ru/" target="_blank" >ну и конечно ЗДЕСЬ :)</a>

touch.otvet.mail.ru