Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Автор Тема: Уроки LISP (українською мовою)  (Прочитано 7027 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
Тут дехто цікавився сабжем, тож думаю організувати їх (якщо бажаючих набереться вдосталь і у мене буде час).
Отже, питання: чи справді це комусь цікаво? Лісп — далеко не найпопулярніша й не найюзабельніша мова, яка не надто часто використовується на практиці, хоча й «розширює свідомість», «покращує загальний рівень програміста» і т.п. Хоча, по-моєму, цю гілку мов просто не оцінили як слід.

Питання номер два: що саме вчити? Scheme, Clojure, Common Lisp? З останнім я знайомий лише поверхнево, тому для організації уроків мені самому доведеться його вчити. Scheme — мова, на прикладі якої простіше зрозуміти, що таке лісп (у світі ліспів вона займає приблизно таке ж місце, як Pascal — у світі алгоритмічних мов). Clojure — молода мова, місцями досить-таки сира, але для практичного застосування я б вибрав саме її, хоча там є безліч відмінностей від «типового ліспа», не вистачає концептуальної довершеності і т.п.

Питання номер три: в якому напрямку розвивати уроки? Що краще — ознайомлення з мовою на прикладі практичних задач, огляд якомога більшої кількості можливостей мови, щось іще? Взагалі, як краще будувати урок? Я раніше не вів уроків, тому досвіду у мене обмаль.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн arseniiv

  • Сообщений: 14921
Offtop
А чому ви вирішили не у вашому блозі?


Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
Offtop
А чому ви вирішили не у вашому блозі?

Тому що блога на ЛФ не маю — мені вистачає й українського розділу на форумі.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн arseniiv

  • Сообщений: 14921
Тому що блога на ЛФ не маю
:o Мені здавалося що він був! (?)

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
Не було (не рахуючи однієї теми в блорумі). Ще є блог на домашньому комп'ютері, але він без коментарів.

А що скажете по темі — якісь побажання до уроків будуть? До речі, скачав hugs, чекаю уроків Haskell'а ;)
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн RawonaM

  • Сообщений: 44993
Мені цікаво.

Оффлайн arseniiv

  • Сообщений: 14921
Offtop
До речі, скачав hugs, чекаю уроків Haskell'а ;)
Уроки будуть трохи пізніше. (Гуглятор всё ещё правилен?)

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
Offtop
З гуглятором ніби все ОК — явних помилок не бачу
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Дми3

  • Гость
Отже, питання: чи справді це комусь цікаво?
Так.

Я давно хочу повчити Лісп, але все якось не... А тут була б нагода.

Питання номер два: що саме вчити? Scheme, Clojure, Common Lisp? З останнім я знайомий лише поверхнево, тому для організації уроків мені самому доведеться його вчити. Scheme — мова, на прикладі якої простіше зрозуміти, що таке лісп (у світі ліспів вона займає приблизно таке ж місце, як Pascal — у світі алгоритмічних мов). Clojure — молода мова, місцями досить-таки сира, але для практичного застосування я б вибрав саме її, хоча там є безліч відмінностей від «типового ліспа», не вистачає концептуальної довершеності і т.п.
Вибирайте те, що Вам самому подобається. Так більше шансів, що уроки ми взагалі побачимо. ;D

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

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
Цитировать
Вибирайте те, що Вам самому подобається.
Так ось я і не знаю, що краще. Сам я починав зі Scheme, і, мені здається, на прикладі цієї мови легше зрозуміти базові концепції лісп-подібних мов. Але я з самого початку орієнтувався на лісп для JVM, тому перехід до Clojure був цілком закономірним. В принципі, можемо розглянути й обидві мови в порівнянні, а далі зосередитись на якійсь одній із них.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
Зараз пишу в блокноті другий урок. Ще трохи базового синтаксису (функції, вибір, змінні). Багато не надто цікавого матеріалу (цікавіше буде потім) — не знаю, чи треба це комусь, чи ті, хто цікавиться ліспом, вже його якось самі засвоїли без моєї допомоги.

Взагалі, для чого вам той лісп? Чого ви від нього очікуєте? Спробую розвивати уроки в відповідному напрямку.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн Demetrius

  • Сообщений: 12351
  • Бес джинн фея колдунчик
Взагалі, для чого вам той лісп?
Для себе. Зрозуміло, що писати комерційні програми я на ньому навряд чи буду, це не мейнстрім, тому кому він тут потрібен?

А ось коли писати програмки для власного користання, то можна писати їх будь-якою мовою.

Чого ви від нього очікуєте?
Було б дуже непогано вивчити Схему і мати можливість вбудувати собі скриптову мову з мацзяном і гейшами в будь-яку програму з мінімальним overhead. Коли я дивлюся на розміри Tiny Scheme, в мене слюни течуть… Хотілося б її опанувати.

Хоч, я так зрозумів, Ліспи ви використовуєте і для більш практичних мет. Теж було б цікаво подивитися на якийсь приклад; довідатися, наприклад, чим воно зручніше того ж Python'а... ::)
«Честного не жди слова, // Я тебя предам снова»

Оффлайн Demetrius

  • Сообщений: 12351
  • Бес джинн фея колдунчик
Хочу продовження...
«Честного не жди слова, // Я тебя предам снова»

Оффлайн arseniiv

  • Сообщений: 14921
А можно здесь кого-нибудь попросить (не меня) складывать ссылочки на темы? А то я и не знал, что уже есть второй.

ЛІСП: урок перший
ЛІСП: урок другий

Upd. Ой, ссылочки-то есть в первом уроке. А у меня в непрочитанных не отразилось! :-\

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
На початку кожного уроку буде зміст з посиланнями на всі уроки. Якщо хочете, можу ще кидати в цю тему посилання на нові уроки.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн arseniiv

  • Сообщений: 14921
Хочу! Спасибо.

Оффлайн Sirko

  • Сообщений: 2582
  • Пол: Мужской
Уроки=чари, а не лекція! Не врікайте LISPа, він й так на ладан диха!  ;)

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
1) У школі — уроки, а не лекції. Всі вчительки — відьми?
2) Ви недооцінюєте могутність ліспа. Це ж вам не фортран якийсь.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн Sirko

  • Сообщений: 2582
  • Пол: Мужской
1) У школі — уроки, а не лекції. Всі вчительки — відьми?

Цитировать
Російсько-український словник 1930р. (О. Ізюмов)
Урок –
1) (задание) завда́ння, -ння;
2) (школьный у.) ле́кція, -ії;
3) (назидание) нау́ка, -ки. [2]

 Російсько-український словник ділової мови 1930р. (М. Дорошенко, М. Станиславський, В. Страшкевич)
Урок;
1) (лекция) – ле́кція чого́; (занятие) – година чого́;
2) (задание) – завда́ння, призна́чена, визначена робо́та, но́рма вироблення, но́рма виробу;
3) (назидание) – нау́ка. [5]


 Російсько-український словник правничої мови 1926р. (В. І. Войткевич-Павлович, Г. Д. Вовкушівський та інші)
Урок – лекція, година, (руссизм) урок. -ки (учение) – наука; наперед загадана робота, загад, (руссизм) урок. [6]
Исполнять, исполнить – виконувати, виконати (АЮЗР, 6, І, 343; КМ); відбувати, відбути (повинність). -нить волю – вволити (вчинити) волю чию. -нить поручение – виконати доручення. -щий обязанности, должность – заступник; наказний. -щий должность судьи – наказний суддя. -нить слово – додержати слова. -нять служебные обязанности – виконувати службові повинності (обов’язки); (администр.) держати уряд (КМ). -нять урок – поробити призначену роботу. -ниться – справдитися. [6]

