Чому так багато мов програмування?
І що спонукає когось створити мови програмування, незважаючи на те, що інші мови вже існують?
Чому так багато мов програмування?
І що спонукає когось створити мови програмування, незважаючи на те, що інші мови вже існують?
Відповіді:
Нові мови програмування часто вивчають наявні мови та додають, видаляють та комбінують функції по-новому. Існує кілька різних парадигм, таких як об'єктно-орієнтована та функціональна, і багато сучасних мов намагаються поєднувати функції обох.
Також є нові проблеми, які потрібно вирішити, наприклад, збільшення багатоядерних процесорів. Найпоширенішим рішенням для цього були потоки, але деякі мови програмування намагаються вирішити проблему одночасності по-іншому, наприклад, модель актора. Див. Erlang - Програмне забезпечення для одночасного світу
Це цикл. Ви починаєте нову мову, і можете вільно відволіктися від поганого синтаксису та поганого вибору своїх попередників. У версії 1 мова виглядає чудово, оскільки в ній немає цього багажу, і вона робить роботу. Потім у нових версіях ви починаєте експериментувати з функціями, які можуть не працювати, або ви вводите функції з інших, новіших мов, які спричиняють ваш синтаксис трохи неприємним. Ось, і ось після декількох версій ви розумієте, що ваша мова тепер така ж складна, як та, яку ви замінили, з дурними синтаксичними питаннями та застарілим багажем. І раптом ти розумієш, що якби створив нову мову, ти міг би це все виправити ...
З цієї ж причини є молотки, викрутки, ручні пилки, стрічкові пилки, відбійні молотки, ломи та безліч інших інструментів: не кожна мова ідеально підходить для кожного завдання. Деякі мови орієнтовані на конкретні проблемні області: R особливо добре підходить для статистичного аналізу, C особливо хороший для написання ядер операційної системи, Haskell особливо хороший для математично важких або фінансових обчислень, Ерланг особливо хороший при одночасному програмуванні тощо.
Також з тієї ж причини, що сорочки бувають різних кольорів: деяким людям просто подобається «стиль» однієї мови над іншою.
І, звичайно, багатьом програмістам здається цікавим вигадати нову мову, просто щоб побачити, що відбувається, чи, можливо, тому, що вони мають деякі знання про мови і хочуть подряпити свербіж, або спробувати деякі ідеї.
Тому що всі вони смокчуть (так чи інакше).
Зараз ми створили близько 5000 мов для опису природних проблем, і жодна з них не доступна для написання програм (наприклад, "англійська").
Поки хтось не знайде способу створити мову програмування, яка зможе виразити те, що ви можете висловити в реченні природною мовою, він продовжуватиме надходити.
Очевидно, що однією з важливих мотивацій створення нової мови є досягнення чогось кращого, ніж вже існуючі мови. І оскільки завжди є можливість для вдосконалення, завжди будуть нові мови.
Комерційні інтереси - ще одна велика причина. Я вважаю, що, наприклад, Microsoft важливо, щоб вони могли запропонувати мову для кожної потреби, тому компанії та розробники віддають перевагу своїм платформам.
Спадковий кодекс. Якщо ви запускаєте нову мову, вам не доведеться слухати / розглядати всі скарги, коли ви змінюєте стару мову. Навіть якщо всі згодні, що нова реалізація є кращою, вона не може порушити старий код. І є багато старого коду там.
адже цікаво створювати нові мови, навіть якщо вони не мають реального використання
Езотерична мова програмування (іноді скорочена до esolang) - мова програмування, призначена для перевірки меж дизайну мови комп'ютерного програмування, як доказ концепції, або як жарт.
Створення мови програмування - досить весело. Це близько до чистої творчої роботи, оскільки ви не обмежені попередніми вимогами. Реалізувати це вже не так складно, оскільки ви завжди можете компілювати на C і скласти код C для адекватної продуктивності, якщо ви пишете компілятор в першу чергу.
Звичайно, у більшості з нас менше хороших ідей, ніж ми думаємо, що у нас є, тому вони часто бувають розчаровуючими, або не люблять когось, крім оригінального дизайнера.
Подумайте про будь-яку мову програмування, яку ви знаєте. Ви можете легко придумати кілька речей, які вам не подобаються, правда? Імовірно, у вас є ідеї, як це можна виправити. Маючи трохи більше поштовху, якщо припустити, що ви знаєте багато про побудову компілятора (і це багато людей), ви можете почати розробляти і навіть реалізовувати свій власний.
Швидкий короткий відповідь
Повторне винайдення колеса ... Який сучасний тренд ...
Нудна довга відповідь
Багато хто забуває, що "інша подібна нова мова для старих програмістів" є "простою новою мовою для нових програмістів".
Що я маю на увазі для цього?
Ну, а для декількох років програмісти Java або C # можуть бути додатковою мовою програмування для існуючих Cobol, (OO / Procedural) Basic, C / C ++, тоді як для "нових" програмістів Java або C # - це нові мови, тоді як Cobol, (OO / Procedural) Basic, C / C ++ для них не існує, тому винахід колеса стає звичайною справою ...
І якщо є нова тенденція в галузі технологій, люди можуть створити нову мову програмування на основі цієї тенденції, як ecmascript / javascript для Інтернету та функціональне програмування ...
Ура.
нові мови програмування побудовані з багатьох різних причин, головним чином через те, що з'явилися нові парадигми програмування, або через досягнення технічного обладнання люди створюють нову мову, щоб скористатися новими апаратними функціями, такими як багатозадачність тощо.
у моєму випадку я зазвичай будую невеликі компілятори (з новою мовою програмування) з особливих причин. якщо я роблю багато ігор, і я вважаю, що мова програмування, спеціально створена для розробки ігор, призведе до меншого швидшого коду і швидшого розвитку, то я буду його створювати. і тоді в кінці виявляється, що його можна використовувати і для інших програмувань загального призначення.
Я думаю, що більшість людей, які створюють мови програмування, мають на увазі конкретну мету, є такі, хто створює їх із загальною метою з самого початку. але більшість - ні.
До речі, я думаю, що існує занадто багато мов програмування, але завжди з'являться сотні нових. дехто із задоволення, хтось із нішевої мети, як шкільний проект, або з сотень інших причин. і рано чи пізно новий стане популярним. Це ніколи не закінчиться.
З тієї ж причини є так багато <що б> не було, і ми продовжуємо створювати нове <що б> не було
Наприклад, є десяток фреймворків PHP MVC, але люди завжди створюватимуть нові, щоб заповнити конкретні потреби, щоб не залежати від якоїсь іншої команди або просто спробувати створити щось краще. Те ж саме стосується і всіх типів інструменту чи програми.
Це дуже гарна річ, на мою думку, це практично безпрограшна робота для всіх.
Університети сприяють великій кількості мов програмування, і так роблять дуже великі корпорації, такі як Ericsson (Erlang = мова Ericsson), Bell Labs (B і C мови), Google (мова Go на кілька місяців до цього). Багато з тих, що були написані як частина університетських досліджень, мало використовуються. Однак є кілька помітних винятків. Я вважаю, що написання власної мови / укладача є гарною темою для кандидатських дисертацій людей, які вивчають теорію CS або суміжні дисципліни. Мені вражає, що Python - одна з перших мов, яка народилася завдяки спільним зусиллям різних програмістів в Інтернеті навколо однієї ідеї.
Причин є кілька, більшість - тому, що люди думають, що те, що існує, не дозволяє легко вирішити якусь сукупність проблем. Деякі - просто заради розваги або заради академічного інтересу.
Я думаю, що є вагомий аргумент, що питання про те, як ви розробляєте ідеальну мову, ще не вирішене (а може і не буде). До тих пір, поки у людей з’являться нові ідеї щодо того, що б зробити чудовою мовою, люди продовжуватимуть намагатися. Деякі з цих спроб відображатимуть новий прохолодний простір, наприклад, Erlang, а деякі пролітатимуть, але доки щось буде вивчено з флопу, що також добре.
Як і раніше, мови намагаються націлити певні конкретні завдання, і нові мови можуть орієнтуватися на нову область. Ці мови можуть приймати функції з інших мов, які наразі відсутні.
Ще одна причина нових мов - це намагання включати багато різних завдань і бути мовою вибору для багатьох різних потреб. Деякі з цих мов намагаються бути всеохоплюючими мовами, якими ви б завжди користувалися, незалежно від необхідності.
На моїх мовах програмування я дізнався, що більшість мов було винайдено, щоб подряпати свербіж. Більшість мов було винайдено, щоб мати можливість краще виражати деякий набір алгоритмів. Наприклад, функціональні мови були винайдені, щоб надавати рекурсивним алгоритмам набагато більш виразний простір.
Запитувати, чому так багато мов, як запитати, чому C ++ 0x? :)
Плюс, чим більше мов ви знаєте, тим виразніше ви можете стати - це вірно і в програмуванні, і в природних мовах!