Чому не може існувати "універсальна" мова програмування, яка б відповідала всім цілям? [зачинено]


57

чому б не поєднати найкращі риси всіх існуючих мов програмування та не вписати їх у універсальну мову програмування?


23
Термін "найкращий" є суб'єктивним, тому ви ніколи не мали б однозначно прийнятого найкращого. Звичайно, існує досить багато мов, які підходять для широкого діапазону розвитку на всіх платформах. C ++ та Java - основні два.
GrandmasterB

5
@GrandmasterB Ви забули C #
Деніел Малий

15
Є, це називається "C"
Мартін Бекетт

9
ми як вид маємо вроджену здатність не погоджуватися (в силу нашої індивідуальності), тому ми ніколи не будемо домовлятися про те, що потрібно загалом, і, отже, ніколи не буде такого (принаймні, не одного, створеного людьми!)
Нім

9
Універсальна мова програмування? Ти маєш на увазі аналог універсальній людській мові, до якої всі перейшли стільки років тому?
Kyralessa

Відповіді:


116

З тієї ж причини ви не використовуєте швейцарський армійський ніж для вирізання курки ...

http://upload.wikimedia.org/wikipedia/commons/thumb/4/48/My_swiss_army_knife.JPG/800px-My_swiss_army_knife.JPG

Нож швейцарської армії, як правило, має лезо, а також різні інструменти, такі як викрутки та відкривачі для консервів та багато інших. Ці насадки зберігаються всередині рукоятки ножа через механізм повороту ...

Конструкція ножа та його гнучкість призвели до всесвітнього визнання ...


26
З тієї ж причини ви не привозите мінівен на перетягування. З тієї ж причини ви не приводите водяний пістолет на поєдинок.
Кріс

19
@Chris Що робити, якщо це двобій з водяним пістолетом?
Іржавий

44
З тієї ж причини ви ніколи не вступаєте з сицилійською, коли смерть наступає.
Іржавий

6
Якби у вас був швейцарський армійський ніж, який робив усі речі, необхідні для побудови будинку, чи було б корисним для будь-якого з них?
Бред Мейс

4
Ця відповідь - жахлива аналогія. Можливо, якби ви написали: оскільки французька мова дозволяє відрізняти вірність вираження, ніж англійська мова, мені, можливо, сподобалася б аналогія. Але комп'ютерні мови - це не «речі», ані людські мови. Правильна відповідь: ми не знаємо. Знадобиться більше розуміння того, як люди виражають логіку і як вони досягають цього моменту. Крім того, деякі мови є "мета-мовами", здатними виражати інші DSL. Чи повинні ми включити їх у ваше запитання?
Діббеке

80

Оскільки

  1. ніхто не хоче переписати весь спадковий код.
  2. Важко домовитися про всі цілі
  3. Після того, як ви складете вичерпний список цілей, вони зміниться, перш ніж ви зможете його створити.
  4. Хтось почав би зовсім іншу мову через нове призначення.
  5. Microsoft
  6. Apple
  7. Відкрите джерело
  8. Що б ми зробили з усією вавилонською рибою?
  9. Неможливо навіть зробити SQL універсальним.

Ви зупинилися недовго. Я очікував одного з таких "най-серйозних" списків "Топ-10".
Джефрі Хантін

4
+1 для запобігання, принаймні поки що, кампанії "Збережіть рибку вавилону". Чортові хіпі.
Іржавий

2
що стосується риби вавілонської, зробіть суші!
Muad'Dib

1
Що стосується пункту 1, весь успадкований код, в кінцевому рахунку повинен або бути переписаний в будь-якому випадку , використовуючи останню примху в коді / бібліотеках або буде не в змозі ефективно працювати без смішної суми витрат на підтримку.
Майкл

38

Те, що у вас є в програмуванні, є дуже великою проблемою. Цей домен варіюється надзвичайно в багатьох напрямках.

Ось чому вбудовані контролери польотів написані на C, а веб-сайти написані на PHP, Java, Rails, .NET та безлічі інших.

