Найбільш згинаюча мова програмування? [зачинено]


45

З досить поширеної мови програмування, яку ви вважаєте найбільш спокійною ?

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

Для мене я робив деякі функціональні та логічні (наприклад, Prolog ) програмування у 1990-х, тому не можу сказати, що я знаходжу там щось особливе.

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

Отже, яка ваша думка, що сприяє кращому програмуванню та практиці ?


Чи не може це бути розумовим і просто залишити це на цьому?

4
Будь-яка мова, де важливий білий простір!
мотиватор

@mootinator - Але з Python насправді так весело працювати, доки ваш текстовий редактор не заподіює вам болю.
rjzii

1
@Thorbjorn Хтось додасть INTERCAL? APL - це проект для молодших класів середнього тата.
Марк C

Perl ніде не є найскладнішим. Мені 12 років, і я досить легко програмую Perl.
Динамічний

Відповіді:


73

APL

Ця мова є неймовірно потужним і дуже лаконічно, це буде боляче ваш мозок.

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

Клавіатура APL

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

  • strip_tags()хтось? (запозичено з Вікіпедії)

strip_tags () ala APL


18
+1 за показ клавіатури
tcrosley

5
@tcrosley: Приємно, якщо у вас справжній: wickensonline.co.uk/apl/unicomp-apl-top-large.jpg
Orbling

4
І якщо це вже не було достатньо розумового згинання, були деякі оператори, які потребували використання клавіші backspace / overstrike. Наприклад, матрицею, оберненою, було квадратне поле (над клавішею L), перекриття зі знаком розділення (той, що знаходиться поруч із клавішею задньої стрілки у правому верхньому куті зображення клавіатури).
Тангурена

2
У мене спалахи на початку 1980-х, коли я робив APL для аналізу статистичного регресії високого рівня, люди все ще використовують це? Здригаються.
HLGEM

2
Я робив багато APL один раз - це все ще ностальгічне місце для мене ... Мені це подобалося в той час.
quick_now

56

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

Крім того, просто неможливо відформатувати речі таким чином, щоб мені добре виглядати.


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

11
Чому "Дуже близький до чисто функціонального"? Він суто функціональний.
dan_waterworth

4
Я хотів би процитувати себе і додати, як Haskell схилить вашу думку: "Haskell заважає вам засунути речі під килим, змушує вас чітко поводитися зі структурою вашої програми, і вона навчає вас мови описувати ці структури : мова типів. Розуміння типів, особливо багатих типів, як Haskell, зробить вас кращим програмістом на будь-якій мові ". programmers.stackexchange.com/questions/28950/…
Waquo

14
Haskell - суто функціональна мова програмування. Код, який ви пишете в Haskell, є чисто функціональним (до тих пір, поки ви не використовуєте unsafePerformIO тощо). IO-Monad є чисто функціональним, якщо ви вірите в інше, ви не розумієте, як монади використовуються для моделювання потоку управління чисто функціональним способом. Подумайте про свою програму як список покупок IO-дій, при цьому список покупок є лише чистою структурою даних, відсутність побічних ефектів, а мовний час виконання - покупець, який виконує побічні ефекти.
Waquo

8
@ Jon, як насчет, ми погоджуємось: Haskell, мова, є суто функціональною, але система виконання не є. Виконання програми haskell є нечистим, але сама програма є чистою.
dan_waterworth

30

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


2
Я підійшов до Prolog як зворотне програмування, бажаючи вже дізнатися мої відповіді, а потім програму, щоб отримати питання :)
Jé Queue,

1
@Xepoch: Я думаю, що ви можете бути там, Пролог формулює питання. Одна з єдиних правильних мов на 5GL.
Увімкнення

Взагалі, я вважаю, що Prolog завжди такий цікавий і надзвичайно потужний, але у мене виникають великі труднощі з повною мірою головою навколо місця розрізу ( !).
Увімкнення

+1 для Prolog, у мене був курс штучного інтелекту, який використовував Prolog, і це єдиний курс інформатики, в якому я погано
пройшов курс

Пролог, однак, не є функціональною мовою програмування. Заблукати функціоналом Prolog - це ніби бути підданим програмуванню Lisp на процедурному програмуванні.
ДАЙТЕ МОЕ правильне ДУМКУ

24

Я погоджуся з вами на Perl Це найпотворніший синтаксис, який я коли-небудь бачив. Вони кажуть, що навіть розробники Perl не можуть згадати, що вони написали на наступний день.


2
Захистіть +1 на Perl. Мені завжди особливо подобалися (я вважаю, що їх називають) змінними, що маються на увазі. Це чудовий код лише для запису.
GrandmasterB

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

3
Баха на цю відповідь і на обидва коментарі до неї. Добре написаний perl легко читати і писати. Baby-perl, написаний новачками, простий, якщо багатослівний. Єдиний "нечитабельний" perl або замислюється за призначенням, або створює сценарії з одним лайнером.
Шон Макміллан

22

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


10
ФОРТ - чудова мова. Коли я вперше вивчив програмування на початку 80-х, у мене був Atari 400, і мій вибір був інтерпретований "ОСНОВА", "Асамблея" і "СВІТ". Я використовував усі три широко, але НА ЗОШЕ більше, ніж будь-який інший. У мене ще є ультракласичні книги «Початок FORTH і Thinking FORTH» Лео Броді. Насправді, якби мене попросили створити самостінгову мову з нуля на новій апаратній системі, я б вибрав FORTH без вагань.
Адам Кросленд

3
@Adam Кроссланд: Мислення ВПЕРЕД велика книга, ви можете бути зацікавлені в цьому посиланню: thinking-forth.sourceforge.net
Orbling

1
@Orbling: чудові розуми думають однаково. Не більше 10 хвилин тому я поставив PDF на свій Kindle.
Адам Кросленд

1
@Adam Crossland: Чудове місце для цього. Ця книга, як правило, корисна для програмістів, повинна бути у списку для читання для людей - зацікавлені у ФОРТІ чи ні.
Увімкнення

1
Я цілком згоден. Це дуже багато може сказати про те, як ми взагалі думаємо про вирішення проблем. Броді такий виразний мислитель і чіткий письменник. Його твори мені радість.
Адам Кросленд

21

Рубін .

Це змушує мене вбити себе:

1.month.from.now()

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


23
О БОЖЕ МІЙ. Хто коли-небудь думав, що це гарна ідея?
EpsilonVector

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

55
Чи тільки я вважаю, що це виглядає приголомшливо, і це, можливо, є вагомим приводом навчитися Рубі?
Увімкнення

9
Це дивовижно читати, так. Але це означає, що я можу написати 3.months.from.last.month.if.it.was.a.leap.year? Ні. Принаймні, я не думаю . Якщо я можу ... RoR може бути першою телепатичною мовою в історії.
morganpdx

15
Що не так DateTime.Now.AddMonths(1);? Ці функції навряд чи роблять код читабельнішим. (Я не кажу, що у C # є найкращий синтаксис. Ви можете переключити його на будь-які мовні конвенції, і він все ще застосовуватиметься.)
ChaosPandion

18

Брейнфук

Кожен, хто може чесно написати цю насмішку над мовою, навіть не потребуватиме такої теми.

Hello World (покажчики, зліва; пояснення, праворуч):

+++++ +++++             initialize counter (cell #0) to 10
[                       use loop to set the next four cells to 70/100/30/10
    > +++++ ++              add  7 to cell #1
    > +++++ +++++           add 10 to cell #2 
    > +++                   add  3 to cell #3
    > +                     add  1 to cell #4
    <<<< -                  decrement counter (cell #0)
]                   
> ++ .                  print 'H'
> + .                   print 'e'
+++++ ++ .              print 'l'
.                       print 'l'
+++ .                   print 'o'
> ++ .                  print ' '
<< +++++ +++++ +++++ .  print 'W'
> .                     print 'o'
+++ .                   print 'r'
----- - .               print 'l'
----- --- .             print 'd'
> + .                   print '!'
> .                     print '\n'

2
Або як щодо Whitespace? Все зло Brainfuck поєднується з невидимим кодом.
Лорен Печтел

17

Лісп - це моя остання мова, що перекручує розум.

Я взяв монади та функціональне програмування від Haskell із собою, і тепер у мене є макроси для роботи. Я просто заходжу в CLOS і зовсім не торкаюся системи умов.


Мені навіть не подобаються Ліпси (за можливим винятком Clojure - я все ще не вирішив там) і дав вам +1. Частина, що замикає розум, безумовно, є, і те, що я дізнався від Ліспа, навіть якщо я не використовую її, значною мірою повідомив про те, що я роблю іншими мовами.
ДАЙТЕ МОЕ правильне ДУМКА

14

СУМКА

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

s A="String" F i=1:1:$L(A) W $c($S($A($E(A,i))<91:$A($E(A,i))-52#26+65,1:$A($E(A,i))-84#26+97))

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

1
Моя перша в історії програмування була в компанії, яка спеціалізувалася на MUMPS! На жаль, я пройшов університетський курс з веб-розробки, тому вони поставили мене в новостворену команду ASP компанії замість старих рук, але MUMPS була мовою, в якій ми навчалися протягом перших кількох тижнів. Можливо, мені вдалося врятуватись…
thesunneversets

1
Хтось, хто опублікував тут від Медісон Вісконсін? Верона, справді?
Ганс Пасант

1
Я вірю, що thedailywtf.com має цілий розділ, присвячений MUMPS. Не схожа на мову, яку я хочу доторкнутися.
Тянна

1
Я пам’ятаю, як вивчав М в академічних колах, і вважав, що це цікаво як мова спеціального призначення. Тернистість, яку вона дозволяє, схожа на перекручений вид мінімізації. В моїй наївності я вважав, що виробничий код містить мало крайніх скорочень мови. Перший і єдиний раз, коли я побачив виробничу M кодову базу, моя кишка підтягнулася ... це було схоже на ваш приклад. О, жах!
ajk

13

Я б сказав, Coq , або інша реалізація теорії залежного типу. Система типу Haskell порівняно не дуже виразна. Перехід до більш експресивної системи типу (наприклад, обчислення конструкцій (CoC)) дозволяє робити деякі акуратні речі, наприклад, доведення властивостей програм всередині мови та вбудовування сильних інваріантів у ваші типи, які можна перевірити статично.


2
Будь-яка система / проверка / мова, залежно від типу, ймовірно, може вважати більш заплутаною, ніж звичайні мови, тому +1.
Орлінг

1
Офіційна перевірка програм - це те, з чого я тільки починаю. Це, безумовно, згинає розум і стає все кориснішим у реальному світі. +1
dan_waterworth

7

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

Оскільки це така (відносно) поширена мова (головним чином для розробки Mac / iPhone / iPad ), я впевнений, що насправді це дещо пристойно, коли ви звикаєте до неї.


2
Ну, це, мабуть, кваліфікується як трохи згинаючи розум, але мені це подобається. Це може допомогти, якщо ви зрозумієте, що [foo bar]це лише синтаксичний цукор, на objc_sendMsg(foo, "bar");який у свою чергу шукається вказівник функції (це спеціальна «смужка», а не загальна). Ви зрозуміли, що це повністю качка набрана?
Пер Йоханссон

Objective-C - це просто величезний синтаксичний цукор навколо функцій виконання. Коли ви звикнете, [receiver doStuff:arg]це схоже на динамічну Java
toasted_flakes

6

Я вибираю Меркурій .

Ртуть зігнута мій погляд, показуючи мені , що навіть чисті мови можуть зробити I / O .

Як це працює, це те, що функції вводу / виводу в Меркурії приймають значення "стан світу" і повертають нове значення "стан світу". Тож функції вводу / виводу в Меркурії перетворюють світ і, отже, підтримується чистота.


3
+1 "... ртуть перетворює світ і, отже, підтримується чистота." - Мені це подобається поза контекстом. ;-)
Увімкнення

Я зараз борюся за кривою навчання з Меркурієм. Досі це була гідна боротьба. Мені це дуже подобається
ДАЙТЕ МОЕ правильне ДУМКА

Єдине, що мене відклало від ртуті - це те, що тип струни - це NULL.
dan_waterworth

6

Це , безумовно, має бути схема . Намагання пояснити call-with-current-continuationзавжди болить мій мозок, але як тільки ви це зрозумієте, ви можете зробити неймовірно елегантні рішення.

Хочете зупинити частковий шлях за допомогою алгоритму та управління рукою комусь іншому? Звичайно!

Хочете відновити те саме продовження кілька разів? Звичайно!

Хочете призупинити виконання алгоритму, переглянути функцію, а потім відновити виконання з оригінальним стеком, але оновленим глобальним станом? Нема проблем! І чи роблять це кілька разів із різними змінами в глобальному стані, але однаковою точкою повторного входу стека? Для вас, пане, що завгодно!


+1 LOL + "Для вас, пане, що завгодно!" Окрім того, що майже не є рядком у пісні в Олівері !, це також гарне прагнення до мови.
Увімкнення

1
Схема - не єдина мова з явними продовженнями. Наприклад, Хаскелл підтримує це так само добре і настільки ж згинаючи розум.
ДАЙТЕ МОЕ правильне ДУМКА

4
У Haskell це, мабуть, більше розуму, оскільки він (call / cc) реалізований як бібліотека, а не мовна функція. Але, можливо, це робить менш розумним.
Логан Капальдо

Я думаю, що це одночасно і більше, і менше згинання розуму. Тримаючи це протиріччя в моїй голові, згинає мою думку. Отже, врешті-решт Хаскелл більше згинає розум. :)
ДАЙТЕ МОЕ правильне ДУМКА

Класна річ у схемах (і Ruby !) - це те, що вони вбудовані в мову. Haskell в основному лише додає, що це монадичний синтаксис навколо звичайного стилю проходження продовження, що можна зробити і в Scheme. Але мати вбудований call / cc скрізь без необхідності вбудовувати всю річ у монадійну конструкцію, безумовно, дозволяє багатьом конструкціям, що перегинають розум.
Даріо

4

Я використовував стародавній редактор під назвою TECO (Text Editor і COmparator), який був дуже потужною мовою модифікації тексту з усілякими можливостями макрокоманди. Я не пам'ятаю точну відому цитату про це, але суть полягала в тому, що "будь-яка випадкова колекція з 20 символів майже завжди є законною програмою TECO, і змінить ваш файл (це редактор) принципово непередбачувано. Я пам’ятаю, що писав перетворювач Fortran в PL1 приблизно на сторінці TECO-коду.


5
"Одна з найбільш цікавих ігор, щоб грати з TECO - це ввести своє ім'я як командний рядок і спробувати відгадати, що це робить. Просто про будь-яку можливу помилку введення тексту під час розмови з TECO ви, ​​мабуть, зруйнуєте вашу програму, або ще гірше ... введіть тонкі та загадкові помилки в колись працюючу підпрограму. " Людина, це були дні!
ДАЙТЕ МОЕ правильне ДУМКА

1
TECO також був оригінальною базою EMACS. EMACS стартував як просто колекція макросів TECO!
Гейб

@Omega: потрібно сказати, на який TECO ви звертаєтесь. DEC TECO, що постачається разом з TOPS-10 або MIT TECO, написаний на MIDAS. Останнє TECO - це те, про що було написано EMACS. Це також було розширено EMACS. Я звик зламати EMACS замість того, щоб проходити заняття.
Джон Сондерс

Я використовував тільки DEC TECO. І так, це були дні (щоб знову бути молодими) ....
Омега Центаври

1
Змушує мене запам’ятати введення в командному режимі Vim
ron

3

Асамблея була для мене найбільш «розумним згинанням», але я лише починаю це.


що робить його гірше, це залежить від ОС та обладнання
Дейв,

Що з цим робить це так? Прямі інструкції без явного порядку групування? щось ще?
Черга Jé

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

2
Ах, Cincinnati Milacron 2200B: Змінна довжина слова в поєднанні з модифікацією часу виконання адреси JMP. Це змусило LSD виглядати ручним.
Пітер Роуелл

3

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


3

РЕБОЛ

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

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

Але Дуглас Крокфорд був шанувальником, черпав натхнення у створенні JSON , і запропонував людям заглянути до нього зовсім недавно в жовтні 2010 року:

"Тед Ньюард зробив дійсно хорошу роботу з модерації панелі на тему" Майбутнє мов програмування ". В кінці панелі Тед запитав учасників форуму, які мови вони, хоча люди повинні вивчати, щоб отримати нові ідеї. (Брюс Тейт), Ребол (Дуглас Крокфорд) , Форт і Фактор (Алекс Пейн), Схеми і Асемблер (Джош Блох) і Клуджуре (Гай Стіл) ".

Джерело: sauria.com

Я думаю, що варто придивитися до тих, хто хоче розтягнути, як вони думають про дизайн мови та розширення. Тепер, коли це відкритий код (після 18 років розвитку власності), звичайні відмови від відповідальності, які я давав, щоб тримати його на відстані руки, вже не застосовуються ... це варто подивитися! Спільнота навіть вийшла з власної програми обміну повідомленнями на базі Rebol і почала спілкуватися в режимі Stack Overflow (на мій подив!)


1
Я уникаю REBOL, оскільки його єдиною практичною реалізацією є нестандартизований, не відкритий фрагмент програмного забезпечення, який змінюється на примху його корпорації, що володіє. (Rebol 2 vs. Rebol 3 ...) Якщо вона коли-небудь стандартизується або відкриється, я буду ще раз дивитися, але до цього дня Rebol залишається поза моїм інструментальним ременем.
ДАЙТЕ МОЕ правильне ДУМКА

1
@JUSTMYcorrectOPINION, можливо, настав день поглянути ще раз! Rebol 3 тепер є ліцензованим програмним забезпеченням Apache2 . У нас навіть є RebolBot тут, в кімнаті чатів Rebol і Red на StackOverflow, щоб допомогти нам у перегляді мови. ( Червоний - ще один варіант Rebol з відкритим кодом, який демонструє дуже цікаву обіцянку як гібридна компільована версія.)
HostileFork

2

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


SQL, безумовно, схиляє розум, але це не допомагає мені написати кращий код.
dan_waterworth

4
Для мене SQL так само природно, як і БАЗОВИЙ. Дивовижно, наскільки простою може бути підтримка БД, коли ви зрозумієте повну обробку даних у SQL.
Черга Jé

@dan_waterworth, я думаю, що SQL може допомогти вам написати менший та більш стислий код, додавши більше логіки в SQL порівняно з обробкою більшості умов та подальших запитів у додатку.
Черга Jé

@Xepoch, я думаю, якщо є щось, чого нас навчив зростання ORM, люди не люблять писати в SQL, якщо вони можуть цього уникнути. Вони набагато краще пишуть своєю мовою.
dan_waterworth

Я думаю, що використовувати що-небудь, що може написати кращий код, ніж ви, це добре.
JeffO

2

Чистий

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


+1 Функціонал означає вектор, надзвичайно потужна мова, яка. Як нащадок q (який трохи зобов'язаний APL) і позичив тонну у Haskell та ін. Це, безумовно, вимагає згадки.
Увімкнення

2

Це може бути не найвибагливішим, але мені було набагато важче навчитися (я думав, що Haskell і мова складання легше!)

Це набір мов HDL , зокрема VHDL (і в меншій мірі Verilog )

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


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

1
Будучи електричним інженером, у мене не було особливих проблем з одночасністю, це було фактично визволенням. Що стосується болю від впровадження, добре, що UP - це нішеве рішення конкретних класів задач, що перетворюють проблему на рішення, яке можна охарактеризувати як алгоритми, концепція, спочатку взята з математики. Проблема з притаманним паралелізмом є однією з проблем, що легко вирішуються, і VHDL та FPGA корисні в той час.

Так, VHDL вигадливий, якщо ви ще не програміст і звик працювати з бездротовими блоками одночасно.
medivh

1

Tcl

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


1
Я робив багато програмування Tcl близько 1995-1997 рр. Без особливих причин. Коли я почав шукати нову роботу в 1998 році, кожен рекрутер у всій зоні затоки намагався мене взяти на співбесіду щодо погано сплачених концертів VIGNETTE високого тиску. Я швидко вилучив його з резюме. Я вважав, що вам важко пережити це, тому що я запам'ятав Tcl, що він справді простий, але я бажаю, щоб я навчився Python замість цього, заднім числом.
Адам Кросленд

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

1

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


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

2
@Winston: Стрічка тюрінг-машини не повинна бути нескінченною. Потрібно лише мати фабрику стрічок на кожному кінці, яка може виготовляти додаткову стрічку за потребою :)
Майк Данлаве

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

Як говорилося в запитанні BrainFuck, і це в значній мірі машинна мова Тьюрінга.
Mchl

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

1

С

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


Вибачте. C - мова складання. Звичайно, у них немає таких речей.
Пітер Роуелл

2
Мови складання розуму згинаються.
david4dev

-1

JESS (оболонка системи експертів Java). Ця адаптація CLIPS, вбудована в середовище Java, є функціональною мовою експертної системи на основі правил. Спроба відобразити реальні об’єкти Java як факти та знайти правильні запитання, щоб отримати очікувані результати - справжнє завдання. Менше, якщо ви знайомі з експертною теорією системи, але коли ви перебуваєте з чистої системи мислення OOP, вона не підходить добре. ПРИМІТКА: CLIPS - це не Lisp, але виглядає так. Ще одна думка.

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


Jess - це сучасна версія CLIPS, яка також була вбудована як свого роду сценарій / логічний двигун для ваших власних програм.
Тангурена

Гаразд, я виправлений. haskel.com/corp/details/0,10294,CLI1_DIV139_ETI9759,00.html Тим не менш, він вимагає зовсім іншого мислення від мови, в яку він вбудований.
Berin Loritsch,


-1

CIL

CIL - загальна проміжна мова, яку збирають усі програми .NET , свого роду об'єктно-орієнтована збірка. Мені цікаво спробувати написати або прочитати код у ньому та порівняти його конструкції з тими, що знаходяться на C #, які я вже знаю. Це хороший спосіб дізнатися більше, що .NET робить за кадром. І це може бути корисно для таких речей, як динамічне генерування коду чи перезапис існуючого складеного коду за допомогою Mono Cecil .


2
або байт-код теж з цього питання?
Jé Queue

Якщо ви маєте на увазі байт-код Java, то я не маю жодного досвіду з цим, тому я не в змозі рекомендувати його як вигин розуму.
svick

Я б не дуже порівнював Java-Bytecode та CIL, оскільки Java-Bytecode вже компільований і CIL буде компільований під час виконання (Just-In-Time-Compiler .net)
basti

@chiffre За більшості обставин Java Bytecode та CIL працюють абсолютно однаково. В обох випадках у вас є вихідний код (C # або Java), який компілюється на бінарну мову посередника в "час компіляції" (CIL або Java Bytecode), який потім компілюється до фактичного машинного коду під час "виконання" JIT компілятор.
svick
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.