Чому не існує універсальної мови програмування?

38253 Чому не існує універсальної мови програмування?

Чому не існує універсальної мови програмування? На це питання відповіли користувачі сайту 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, але в цих мовах «близькість до заліза» означає «переглянути свою програму, знайдіть найбільш активні її частини і перепишіть ці частини на З». Чи ці мови є універсальними.

Дивіться також:  12 кращих безкоштовних Android-додатків в липні

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

Деякі з цих мов, такі як 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 передає повідомлення об’єктах, цифри – це об’єкти, а операції – повідомлення).

Дивіться також:  Запускаємо безпечний режим на комп'ютері з Windows 10

І хоча більшість спочатку знаходять це дивним, найцікавіше полягає в тому, що насправді все не так заплутано. Це всього лише справа звички. Порівняйте ці мови з будь-якою мовою на основі 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 ++.

Автор:
Дата:
Из той же категории: (Без рубрики)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

четырнадцать − 14 =

Сейчас читают:
top