Для вбудованого контролера польоту у мене є близько 128 кб пам'яті, з якою я працюю, і, крім того, якщо мій код отримує необроблений виняток, літак розбивається, 200 людей гинуть, і я подаваю позов на суму 1B доларів, і мені потрібно надсилати інженерів до кожного аеропорт у світі, щоб виправити літаки, які обґрунтовано втрачають моїх клієнтів 10 млн доларів на день. Мені доводиться працювати з дуже щільною мовою і має невелику кількість рухомих частин, які можуть піти не так.

Для мого веб-додатку у мене є кілька ГБ оперативної пам’яті, але швидкість роботи мережі обмежена (меншою мірою щодня, але це, мабуть, найбільша межа в Інтернеті). Я буду дивитись на мову, яка надає мені тону функцій і дає результат, який можна передавати якомога швидше. Мені дуже не байдуже, якщо мій сайт знизиться, я, можливо, втрачу декілька продажів (100 доларів) і мені доведеться зафіксувати випадок використання, який бомбили, нічого великого.

Веб-сайти не написані на С протягом більше 15 років (хтось робить якісь cgi-скрипти?), І наскільки я знаю, диспетчери польотів тільки зараз починають дивитися на C ++, але навіть тоді дуже обмежено.


3
Більшість сайтів, які фактично заробляють гроші, втратять більше 100 доларів, якщо вони відчувають значні простої. Не припускати, що це можна порівняти із ситуацією життя чи смерті, але все-таки це зменшує ризик більше, ніж трохи.
Aaronaught

3
Чи маєте ви уявлення про те, наскільки шалений Facebook. Нещодавно вони опублікували код push кожні 37 хвилин. Їхній сайт так чи інакше постійно перебуває у борту, і вони мають мільйон квитків у своєму відставанні. Справа в тому, що в Інтернеті ніхто не помре, ви можете "втратити" кілька продажів, але загалом не дуже ризикуєте. Більшість питань, з якими ви стикаєтесь, стосуватимуться лише кількох клієнтів, а не всієї бази
Білл Ліпер

24
  1. Ідіть у свій гараж (або гараж ваших батьків).
  2. Відкрийте вікно інструментів.
  3. Якщо ви бачите кілька інструментів, подумайте, як це стосується вашого питання.

Якщо у вас немає набору інструментів або є лише один із цих маленьких молотків із шматочками викрутки в порожнистій ручці, то я дуже симпатизую вам.

Серйозно. Якщо ви їдете в автомагазин, чи має ваш механік лише один єдиний інструмент "все це" у своєму інструментообігу? Він (або вона) - професіонал з інструментами професійного класу, спеціально розробленими для виконання різних завдань з ремонту автомобілів.

Так само професійні розробники програмного забезпечення повинні мати достатній набір інструментів для здійснення своєї торгівлі. Якщо ви відкриєте панель інструментів і бачите лише [програмний еквівалент] викрутки Philips, ви не можете вважати себе професіоналом.

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


Це для включення "батьківського гаража". Це дійсно робить це зрозумілішим, оскільки у мене немає гаража.
Дан Розенстарк

5
Кращою аналогією було б мова - це як набір інструментів, а не якийсь окремий інструмент.
Том Хотін - тайклін

4
У коробці може бути 20 різних інструментів. Але я думаю, вам потрібна лише одна мова, щоб описати їх.
ThomasX

2
Цього дня панель інструментів більше нагадує бібліотеки, доступні для мови, про яку йде мова.
Майкл

18

Відповідь на інші - я думаю, що є можливість, щоб мова стала "універсальною", що дозволяє ознаки та парадигми багатьох інших мов, хоча це не є строго розробленою мовою, про яку ви могли б думати.

Щоб використовувати аналогію brettmjohnson вище, ідея про те, що кожна мова програмування є інструментом всередині коробки (або на ножі швейцарської армії), є припущенням, яке всі роблять, але насправді є хибним припущенням.

Що робити, якщо мова програмування була інструментальною?

Я маю на увазі, що робити, якщо ви можете додавати та видаляти функції з мови, як завгодно, і мати власний набір інструментів із потрібними інструментами - навіть якщо інструменти призначені для різних цілей.

Концепція існує частково вже. Наприклад, такі мови, як Nemerle, дозволяють вам додати до мови синтаксис , і, таким чином, ви можете взяти "найкращу функцію з мови X" та додати її до Nemerle (або вашої власної). Це не обов'язково означає, що постійно писати власні макроси - кожну мову (або парадигму) можна визначити всередині макросу в стандартній бібліотеці - такою, яку ви могли б import Haskell; import Prolog;, і почати писати дві мови так, ніби вони були частиною твоя мова?

Тоді питання - як змусити функції різних мов / парадигм працювати між собою? Хоча я не можу відповісти на це, такі рамки, як .Net та JVM, пропонують певне рішення - мови принаймні частково сумісні через спосіб їх складання. Ви можете взяти наприклад будь-який код, написаний на C #, і використовувати його з F # без нарікань.

Проблема з рішенням, як це є сьогодні, полягає в тому, що при використанні цих мов разом потрібно створити їх як окремі проекти, які не можуть посилатися один на одного - у вас може бути лише одностороння посилання. Мовний бар'єр полягає в тому, що кожен проект збирає всі файли окремо до загальної проміжної мови, перш ніж будь-який інший проект може отримати доступ до нього.

Кроком до усунення цього бар'єру було б дозволити код різних мов (наприклад, C # і F #) збирати всередині одного проекту. Теоретично ви могли скласти кожен файл окремо (або в групи - якщо вони мають часткові типи або кругові посилання), а потім компілювати файли іншої мови, які можуть отримати доступ до тих, що вже складені (CIL) об'єкти. Вам потрібно буде чітко визначити порядок компіляції, щоб це працювало - але порядок компіляції вже потрібен у випадку F #.

У всякому разі, я не кажу, що "напевно може бути універсальна мова". Я припускаю, що існує потенціал для набагато кращої взаємодії між мовами, ніж те, що існує зараз. Насправді це, швидше за все, не дуже швидко покращиться, лише через величезну кількість роботи над впровадженням мови та бібліотек, інструментів тощо, необхідних для її використання.


4
Весь світ - це не ПК. Більшість процесорів на цій планеті мають менше 64 К байт загального простору пам'яті. Мова, яка може бути використана для цих процесорів, повинна бути настільки скороченою від тих, що більшість на цьому форумі, як видається, використовують, що ваша універсальна мова стане кінцевою мовою збірки. Я думаю, що це називалося б "С".
uɐɪ

10

Найкращі риси деяких мов суперечать кращим рисам інших.

Наприклад: Роздуми, що знають про тип, - це дійсно приємна особливість, але це не варто дуже сильно набирати мову, але вільне введення тексту може бути справді корисною також.

Навіть в межах однієї мови ви не завжди можете використовувати всі найкращі функції одночасно, оскільки вони суперечать один одному.


але якщо ця функція була ввімкнена / вимкнена, наприклад, необхідність: ви можете ввімкнути роздуми про
свідомість

2
і якби ви спробували поєднати купу мов на одній мові, яка могла б зробити що завгодно, ви отримаєте багато надмірностей, плутанини, помилок від різних способів використання різних комбінацій функцій та багато марно витрачаючи зусилля, визначаючи, яку парадигму ви використовуєте в цьому рядку.

Ви маєте рацію, але вирішення проблеми, зробивши мову ультраконфігуруваною, робить мову важкою для використання, як описує феніш. Мені подобається гнучка мова, яка дозволяє речам, навіть якщо вони небезпечні в деяких випадках, але рівень конфігурації, який вам знадобиться для комбінування деяких понять, зробить його складнішим, ніж просто відмовитися і написати рішення на низькому рівні C або щось таке .
Білл

1
+1 за конфліктні риси
Френк Шірар

Я думаю, що проблема полягає не лише в тому, що конфліктні особливості мови, а в тому, що багато мов передбачають основу, яка містить основні рамки, що містять функції, які накладають певний рівень накладних витрат, але дозволяють спростити певні операції. Мови також зазвичай мають певні "типові схеми використання", пов'язані з ними. Вибір того, які функції слід включати в рамки, і які схеми кодування слід використовувати, передбачає компроміси; а різні комбінації функцій і шаблонів краще для різних застосувань.
supercat

7

"Джек всіх торгів - майстер нікому". випливає з розуму.

Деякі програми потребують швидкості, інші - великої кількості пам'яті або швидкого доступу до диска. Деякі мови хороші в одній, а погані в іншій - я не думаю, що ти б взагалі не отримав хорошої мови.

Тож, хоча ви можете написати практично будь-яку програму будь-якою мовою, те, що ви отримаєте, не гарантовано є найкращою програмою, яку ви могли написати для вирішення цієї проблеми.


4

Існує. Жоден інструмент не найкращий для всього, але деякі інструменти, як і багато мов програмування, служать для всіх цілей, а не найкращих для всіх.

Ви можете вибрати найкращий інструмент для роботи, але є мови програмування, які можна використовувати в усіх цілях, і ви можете їх вибрати. Я не рекомендую, але це можливо.


4

Через щось я називаю "парадокс узагальнення / спеціалізації", який, ймовірно, має іншу назву і насправді не є парадоксом

Чим узагальненіша мова програмування, тим більше коду потрібно, щоб щось досягти. Чим більш спеціалізована мова, тим менше ви можете її виконати.


2
Я погоджуюся з вами, за винятком того, що можливо мати спеціалізовані бібліотеки на узагальненій мові.
dan_waterworth

@dan: Погоджено, але лише якщо мова зосереджена на наданні функцій для бібліотечних авторів. Мої дві улюблені мови - D і Python. Обидва є досить загальними мовами (особливо D), але обидві мають багато можливостей для бібліотечних авторів, тому ви можете створити власні бібліотеки для обробки спеціалізованих матеріалів. Я зневажаю такі доменні мови, як Matlab та R.
dsimcha

4

Мови формують спосіб мислення людей. Це стосується природних мов. Якщо дитина знає лише одну мову з цифрами «один, два, багато», навчити цю дитину математиці - важко. (Вибачте, у мене немає посилання) англійською мовою ми говоримо про різні часи так, ніби вони були місцями - отже, концепцію подорожі у часі можна уявити. В деяких інших мовах ідеї подорожі у часі ніколи не виникнуть у її ораторів.

Це справедливо і для мов програмування.

Отже, якщо ми маємо єдину мову програмування, всі будуть думати про всі обчислювальні завдання точно однаково. Таким чином, ми не будемо вивчати альтернативи, і найкращий спосіб зробити щось залишиться нерозкритим.

Найближче, що ми маємо до універсальної мови, це C. C відображає дуже тісно до базових апаратних концепцій (як насправді все робиться в апараті), а програми на кожній * мові конвертовані в C. (Дивіться, як CFront використовував компілятори C для асемблера завдання) Проблема з C полягає в тому, що перераховані вище перетворення не мали б сенсу з точки зору програмістів на C.

"Лямбда" завжди були можливі в C. Синтаксис вимкнено, включаючи код, розповсюджений на весь проект / файл, отже, це не було кращим рішенням. З версією no-capture / upvalue / etc визначте функцію десь в іншому місці та передайте вказівник на функцію. (див. qsort () ) Щоб використовувати лямбда з захопленими значеннями, кількість і складність коду, який ви повинні написати, значно зростає - наскільки я знаю, ніхто ніколи насправді не написав код для використання цього методу програмування в C. На відміну від мов, де лямбда є частиною мови і в основному використовується скрізь.

Основна відмінність C і C ++ полягає в тому, як ви можете попросити C ++ піклуватися про речі для вас; але тоді ви не можете бачити лише з одного рядка коду, скільки ви насправді просите про це. Відповідь стає: це залежить (від усього цього іншого коду).

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


2
"В деяких інших мовах ідеї подорожі у часі ніколи не виникнуть у її ораторів". Потрібне цитування. Гіпотеза Сапіра – Уорфа жодним чином не є широко прийнятою, особливо в її сильній формі.
Мухаммед Алкарурі

4

Неможливість технічних достоїнств наявності Універсальної мови? Це тотальна нісенітниця. Ти міг бимати універсальну мову, яка охоплює всі основи. Проблема здебільшого історична: різні мови були винайдені для того, щоб робити різні речі та використовувалися в різних громадах. Багато з них застрягли. Додайте до цього уподобання (vi! Emacs! Почекайте, я мав на увазі Java! C #, чекайте, я маю на увазі Microsoft, Open Source тощо. Тощо) та загальне втілення історичних аварій ... Подивіться на природні мови у крихітній землі як деякі європейські країни, щоб побачити, наскільки шаленою може стати ця тема. У деяких містах є своя гордість і радість, трохи діалекту, який говорять тільки вони. Нації та спільноти програмування не настільки різні, як і спільноти програмування, не більш раціональні. Якби вони були, ми б усі говорили на есперанто і програмували в Universal Somethin 'Somethin' ...


1
Проблема глибша за це. Чим більше можливостей ви зробите доступними, тим більше потрібно чітко вказати, а не бути одним неявним способом роботи на цій мові. Проблеми стають більш очевидними, якщо замість порівняння Java з C # ви порівнюєте Java з Prolog. Властивості обох в одній мові ускладнювали б синтаксис складної мови. Більш розумним вибором може бути зведення синтаксису до мінімуму та дозволити реалізацію будь-якої функції як бібліотеки метапрограмування. Це в основному те, що робить Лісп, хоча його ядро ​​недостатньо низьке для деяких завдань.
Steve314

4

Помилково думати, що "поєднання всіх функцій" зробить кращу мову.

Ви, швидше за все, закінчитесь роздутим, складним, нечитабельним безладом.

Хороший мовний дизайн вимагає вибору та компромісів. Можливо, найкращі / найреволюційніші / найуспішніші мови - це ті, які щось витягують та надають кращу альтернативу, а не додають нові речі.

  • Структуровані мови програмування (C, Pascal) - виймає "goto", замінює процедури та структуровані петлі тощо.
  • Java - виймає "ручне управління пам'яттю", замінює GC / керованою пам'яттю
  • Haskell / Clojure - приймає "неконтрольоване змінне стан"
  • Lisp - виймає більшість «синтаксисів мови», замінює гнучким гомоніконічним деревом s-виразів

Про це чудово розмовляє дядько Боб Мартін - Остання мова програмування


"Структуровані мови програмування (C, Pascal) - виймає" goto ", замінює процедури та структуровані петлі тощо." - Вибачте, ви помиляєтеся там: C має goto. Але мені подобається решта відповіді. Головне, що C робить, - це не турбуватися про те, де саме в пам'яті все є і що знаходиться в якому реєстрі в який час, і він приховує лічильник програм (з точки зору точної адреси, на якій він сидить, знову. Ви можете перемістити його майже на рівні складання точності з гото).
Wyatt8740

0

Не існує жодного інструменту, який має всі найкращі функції. Наприклад, приємними можливостями Javascript і Scheme є те, що вони невеликі, тому якщо ви почнете пакувати функції, ви вже втратили цей.

Все-таки Кобра виглядає багатообіцяючо в напрямку отримання всіх приємних рис з інших мов. :-)


0

Тому що якщо ви створите таку мову, це буде ще одна нова мова. Ви можете отримати велику фан-базу, але всі інші мови все ще існуватимуть.

C досі існує, хоча з тих пір було винайдено багато нових мов.

Можна сказати, що пітон - така універсальна мова, але тоді є і рубін.

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

Причина відсутності єдиної універсальної мови, з якою всі згодні, полягає в тому, що програмування як ремесло не диктується якоюсь установою, яка приймає всі рішення. Кожен вільний робити те, що хоче.

Це гарна річ.


Я також зауважу, що це не є ні добрим, ні поганим, а швидше артефактом того, що інженерії програмного забезпечення навіть не сто років, і це дуже незріло в порівнянні з усіма іншими існуючими технологіями.
Майкл

0

З усього, що написано до цього часу, важко додати багато нового обгрунтування, але я закину кілька.

  • Еволюція: це не просто біологічні системи, які впроваджуються, мутують та проходять конкуренцію за виживання найпридатніших за ресурси та нішу, щоб назвати свої власні. Конкуренція хороша і штовхає справи вперед.

  • Зрілість: комп'ютерні мови ми робимо, мабуть, не менше століття. У нас поки немає відповіді, тому що ми ще навіть не знаємо всіх питань.

  • Окремий генезис: Не впевнений, що для цього потрібне слово, але у світі їх багато систем письма, які почалися в багатьох географічних регіонах. Подумайте про клинопис, який був продиктований частково вимогами різьблення в глиняні таблички. Подумайте про санскрит, грецьку, іврит, римську, арабську абетки. Ієрогліфи, китайський метод красивого письма з 6000+ символами, який ділиться у багатьох країнах Східної Азії. Подумайте про більш сучасні змішані алфавіти з фонетичною основою, такі як кирилиця, катакана та хірігана. Я не мовознавець, тому не горіть надто жорстоко, але коли культурам у всьому світі щось потрібно, вони створюватимуть це і роблять його власним із необхідності. Комп'ютерні мови з'явилися, коли було багато спілкування у всьому світі і, як Імперська та Метрична системи, прийшов з місць з потужним лідерством ідеї. Але мови програмування обслуговують багато різних культур (деякі з них корпоративні культури), тому вони відображають людей, які їх створили. Комп'ютерні мови мають культурні спадщини, які формували їх дизайн та використання. У культурі ядра ОС C та C ++ навряд чи будуть застаріли для Java (або навпаки), оскільки вони дозволяють створювати нативний код, тісне / ефективне з'єднання з обладнанням для створення апаратних шарів абстракції та мають встановлену значну базу.

  • Дизайн дизайну: мови програмування створюються з використанням різних організаційних парадигм. COBOL і Ada були від комітетів, що входили до складу DOD, які мали багато ієрархії. Якщо я правильно пригадую, C, C ++, Java та, мабуть, багато інших прийшли від однієї чи невеликої кількості дизайнерів. Фред Брукс порівнює результати роботи комітету та підходи, що базуються на візіонерах у своїй роботі «Дизайн дизайну» (http://www.youtube.com/watch?v=pC-DlX-PaF4). Якби ми сьогодні сіли або вибирали Da Vinci, або комітет із визначення універсальної мови програмування, ми б знали, хто чи що, за яким методом він повинен бути побудований?


0

Можливо, трохи інший нахил у всьому цьому:

Що таке мова? Щоб бути смішно простим, це словниковий запас, синтаксис та семантика.

Що перше, що ви робите з мовою програмування?
Ви визначаєте речі - класи, змінні, методи - ви розширюєте словниковий запас і семантику.

Чому? Тож тепер ви можете сказати речі, які ви раніше не могли сказати.
Вам подобається чи ні, ви створили нову мову спеціального призначення.

ІМХО, потрібно шукати мову загального призначення, якщо це спрощує створення мов спеціального призначення.


0

Крім аргументу швейцарської армії-ножа (який має сенс - складніше розробити гарну мову широкого спектра, ніж специфіку для домену, - але це не означає, що така мова не була б обома можлива і гарна ідея), є проблеми з "поєднанням найкращих функцій":

  • Щодо мовних особливостей, "кращий" є суб'єктивним або, принаймні, (тимчасово) суперечим.
  • Деякі функції не сумісні; хороша особливість з однієї мови може вибухнути в поєднанні з хорошою рисою з іншої.
  • Ми ще не розробляємо нових функцій.

Коротше кажучи, мовна конструкція складніше і складніша за це. Хоча, можливо, ви захочете поглянути на Скалу .



-2

Існує універсальна мова програмування. Це називається "машинна мова", і все в будь-якій іншій мові комп'ютера в кінцевому підсумку виконується як машинна мова.

На що це схоже? Рядок 0-9 та AF.

Але це сука використовувати. Тож Алан придумує мову, яку можна перекласти машинною мовою і більше відповідає тому, що хоче зробити Алан. Білл вигадує іншу мову для того, що хоче зробити Білл. Невдовзі ви отримали Cobol і Fortran, Lisp і Java. Усі вони - це просто спрощені версії машинної мови, простіше писати певні програми, але складніше або неможливо писати інші типи програм. Один хороший для обліку, інший - для управління космічним човником.


6
Мова машини не є універсальною; навіть близько не. Кожна машина має свою мову.
hasen

3
Крім того, це не рядок 0-9 та AF. Це 1 і 0.
Девід Конрад

@hasen @David чи не розумно припускати, як @Andy вважає, що кожна мова з однієї точки зору побудована на інших мовах?
Арман

Я сказав 0-9 і AF, тому що саме ви повинні знати, щоб використовувати багатофункціональні коди на машині штампування ключів. Це виглядає як 0-1 або 0-15 або 0-255, якщо взяти його як числа, залежно від того, наскільки великий шматок за раз. І хансен прав; кожен тип машини має свою власну мову. Майже всі ПК сьогодні приймають 80386 кодів; навіть мій телефон буде! Але iPad не стане.
Енді Кенфілд

@hasenj і з різними характеристиками. Мислення, необхідне для програмування 6502, відрізняється від програмування x86 і в свою чергу відрізняється від чіпа RISC. Дуже далеко не універсальний.

-2

Лише тому що,

не існує УНІВЕРСАЛЬНОГО комп’ютера.

не універсальна форма.

не УНІВЕРСАЛЬНИЙ програміст.

і навіть не УНІВЕРСАЛЬНИЙ клієнт.

: P

Тому просто нам потрібен інший для іншого. ;)


-2

Більшість відповідей тут зосереджені на використанні найкращого інструменту для кожної проблеми. Я не вірю, що це досить вагома причина.

Якщо ви дивитесь на великі компанії, то зазвичай компанія, як правило, використовує одну (або невелику кількість) мов і технологій, навіть якщо для конкретного проекту є якась краща мова.

Це робиться тому, що переваги, що виникають від покращеної стандартизації, спрощеної підтримки, спільного використання коду тощо (у більшості разів) більше, ніж додана вартість певної мови.


1
Я ніколи не бачив жодного пристойного корпоративного проекту, що використовував менше 4 різних мов. І я не вірю ні в яку з цих «переваг» від вибору непридатних інструментів. Це ніколи не виходить.
SK-логіка

-3

Я думаю, що у всіх відповідях "тому, що ти не вирізуєш олівці статуй" немає думки.

Хто тут, ПРОСТО вибирає мову перед кожним новим проектом?

Правда, нам потрібні всього лише кілька мов програмування, і світ програмування буде краще таким чином: люди будуть зосереджені на створення на мові сценаріїв краще замість того , щоб бути розкидані по пітон / рубін / Perl / younameit, наприклад.

C # запрограмований на / для Windows (добре, є Mono, хтось тут щодня запускає C # під програмою Mono?), І це змушує користувачів купувати Windows7 / 8, і це заробляє гроші для Microsoft.
Інші компанії роблять те саме, тоді відкритий код знає краще, тоді ще й геній геній ... і у нас багато мов схожих на вигляд, це просто егоцентрична природа людства.


Погоджено - нам в основному потрібна лише "безпечна" мова високого рівня, "небезпечна" мова програмування низького рівня, всі мови асемблерів (одна на центральний процесор, вони неминучі, але приховані), а також якесь спеціальне призначення (специфічне для домену) мови (наприклад, SQL). Справжня проблема полягає в тому, що ніхто не може оголосити мову "застарілою" (навіть коли мовний дизайнер намагається це зробити - наприклад, Python 2 проти Python 3). Щороку більше нових мов і жодних старих мов не відкидається, це означає, що з часом буде більше мов у використанні, ніж програмісти для їх використання. ;-)
Брендан

-5

Щоб відповісти на це питання, ми маємо звернутися до економіки. Якби це заощадило гроші бізнесу, щоб мати лише одну мову, ми б її мали. Вони стандартизували б його і вимагали від усіх його використовувати. Інші мови пропадуть у запилених академічних будівлях та підвалах любителів диких очей. Цього не сталося, тож їх не повинно бути стимулом для отримання прибутку в універсальній мові програмування, або воно б, природно, вже розвинулося.


1
"Заощаджені гроші" - це (незважаючи на зусилля бухгалтерів) неясне і туманне поняття протягом життєвого циклу. Так само, як механіки не вдалося стандартизувати навіть один розмір гайкового ключа, не майте на увазі цілого інструментарію, інженерія програмного забезпечення не змогла стандартизуватися, оскільки існує стільки критеріїв для вибору інструмента (мови) або навіть процесора / ОС / середовища
Ендрю
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.