Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АрхЭВМ часть 1.doc
Скачиваний:
24
Добавлен:
08.02.2015
Размер:
1.52 Mб
Скачать
    • Почему не существует «идеальных» языков программирования

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

FORTRAN и COBOL считаются сегодня «динозаврами» среди языков программирования: они просто были первыми. Это специальные языки: COBOL позволяет управлять файлами и данными, сортировать, выбирать и форматировать их. Возможность вычислений в нем ограничена (Там нет используемых в естественно-научных и технических областях важных трансцендентных функций и синтаксис схож с разговорным английским, а не с формулами).

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

Новая область применения

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

  • APL: возможно самый необычный из существующих языков. Там используются не команды, а операторы, напоминающие математические символы, нет циклов, управления данными. APL — язык диалога, позволяющий вести подсчеты — довольно серьезные. Правда мне неизвестен ни один физик или математик, программирующий на APL.

  • LISP, Prolog: При программировании на С или Pascal вы вводите алгоритм. В LISP и Prolog все по-другому, они основаны на правилах: вводятся факты и связи и программа сама отыскивает решение проблемы. В восьмидесятых, когда ИИ был в моде, этим языкам предсказывали большое будущее, но это не сбылось.

  • Непривычная концепция: В центре внимания FORTH находился стек в роли памяти, в PEARL это было управление в реальном времени, а в OCCAM возможность запускать программу на нескольких компьютерах одновременно. Эти концепции ограничены различными условиями. Из-за маленькой памяти и медленных процессоров FORTH был популярен, однако его концепция отличается от всех остальных языков. PEARL был популярен, так как в распоряжении пользователей было не так много машинного времени, и укрепился в задачах управления, но не дальше. Сегодня PEARL заменяется С. OCCAM был тесно связан с семейством процессоров — транспьютерами T212, 414 и T800 компании Inmos и другие поставщики его не переняли.

  • Возможность легкого изучения: BASIC в этом превосходит всех. Однако многие используют BASIC как ступеньку к изучению других языков программирования. Ему просто недостает синтаксических элементов, которые есть в других языках.

Причины нераспространения концепций

Большинство творений неизвестно миру и большинству программистов. Вам знакомы SNOBOL или Pilot? Но есть видные примеры языков, которые не прижились:

Вы изобретаете новый язык — вместо того, чтобы улучшить старый

В 1970-71 годах возникли С и Pascal — два структурных языка программирования с различными притязаниями. Pascal как легкочитаемый язык для обучения и С как близкий к «железу» язык «Суперассемблера». Разработчик Pascal Николас Вирт создал язык Modula — на основе концепции, по которой видимыми снаружи были только модули с важной информацией, а потом объектно-ориентированный язык Oberon. В противовес ему был поставлен С++ — как объектно-ориентированное расширение С, позволившее программистам медленно перейти на эту концепцию, без перехода на другой язык. Modula и Oberon вдохновили другие языки, но сами не прижились. В сравнении с этим компания Borland, использовавшая концепции Modula и C++ в Pascal, стала с ним достаточно успешной.

Ваш язык слишком громоздкий

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

Ваша концепция слишком радикальна

Smalltalk это объектно-ориентированный язык, а именно он ориентирован только на объекты. В нем нет простых переменных. Smalltalk революционный язык, но существует мало «революционеров». Многие языки переняли объектную концепцию, но Smalltalk остался малораспространенным.

Почему программисты так здорово спорят

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

FORTRAN: язык-«динозавр», но достаточно хорош для вычислений;

COBOL: не язык программирования, а нечто для ученых-экономистов, хорошо знающих английский;

C: идеален для программистов, которые слишком глупы для ассемблера и четко читаемых программ и не понимают APL;

С++: для программистов на С, которые хотят заниматься объектно-ориентированным программированием, но не могут;

Pascal: для фанатиков порядка;

LISP: также забавен без скобок, как Бойс без шляпы;

BASIC: Спагетти-код для начинающих;

APL: понятен только математикам и физикам.

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

Это чисто физиологическая проблема: человек сразу видит недостатки нового языка, элементов нового языка, которые действительно новы, не так много. Если человек доволен старым языком, то он просто не хочет переходить на новый. И постоянно находит причины, по которым новый язык плохой. Даже в случае с языками, которые могут все, такими как ADA или C++ — тогда они просто слишком общие…

Также нельзя скрыть то, что в каждом языке есть элементы, которые нравятся конкретному программисту. Автор, например, перешел от BASIC к Pascal и ему понравились хорошо читаемые программы, разделение объявления переменных и самого кода. С напротив, кажется ему продуктом программистов, которым лень писать. Повсюду фигурные скобки и операторы, которые надо сначала надо расположить в уме. Другое считают именно это качество С замечательным — в основном потому, что так можно писать практически нечитаемую программу (многие программисты видят это как важный «художественный» элемент, позволяющий увековечить себя в хитрой программе).

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