Почему не существует универсального языка программирования?

      Комментарии к записи Почему не существует универсального языка программирования? отключены

По какой причине не существует универсального языка программирования? На данный вопрос ответили пользователи сайта Quora.

Почему не существует универсального языка программирования?

Дин Хью, бывший электротехник

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

Компьютер в этом случае – это чистый холст памяти, ожидающий нанесения красок в виде скрипта, приложения либо утилита. В зависимости от того, что вы желаете взять в итоге, и от того, с чего начинаете, вы выбираете язык программирования, любой из которых имеет собственную специфику. Кое-какие языки несложны и приятны в обращении, как выпивала либо разводной ключ. К таким языкам относятся Basic и JavaScript. С целью достижения точности программирования и высокой скорости существуют языки С и С++. Это утверждение может привести к массе споров, но точность и высокая скорость в этом контексте связаны с операционными совокупностями, методами и другими критическими для скорости задачами программирования. Господин Тьюринг научил нас тому, что и ОС возможно написать на Perl либо Javascript, но возможно и из дуба наждачной бумагой стол вышлифовать, в случае, если само собой разумеется хватит наждачной бумаги, времени и терпения. О практичности речь не идет.

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

Эндрю МакГрегор, инженер

Немногие языки смогут употребляться фактически для любой цели, и все они различаются по сложности. К ним относятся , C++, Haskell, Rust, Algol, Lisp либо Scheme, Forth, PL/1 и Assembler.

Увидели у них что-то общее? У них всех репутация тяжелых в изучении, тяжелых в применении либо дешёвых только посвященным языков. Либо все сходу.

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

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

Обстоятельство, по которой C и C ++ так популярны, пребывает в том, что они были существуют продолжительнее, чем Haskell и Rust. К тому же С и С++ близки к золотой середине между дополнительной сложностью и широтой применения применения по сравнению с другими возрастными языками из моего перечня. Возможно, они кроме того лучше, чем Haskell.

Rust же через чур молод чтобы повсеместным, но дайте ему 20 лет. Быть может, данный язык близок к тому, дабы стать универсальным языком, но самым практичным на сегодня есть С++.

Эльфеус Мэдсен, математик, притворяющийся программистом

Многие отвечали на данный вопрос, приводя в пример языки, подходящие для любых целей; C, Assembly и Machine Language являются самыми масштабными примерами. Само собой разумеется, с позиций Тьюринга эти языки являются завершенными, но они не так хороша для исследовательского программирования либо прототипирования, так что они не проходят диагностику на универсальность. Мне кроме этого нравится Python и Ruby, но в этих языках «близость к железу» свидетельствует «просмотрите собственную программу, отыщите самые активные ее части и перепишите эти части на С». Чуть ли эти языки являются универсальными.

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

Кое-какие из этих языков, такие как Common Lisp, Scheme и Smalltalk начинают как высокоуровневые, но наряду с этим имеют механизмы (начиная от опционального ввода и заканчивая понятием для аппаратных команд низкого уровня с применением встроенного ассемблера), разрешающие с легкостью достигнуть низкого уровня. Другие же, к примеру, Forth, начинают как низкоуровневые, но смогут с легкостью переходить на большой уровень. Такие языки в прямом смысле разрешают создавать мини-языки, идеально вписывающиеся в уникальный синтаксис исходного языка, что заметно упрощает ответ непростых задач.

Для операционных совокупностей с нуля употреблялись кое-какие языки более большого уровня. C – вездесущий язык, созданный в то время, в то время, когда ресурсов было не так много, но он занял золотую середину между простотой, низкоуровневостью и высокоуровневостью и стал весьма популярен, не обращая внимания на то, ему не достаточно гибкости. Мне показалось увлекательным, что только пара известных мне языков в свое время употреблялись для написания операционных совокупностей – Lisp, Forth и Smalltalk – они кроме этого трансцендентны.

Итак, в случае, если эти языки способны на все, по какой причине их не применяет все больше людей? К сожалению, обстоятельство содержится в их простоте. Для ее успехи им приходится жертвовать математической приоритетностью, что многих сбивает с толку. Lisp применяет префиксную нотацию — (+ 1 2 3) и приобретает 6. Forth применяет постфиксную нотацию — «1 2 + 3 +». Приобретает 6. А Smalltalk оценивает все слева направо, исходя из этого из «1 + 2 * 3» приобретает 9 (это итог того, как Smalltalk передает сообщения объектам, цифры – это объекты, а операции – сообщения).

И не смотря на то, что как большая часть сначала находят это необычным, самое забавное содержится в том, что в действительности все не так запутанно. Это всего лишь дело привычки. Сравните эти языки с любым языком на базе Algol (C, Pascal, PHP, Python и т. д.), что в котором присутствует иерархия исполнения математических действий, которая, как это ни парадоксально, имеет узкие отличия от одного языка к второму. Все эти правила через чур бессчётны и труднозапоминаемы. Легче все в круглые скобки, дабы не было нужно тревожиться о причудливых правилах приоритетности.

Уильям Шайн, кандидат наук по информатике и математике, университет Хьюстона (1995)

Как и было отмечено вторыми пользователями, С и семейство С являются универсальными языками. К ним относятся C, C++, Objective C, Objective C++ и Swift. Возможно было бы добавить ко мне Rust. Современные компиляторы С и С++ разрешают писать встраиваемый ассемблерный код. Не то, дабы это было красивой идеей. И они практически все смогут взаимодействовать между собой. С++ может применять библиотеки С, Swift – библиотеки С и Objective C.

Python, Ruby, и Java смогут применять библиотеки C. В С вписаны преобразователи JavaScript. Так что сотрудничество вправду активное. С целью достижения сырой производительности подходят С и компания. В случае, если вам необходимо написать довольно много кодов скоро, первыми на очереди стоят JavaScript, Python и Ruby. В случае, если вам ответственна скорость, автоматическая сборка и безопасность мусора, вероятными вариантами будут C #, Java и Swift. . Если бы мне было нужно выбирать один язык программирования для всех целей, я бы выбрал C ++.

5 лёгких языков программирования, которые интересно учить!


Интересные записи: