Створення нової мови сценаріїв для досвіду навчання? [зачинено]


13

Чи варто створити мову сценаріїв для мого особистого досвіду навчання?

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

Чи варто створення мови програмування (включаючи написання чернеток за призначенням, синтаксису, філософії, перекладача тощо) варте часу, зусиль та досвіду навчання? Або є інші проекти, від яких я міг би отримати більше користі?


3
Інший варіант - реалізувати існуючу мову. Я повільно розвивав діалект ECMAScript під назвою Machete протягом більше року і навчився зовсім небагато.
ChaosPandion

Цікаво, що я про це не думав.
Іван

2
1) Дізнайтеся про це ... www1.idc.ac.il/tecs 2) і це ... mitpress.mit.edu/sicp
Joe Internet

Ви також можете розглянути внесок у існуючі проекти v8, SpiderMonkey або Python
treecoder

3
IMHO, найкращий спосіб вивчення нових мов програмування - це реалізація компіляторів для них (або принаймні для значних підмножин мов оригіналу). Так, так, це справді корисний досвід навчання.
SK-логіка

Відповіді:


15

Набудьте своїх навичок та свого портфоліо

На мою думку, це було б дуже гарним досвідом навчання:

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

Тож я вважаю це продуктивним, корисним і загалом "вартим цього".

Розпочати

Тепер ви можете використовувати різні підходи, залежно від того, скільки часу ви плануєте витратити на це ...:

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

Почніть з малого

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

Мені це здається дуже освітянським.

Вперед (і поділіться з нами посиланням).

Маленький, як у "короткому"

Але знову ж, я б рекомендував почати з малого . Не бійтеся, якщо люди кажуть, що це забирає багато коду та часу. Не обов’язково, якщо ви не прагнете до складної мови. Алан Кей та інші інженери Xerox PARC, як стверджується, розробили ранню версію Smalltalk, яка розміщується на одному аркуші паперу , як мета для терміновості (читайте Xerox PARC: Ділери блискавки для подробиць про історію PARC ). Здається, хорошим, освітнім і досить обмеженим підходом (доки він не приносить шкоди читанні).

Маленький, як у "обмежених"

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

Повторне використання (та заглянути) знання інших

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

І очевидно, ви можете прочитати про побудову компілятора взагалі.


Тепер, якщо ми модифікуємо ваше запитання, щоб це було "НАЙБІЛЬШЕ продуктивне використання вашого часу?" це стає зовсім іншим питанням :)

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


2
+1 за "Тоді ти досягаєш успіху в тому, що він працює, але все одно смокче"
Іван

1
@Ivan: Спасибі :) Це, мабуть, ще одна хороша частина досвіду навчання: самоаналіз, смиренність та наполегливість!
haylem

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

3

Я кажу, йдіть вперед.

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


2

Розробка та реалізація (іграшкової, але повноцінної) мови програмування насправді була однією з (обов'язкових?) Вправ в одному з моїх класів CS верхнього відділу (або клас компілятора, або опитування мови програмування, я забуваю, який ...)

Тож принаймні один професор ЦС так думав.

Ви закінчите набагато вдячніше за всі ті "примхи", які мають інші мови.


1

Це займе певний час. Чи плануєте ви його підтримувати?

Чи варто створення мови програмування (включаючи написання чернеток за призначенням, синтаксису, філософії, перекладача тощо) варте часу, зусиль та досвіду навчання? Або є інші проекти, від яких я міг би отримати більше користі?

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


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

Впровадження конкретних доменних мов може фактично значно прискорити розробку практичного проекту. Тож це може бути цілком корисним як у фінансовому, так і в естетичному плані.
SK-логіка

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

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

@Ryan - вибачте, що я пропустив цю частину.
Jetti

-2

Моя рада вам

Не винаходити колесо

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

Ви повинні запитати себе:

  • Для чого потрібно створити сценарій? Чи наявний там сценарій недостатньо хороший?
  • Чи будете ви підтримувати та публікувати його, і ви впевнені, що ваш сценарій будуть використовуватися іншими програмістами? Якщо ваша відповідь «ні», не робіть цього.

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

І цей комікс xkcd трохи актуальний, просто змініть "стандарти" на "мову" також:

введіть тут опис зображення


-1, він чітко сказав, що це буде для особистого досвіду навчання.
ГрандмайстерB

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

2
Так, ти маєш рацію - жоден програміст-першокурсник ніколи не напише свого першого "Привіт, світ!" - зрештою, було б набагато краще просто завантажити існуючий. І що в цьому контексті " рамки "?
SK-логіка

5
@Rudy, реалізація компілятора чи інтерпретатора - це така тривіальна та основна навичка, яка досить близька до "Привіт, світ!". Ось чому це обов’язково в будь-якому гідному курсі CS. І, незважаючи на те, що банально, це завдання навчає ряду дуже корисних навичок, застосовних на практиці майже в будь-якій галузі. Зайве нагадувати , що реалізація DSLs є надзвичайно важливим (зауважте - що Hibernate штуковини ви згадали це DSL - , і існує цілий ряд вбудованих інтерпретаторів і компіляторів в ньому, деякі з яких досить слабо реалізовані).
SK-логіка

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