У школі теж лекція.  :)

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
Так то ще в роки дитинства наших дідів було. Та й то, не факт, що справді було так.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн Sirko

  • Сообщений: 2582
  • Пол: Мужской
А вчительки називалися професорками!

вчити=приручати=приборкувати
рrоfitеоr=відкрито говорити


Оффлайн Demetrius

  • Сообщений: 12351
  • Бес джинн фея колдунчик
Уроки=чари, а не лекція!
Сірко, Ви можете зайнятися перекладом цих уроків лекцій з української на українську. ;D
«Честного не жди слова, // Я тебя предам снова»

Оффлайн Demetrius

  • Сообщений: 12351
  • Бес джинн фея колдунчик
Ось у мене таке питання. І в Racket, і в Kawa є можливість вибирати різні мови програмування… В Racket це #lang racket. Навіщо?

Цитировать
Writing definitions outside of a module leads to bad error messages, bad performance, and awkward scripting to combine and run programs. The problems are not specific to racket; they’re fundamental limitations of the traditional top-level environment, which Scheme and Lisp implementations have historically fought with ad hoc command-line flags, compiler directives, and build tools. The module system is designed to avoid these problems, so start with #lang, and you’ll be happier with Racket in the long run.
Які саме проблеми вирішує #lang racket?
«Честного не жди слова, // Я тебя предам снова»

Оффлайн Python

  • Moderator
  • *
  • Сообщений: 51161
  • Пол: Мужской
З racket я справи не мав, тому не впевнений, чи зможу дати точну відповідь. Наскільки я можу зрозуміти, в процитованому абзаці йдеться про різницю між синтаксичними конструкціями #lang і (module) — у другому випадку, всі описи модуля мають бути всередині дужок, тоді як #lang дозволяє дещо спростити синтаксис файла з модулем.
http://docs.racket-lang.org/guide/Module_Syntax.html
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Оффлайн Demetrius

  • Сообщений: 12351
  • Бес джинн фея колдунчик
Пробую щось вчити. Взяв Racket, бо в нього, як мені здалося, достатньо симпатична бібліотека (правда, в Kaw'и та Clojur'и явова бібліотека також симпатична, але ж уся документація для Jav'и).

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


#lang racket/gui

(define (yale-to-vector yale)
  (apply vector (regexp-split #px"[[:space:]]+" yale)))

(define target (make-bitmap 150 50))
(define dc (new bitmap-dc% [bitmap target]))
(define hanzi-font (make-object font% 24 "Microsoft JhengHei" 'roman 'normal))
(define yale-font (make-object font% 8 "Tahoma" 'roman 'normal))

(define (draw-one-hanzi hanzi yale x y)
  (send dc set-font hanzi-font)
  (define-values (hz-width hz-height hz-desc hz-asc) (send dc get-text-extent hanzi))
  (send dc draw-text hanzi x (+ y 10))
 
  (send dc set-font yale-font)
  (define-values (y-width y-height y-desc y-asc) (send dc get-text-extent yale))
  (send dc draw-text yale (+ x (/ (- hz-width y-width) 2)) y)
 
  (+ x hz-width))

(define (draw-hanzi-string hanzi yale x y)
  (define len (string-length hanzi))
  (define yale-vector (yale-to-vector yale))
  (let loop ([i 0] [current-x 5])
    (cond [(< i len)
           (loop (+ i 1)
                 (draw-one-hanzi (string (string-ref hanzi i))
                                 (vector-ref yale-vector i)
                                 current-x
                                 y))])))

(draw-hanzi-string "晚安" "máahn ōn" 5 0)

target ;щоб вивести картинку в REPL-і
(send target save-file "C:\\test.png" 'png)
«Честного не жди слова, // Я тебя предам снова»

 

В быстром ответе можно использовать BB-теги и смайлы.

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.
Имя: E-mail:
Визуальная проверка:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: