Як корисні мови програмування на основі англійської мови? [зачинено]


14

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

Я бачив деякі згадки про німецькі мови (див., Наприклад, Планкалкул, фактично перша мова програмування, про яку ми знаємо дуже мало, завдяки Другої світовій світовій), також аромат Algol, заснований на російській мові, який існував ще у 80-х роках у принаймні на папері, не впевнений, чи існував він колись у двійковій чи ні. Обидва виглядали трохи млявими, оскільки було більше скорочених слів і дивних скорочень, ніж повних слів, як у мовах, що базуються на EN. Тож якщо ви знаєте про будь-які інші національні мови, що базуються на національній мові, навіть зовсім архаїчні та неактуальні, суто теоретичні чи будь-що інше, було б цікаво поглянути на них.

І повернемося до головного питання: так що, якщо є, робить мову Шекспіра настільки хорошою для програмування?

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


3
@Michael: Він сказав "я думаю". Він висловлює власну думку. Ви можете запитати, як він прийшов до такої думки, але я не думаю, що йому потрібно цитувати джерело. Ми можемо сказати йому, що якщо він каже, що це його думка, це його думка. Крім того, він не сказав, що немає НЕ історичних чи економічних обставин, а лише він вважає, що це не єдині фактори, і йому більше цікаво обговорювати інших.
HedgeMage

1
@Michael: ти кажеш, що "Комп'ютери були винайдені та встановлені насамперед в англомовних країнах", тепер це історичні / економічні обставини. Наприклад, ми можемо призвести до промислової революції у 19 столітті у Великій Британії (і фактично всієї імперії), або "відтоку мозку" під час / після Другої світової війни до США, або що США, ймовірно, мали найменші втрати під час Другої світової війни. промислові країни тощо
mojuba

3
Якою б мовою вона не була, вона повинна бути граматично нейтральною.
JeffO

1
@Jeff O: абсолютно, і не тільки стать. В основному всі ваші дієслова повинні бути нейтральними, тому що в іншому випадку ви в кінцевому підсумку думаєте, у якій точній формі (час, стать тощо) має бути "робити" у вашому ", а ... робити ...". Морфологія дієслів англійською мовою настільки розслаблена порівняно з багатьма іншими європейськими мовами, що, на мою думку, саме це робить англійську мову настільки хорошою для програмування.
mojuba

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

Відповіді:


17

Відмова: Моя рідна мова - німецька.

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

Але оскільки ми говоримо про мови програмування, а не про документацію / API / назви / тощо, я маю заперечувати: мови програмування не ґрунтуються на англійській мові або на будь-якій іншій природній мові. Мови програмування - це формальні мови. Вони в різній мірі використовують декілька слів з (як правило) англійської мови. Деякі навіть намагаються наслідувати його граматику, але зовсім не читають як англійська мова незалежно. Щоб додати образи до травми, вони пов'язують лише одне (у рідкісних випадках жменька) значення (и) з кожним словом, яке вони запозичать. Часто це значення дуже жаргон-у, спеціалізоване або засноване на сумнівній аналогії. Тому знання безлічі значень природного мови слова, запозиченого мовою програмування, насправді не допомагає зрозуміти концепцію програмування за ключовим словом. Приклади з верхньої частини моєї голови: array,type, goto, class, void. (Цікавий факт , що виникли на розум , як я перечитав питання: все з них, за винятком того goto, є німецькі переклади , які є не більш ніж один символ більше: Feld, Typ, Klasse, Leere. Всі вони звучать дивно для мене, але це, напевно, справа звички .)


2
Класовий різновид означає, що це означає англійською мовою. "Клас" визначає Тип, який є "класом об'єктів". Можна сказати, що всі значення Int або всі записи Person є класом, оскільки вони мають певні функції. Однак більшість C-подібних програмістів не думають категорично, тому "клас" просто означає "креслення об'єкта" для них.
CodexArcanum

7
Ваша англійська чудова btw
Аллен

Як німецький товариш, я повинен сказати, що я повністю з вами згоден. Я думаю, що основна причина полягає в тому, як ви вже згадували, що англійська мова - це мова в ІТ-світі. Люди з усього світу щодня розмовляють, обговорюють та програмують англійською мовою, і тому майже кожна відповідна стаття вперше публікується англійською мовою. Те саме стосується книг. Плюс до того, що більшість книг, які перекладаються на німецьку мову, читаються якось неправильно. Деякі фрази та ключові слова перекладені. Це повністю вбиває потік .
mhr

Я повністю погоджуюся з тим, що намагання перетворити граматику англійської мови на мови програмування - це повна помилка. Я не згоден з "це значення дуже жаргон-у, спеціалізоване". Будучи носієм англійської мови, опис понять як аналогів до існуючих термінів є типовим для повсякденного спілкування. Англійська мова як мова просто інтерпретована і в цілому дуже специфічна для контексту. Що стосується німецьких еквівалентів, то це не велика несподіванка. Англійська значну частину своєї структури запозичує з німецької, і багато її словникового запасу з інших мов. Це як "таємниче м'ясо" природних мов.
Еван Плейс

@EvanPlaice Так, дискусійно, наскільки насправді це неприродно. У них явно є певна заслуга, інакше вони були б давно скасовані. Я не можу судити, чи загалом вони допомагають носіям англійської мови, я просто знаю, що еквівалент (вибираючи найближчий переклад, потім будуючи еквівалентні аналогії з цим перекладом) має тенденцію до побудови неправильних асоціацій у мозку студентів. Знову переклади: Так, не дивно, що є подібні слова; Я націлювався на те, що "було більше скорочених слів і дивних скорочень, ніж повних слів".

8

Англійська мова є мовою програмування lingua franca .

З тієї ж статті:

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


9
lingua franca - латинська фраза, яка (сьогодні) означає французьку. І все ж ми використовуємо це для позначення англійської.

6
@ Грахам Лі: Як іронічно, це словосполучення означало (як запозичений англійський термін) "загальну мову, яка використовується людьми різного походження для спілкування один з одним".
greyfade

Чому італійська мова музичної нотації або латинська - музика науки? Що стосується технології, це англійська. З міжнародним визнанням як "lingua franca" неминуче англійська мова має найширший словник, що стосується технологій. Багатий словниковий запас має важливе значення для ефективного (і універсального) спілкування, тому люди готові сприйняти мову.
Еван Плейс

5

Англійська мова сприятлива тому, що:

  1. Краще відповідає обмеженням поточної периферії.

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

  1. Можна перетворити на не-слова, які однаково впізнавані. Англійська надає перевагу абревіатурам через відсутність символів наголосу.

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

  1. І врахуйте, що загальні мови програмування містять більше математичних символів і менше слів.

Асамблея використовувала невеликі слова, які не мали структури речення. Потім з’явилися такі мови, як COBOL та FORTRAN, які намагалися максимально вмістити англійську структуру речень. Новіші мови реалізували більше опори на універсальні алгебраїчні символи, оскільки вони мали кращу передбачуваність. (У COBOL Додавання X до Y, віднімання Y від X, обчислення Y = X + A; обчислення робить попередні твердження непотрібними та зменшує складність розбору мови). Мені не знадобиться набагато більше, щоб вважати такі мови, як C ++, більш символічними, ніж мовою. Трохи повернення до програмування на основі слів за допомогою C #, але це, головним чином, підтримка популярних моделей програмування.

Висновок:

Зрештою, периферійні пристрої обмежуються мовою, заснованою на символах (наприклад, англійською). Крім того, західні мови мають кращу підтримку математичних понять (наприклад, поняття 0, серед іншого; Китай запозичує цифри замість власного представлення числових значень, щоб краще передати числа, оскільки писати коротше (в середньому)). Окрім числових значень, я б вважав, що мови, що базуються на символах (китайська), більше підходять для морфології мови програмування, ніж англійська, оскільки більшість сучасних мов уже використовують символи, і це було б загально еквівалентним для вивчення. Однак нам доведеться нав'язувати структуру на зразок C ++, оскільки блокування символів було б непростим для читання для більшості людей у ​​світі.


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

2
Те, що ви сказали про китайську мову, є помилковим. Китайська мова може бути введена за допомогою стандартної клавіатури.
grokus

2
@mojuba Не те, що я мав на увазі. Я мав на увазі те, що англійська добре вміє скорочувати слова, MOV, cpystr тощо. Ви не можете відрізати половину китайського символу або половину японського слова (що зазвичай є комбінацією слів) і означають те саме. Тоді як у вас є багато місця для скорочення англійських слів і передавання того ж значення. Я не хочу сказати, що інші професії не включають слова з інших мов, я маю на увазі, що слова, в які вбудований синтаксис програм, легко спрощуються в лексеми.
Лі Лув'єр

@grokus Якщо ви не маєте на увазі PinYin, ви не можете безпосередньо вводити китайську мову. Ви повинні використовувати натискання клавіш або використовувати PinYin та вибрати найближчий відповідний символ. Так чи інакше, вам слід включити процес вибору, оскільки стандартна клавіатура не підтримує чотири китайські тони. ЗАКЛЮЧИТИ ви змінюєте стандартну клавіатуру, тим самим порушуючи вимоги.
Лі Лув'є

-1, 0 не було західним поняттям (перший на Середньому Сході), Асамблея взагалі не використовує слова (як правило, на основі імен рядків / регістрів та 3-5 символьних команд, що мають місце Lx 0x86, LDA), англійська структура вбиває програмування, оскільки англійська мова має один із найгірших наборів структури на "західних" мовах. Нерозпізнавані слова - це місцеположення та конкретна ідея, яка може бути такою ж поганою, як і «Неанглійський» набір слів для розуміння. Всі мови є символічними, це частина того, як ви робите їх формальною мовою: int являє собою цілі числа, Double представляє плавання з подвійною точністю ...
Jeff Langemeier

5

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

Якби комп’ютери були винайдені 2000 років тому, вони використовували б грецьку мову. Якби вони були винайдені 200 років тому, вони мали б використовувати французьку мову. Якби вони були винайдені через 200 років, вони, ймовірно, використали б китайський ...


3

Ось деякі переваги для гіпотетичної мови програмування, якби вона просто припускала англійсько-латинський алфавіт.

  1. Це невеликий набір символів (на відміну від скажімо Kanji)
  2. Зазвичай не використовують діакритичні позначення (на відміну від французької, іспанської, німецької тощо)
  3. Кожен верхній випадок має нижню букву (на відміну від німецької Eszett)
  4. Це зіставлення прямо вперед

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


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

3
Я не погоджуюсь. Грецький алфавіт, наприклад, такий же маленький; діакритичні позначки могли бути усунені спеціально для програмування, однакові для німецької Я; порівняння нині нормалізується, тобто приводиться до певної прямої форми для обчислень / баз даних тощо практично на всіх існуючих мовах. Подібно до того, як англійські статті "а" та "а" в основному не використовуються або уникаються при обчисленні, будь-яка інша мова могла пройти певну оптимізацію.
mojuba

3
Я не бачу, що великі та малі регістри мають багато спільного з мовою програмування.
Девід Торнлі

1
@David Thornley ах, але для компілятора програма - це дані.
Конрад Фрікс

1
@Ingo Я не впевнений, що ти маєш на увазі. Наприклад, припустимо, я використовував змінну з назвою étudiant. За допомогою unicode перша буква може бути виражена як U+00E9 LATIN SMALL LETTER E WITH ACUTEабо eпісля неї U+0301 COMBINING ACUTE ACCENT. Якби ви були автором-компілятором для однієї з цих мов, хотіли б ви підтримати іменування змінної, як це? Як саме ви б ставились до двох змінних в тій самій області імені \u00e9tudiantта e\u0301tudiant?
Конрад Фрікс

2

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

  • Назва методів, змінних, об'єктів тощо не має значення для комп'ютера
  • Зміст коментаря не має значення для комп'ютера
  • Логіка програмування виражається в більшості (і я вважаю ВСІХ) розмовних мов.

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

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

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


Цікаво, що ви згадуєте коментарі; Я працював у японській компанії, де всі файли C зберігалися в Unicode, оскільки коментарі були на японській мові.
Марк Авенюс

1

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

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

  • Англійська мова може бути представлена ​​меншим набором символів, ніж, наприклад, китайська, японська, кирилична або навіть романська мови, які використовують наголошені латинські символи.
  • Англійський алфавіт, багато в чому обумовлений повною відсутністю наголошених символів, дуже візуально зрозумілий. У нас є достатньо помилок через невідповідні дужки або відсутні крапки з комою, було б нерозумно додавати проблеми в розрізненні між "ē", "ĕ" і "ě".

3
Англійська технічна лексика багата, оскільки обчислювальна техніка в основному розроблялася в країнах, що говорять на англійській мові, а не навпаки. Справді проблема курячого яйця;) Що стосується наголошених персонажів, цікавий момент.
mojuba

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

2
Pulchra est lingua Latina! ("Латинська мова прекрасна!") Я насправді розмовляю класичною латиною і мені було дуже цікаво, використовуючи її у своєму коді. На жаль, він постійно висить на межі мертвої мови, тому не можна практично базувати мову програмування. (Хоча, зараз я спокусився розробити одну лише для розваги.) Багато хороших технологій надійшло від носіїв англійської мови, але їх недостатньо з будь-якої однієї мови, щоб відповідати багатому словнику, який пропонує англійська мова будь-якою мовою, яка також відповідає інший фактор, про який я згадав: невеликий, чіткий алфавіт.
HedgeMage

1
@mojuba + HedgeMage, насправді не має значення, де розвиваються технології, англійська мова - це така велика мішанка запозичених слів і словникового запасу, що будь-яка термінологія, яка не була розроблена англійською мовою, швидко перекочується на мову. Основна перевага англійців полягає в тому, що він пропонує безліч складних моментів, які можуть тонко описати абстрактні поняття, що дуже корисно.
whatsisname

5
Англійська мова багата через звичку копати інші мови темними алеями та красти всі їх корисні слова. Це не стільки джерело позикових слів, скільки базар слів.
Девід Торнлі

1

Для трохи цікавого читання про контекст мови та про те, як ми закінчуємо майструвати речі:

Думка про думку Стівена Пінкера

Пам'ятайте, ми говоримо про мовну конструкцію, а не про те, як ми передаємо інформацію (не одну в одній), я працював з кодом, де основна мова змінних була вся німецькою мовою (код був не менш простий для розуміння ). Англійська по суті не має нічого, що краще підходить для програмування, якщо ми йдемо безпосередньо від того, як структурована наша мова, це, мабуть, гірше, а не краще, і це може бути чесно з багатьох причин:

  1. Відсутність структури (ми можемо ставити тему / присудок / іменники / прикметники куди завгодно),
  2. Змінність наших слів (ми відчуваємо, що можемо скоротити БУДЕ)
  3. BIG ONE: Хтось, хто вільно володіє англійською, не матиме кращого розуміння розділу коду, ніж той, хто не розуміє англійської мови.

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

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

Ми привласнюємо те саме значення LD або MV в зборах конструкціям вищого рівня, мені не потрібно знати, що означає змінна, і в багатьох випадках не буде, якщо вона все-таки англійською мовою через номер 2 у моєму списку. Набір ідентифікаторів, таких як int, str, enum тощо, - це спосіб розповісти, з чим ти працюєш, не більше. Якби замість int ідентифікатором була чайка, ми б всі знали, що означає чайка в контексті кодування, не тому, що це англійська мова, а саме те, що охоплює ідентифікатор.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.