2 លក្ខណៈសំខាន់នៃភាសាគ្រោងការណ៍៖ ការហៅឡើងវិញ។ ភាសាសរសេរកម្មវិធី។ GNU Guix គឺជាអ្នកគ្រប់គ្រងកញ្ចប់ថ្មីពីក្រុម GNU

គ្រោងការណ៍ដែលត្រូវបានគេស្គាល់ថា Lisp (មិនត្រូវច្រឡំជាមួយ Common Lisp) គឺជាភាសាសរសេរកម្មវិធីក្បួនដោះស្រាយទំនើប ដែលល្បីល្បាញដោយសារការផ្តោតអារម្មណ៍លើគំរូកម្មវិធីមុខងារ ប៉ុន្តែមិនកំណត់ខ្លួនឯងចំពោះវាទេ។

គ្រួសារ Lisp គឺជាគ្រួសារដែលប្រើភាសាយូរជាងគេទីពីរ (បន្ទាប់ពី Fortran) ដែលបង្កើតឡើងដោយ John McCarthy ជាឧបករណ៍សរសេរ។ បញ្ញាសិប្បនិម្មិត. អ្នកចូលរួមសកម្មម្នាក់ក្នុងការអភិវឌ្ឍន៍ កុំព្យូទ័រឯកទេស Lisp ត្រូវបានបកស្រាយដោយ Richard Stallman ដែលក្រោយមកជាស្ថាបនិកនៃ Free Software Foundation ។ ជាលទ្ធផល ឧបករណ៍សំខាន់មួយសម្រាប់បង្កើតនៅក្នុង Scheme គឺ Emacs (+Geiser, Scheme-Complete, company-mode)។ វាត្រូវបានគេរំពឹងថានៅចំណុចមួយចំនួន Scheme នឹងក្លាយជាភាសាផ្ទៃក្នុងរបស់ Emacs ជំនួសឱ្យ Emacs Lisp ។ (អ្នកអាចមើលវាឥឡូវនេះនៅលើ EdWin ។ )

គ្រោងការណ៍គឺជា Lisp ដែលផ្តោតលើភាពងាយស្រួលនៃការដឹកជញ្ជូន វិធីសាស្រ្តមុខងារ និងការអនុវត្តការអនុវត្តល្អបំផុតពីទ្រឹស្តីភាសាសរសេរកម្មវិធី។

គ្រោងការណ៍អភិវឌ្ឍតាមពីរវិធី។ ផ្នែកបន្ថែមបុគ្គលត្រូវបានបង្កើតដោយយោងទៅតាមដំណើរការស្រដៀងទៅនឹង RFCs ហើយត្រូវបានគេហៅថា SRFIs (Scheme Request for Implementation)។ ក្នុង​រយៈពេល​កំណត់ ការ​បោះពុម្ព​រួម​នៃ "របាយការណ៍​ស្ដង់ដារ" ត្រូវ​បាន​បោះពុម្ព​ដោយ​បង្កើត​នូវ​អ្វី​ដែល​ជា​គ្រោងការណ៍ "ទាំងមូល" ។ ការបោះពុម្ពចុងក្រោយបង្អស់ដែលបានបញ្ចប់គឺការកែប្រែ 7 Report on Algorithmic Language Scheme (ភាសាតូច) ហើយការបោះពុម្ពសាកល្បងចុងក្រោយបំផុតគឺ R7RS-large Red Edition។ វាត្រូវបានគេរំពឹងថានឹងមានការបោះពុម្ពកម្រិតមធ្យមចំនួន 7 ឬ 8 មុនពេលការបោះពុម្ពចុងក្រោយនៃ R7RS-large ត្រូវបានចេញផ្សាយ ហើយ នៅពេលនេះការបោះពុម្ពលើកទី 2 (Tangerine) កំពុងត្រូវបានពិចារណា ដែលមានបំណងរៀបចំរចនាសម្ព័ន្ធទិន្នន័យ ការប្រមូល និងលេខជាផ្លូវការ និងការបោះពុម្ពលើកទី 3 សំដៅលើមុខងារថ្មីៗ។

អ្នកឯកទេសដែលមានចំណាប់អារម្មណ៍ត្រូវបានអញ្ជើញឱ្យសិក្សាសម្ភារៈពិភាក្សា និងបោះឆ្នោតតាមទស្សនៈផ្ទាល់ខ្លួនរបស់ពួកគេអំពីបញ្ហានេះ ដោយបានណែនាំខ្លួនជាមុននៅក្នុង [អ៊ីមែលការពារ]

  • បណ្ណាល័យខ្សែអក្សរ
  • Associative Arrays
  • កន្សោមធម្មតា។
  • ម៉ាស៊ីនភ្លើង / ថ្ម
  • ប្រតិបត្តិការចំនួនគត់
  • ប្រតិបត្តិការប៊ីត
  • ប្រតិបត្តិការគណិតវិទ្យាជាមួយចំណុចជួសជុល
  • ប្រតិបត្តិការគណិតវិទ្យាជាមួយចំណុចអណ្តែត
  • វ៉ិចទ័រប៊ីត
  • វ៉ិចទ័រដូចគ្នា។
  • ការធ្វើទ្រង់ទ្រាយ
  • លេខធំ
  • ប្រភាគ
  • លេខពិតប្រាកដ

សំណួរដែលត្រូវដោះស្រាយនៅក្នុងការបោះពុម្ពលើកទីបី៖

  • លេខចៃដន្យ
  • លេខបឋម
  • សំណុំចំនួនគត់
  • ស្ថិតិតាមការសម្រេចចិត្ត
  • ជួរ
  • វ៉ិចទ័រប៊ីត
  • ខ្សែអក្សរបៃ
  • ការផ្ទេរប្រាក់
  • Combinatorics និងការផ្លាស់ប្តូរ

អនាមិក (11/28/2018 11:36:26 PM)

MIT/GNU Scheme គឺជាការអនុវត្តភាសា គ្រោងការណ៍សរសេរកម្មវិធីដែលផ្តល់នូវអ្នកបកប្រែ អ្នកចងក្រង កម្មវិធីបំបាត់កំហុសប្រភពកូដ កម្មវិធីនិពន្ធដូច Emacs ដែលភ្ជាប់មកជាមួយ និងបណ្ណាល័យពេលដំណើរការដ៏ធំមួយ។ MIT/GNU Scheme ត្រូវបានកែសម្រួលសម្រាប់ការសរសេរកម្មវិធី កម្មវិធីធំជាមួយនឹងវដ្តនៃការអភិវឌ្ឍន៍លឿន។

ការផ្លាស់ប្តូរ៖

  • សន្និបាតសម្រាប់ វីនដូច្រើនទៀតមិនត្រូវបានចែកចាយទេ ដោយសារការស្ថាបនា 32-bit ដែលមានស្រាប់គឺប្រើប្រាស់តិចតួចសម្រាប់ប្រព័ន្ធទំនើប ហើយការសម្រេចបាននូវមុខងារ 64-bit ទាមទារការខិតខំប្រឹងប្រែងយ៉ាងច្រើន ដែលមិនមានអ្នកថែទាំបច្ចុប្បន្នចាប់អារម្មណ៍នោះទេ។
  • ឥឡូវនេះ macOS អាចប្រើបានតែក្នុង 64-bit builds ប៉ុណ្ណោះ ដោយសារការគាំទ្រសម្រាប់ build 32-bit ត្រូវបានបដិសេធនៅក្នុងការចេញផ្សាយឧបករណ៍ថ្មីៗ។
  • កំណែ C ចល័តមិនត្រូវបានរួមបញ្ចូលនៅក្នុងការចេញផ្សាយនេះទេព្រោះវាមិនអាចជួសជុលទាន់ពេល។
  • មានការកែលម្អតូចៗជាច្រើនដែលបានគ្រោងទុកសម្រាប់ការចេញផ្សាយលើកក្រោយ។ អាទិភាពទីមួយសម្រាប់ការចេញផ្សាយនេះគឺការច្នៃប្រឌិត។

ការច្នៃប្រឌិតសំខាន់ៗ៖

ការផ្លាស់ប្តូរច្រើនទៀត៖

  • ការគាំទ្រ SMP ដំបូង;
  • ការជូនដំណឹងអំពីអ្នកប្រមូលសំរាម;
  • ព្រឹត្តិការណ៍ខ្សែស្រឡាយ;
  • ការបង្កើតថ្មី និងការជួសជុលតូចៗជាច្រើនទៀត។

ការផ្លាស់ប្តូរមិនត្រូវគ្នា៖

មុខងារថ្មីៗសាកល្បង៖

  • ប្រភេទ URI មានវាក្យសម្ព័ន្ធថ្មី៖ #<...>. ទាំងអ្នកអាន និងអ្នកនិពន្ធធ្វើការជាមួយវាក្យសម្ព័ន្ធនេះ។

GNU Guile 2.9.1 (បែតា)

Guile គឺជាការអនុវត្តភាសាកម្មវិធី GNU Scheme គាំទ្រ SRFIs ជាច្រើន ការអនុវត្តស្តង់ដារ R5RS ការផ្តល់ប្រព័ន្ធម៉ូឌុល ការចូលប្រើប្រាស់ពេញលេញទៅកាន់ ការហៅតាមប្រព័ន្ធ POSIX ការគាំទ្រសម្រាប់បណ្តាញ ខ្សែស្រលាយ ការចងថាមវន្ត ការហៅមុខងារខាងក្រៅ និងការដំណើរការខ្សែដ៏មានអានុភាព។ Guile អាចបកស្រាយកូដអន្តរកម្ម និងចងក្រងវាទៅជា bytecode ម៉ាស៊ីននិម្មិតហើយថែមទាំងត្រូវបានភ្ជាប់ដោយបណ្ណាល័យជាអ្នកបកប្រែដែលបានបង្កើតឡើងនៅក្នុងកម្មវិធី។

2.9.1 គឺជាការចេញផ្សាយបេតាដំបូងនៃសាខាដែលរៀបចំសម្រាប់ការចេញផ្សាយស្ថិរភាព 3.0 ។ បើប្រៀបធៀបទៅនឹងសាខាដែលមានស្ថេរភាពបច្ចុប្បន្ន (2.2.x) វាបន្ថែមការចងក្រង JIT ដែលបង្កើនល្បឿនកម្មវិធី Guile ទាំងអស់រហូតដល់ 4 ដង។ នៅក្នុងការចេញផ្សាយនេះ JIT ត្រូវបានគាំទ្រនៅលើ x86-64 តែប៉ុណ្ណោះ។ ការចេញផ្សាយនាពេលអនាគតមានគម្រោងគាំទ្រគ្រប់វេទិកាទាំងអស់ដែលគាំទ្រដោយ GNU lightning ។

GNU Guile-CV 0.2.0

Guile-CV គឺជាបណ្ណាល័យ ចក្ខុវិស័យកុំព្យូទ័រសម្រាប់ភាសាសរសេរកម្មវិធី GNU Guile ដែលជាការចងភ្ជាប់ជាមួយបណ្ណាល័យ Vigra ដែលសរសេរក្នុង C++ ហើយដំណើរការតាមរយៈស្រទាប់ Vigra C Guile គឺជាការអនុវត្តភាសា Scheme ដែលជាគ្រាមភាសារបស់ Lisp ។

ភាសាសរសេរកម្មវិធី Racket 7.0 ត្រូវបានចេញផ្សាយ

GNU Guile-CV 0.1.9

Guile-CV គឺជាបណ្ណាល័យចក្ខុវិស័យកុំព្យូទ័រសម្រាប់ភាសាសរសេរកម្មវិធី GNU Guile ដែលជាការចងភ្ជាប់ទៅនឹងបណ្ណាល័យ Vigra ដែលសរសេរក្នុង C++ ហើយដំណើរការតាមរយៈស្រទាប់ Vigra C Guile គឺជាការអនុវត្តនៃភាសា Scheme ដែលជាគ្រាមភាសារបស់ Lisp ។

ការផ្លាស់ប្តូរចាប់តាំងពីកំណែ 0.1.8:

  • បានធ្វើបច្ចុប្បន្នភាពភាពអាស្រ័យ។ភាពឆបគ្នាឥឡូវនេះត្រូវបានគាំទ្រជាមួយ Vigra C ពី commit a2ff675f4 និងខ្ពស់ជាងនេះ ដោយសារតែការផ្លាស់ប្តូរនៅក្នុងខែមករានៃឆ្នាំនេះ៖ អាគុយម៉ង់នៅក្នុងចំណុចប្រទាក់ vigra_nonlocalmean_c ត្រូវបានប្តូរឈ្មោះ អាគុយម៉ង់យុទ្ធសាស្ត្រក្រៅព្រំដែនត្រូវបានបន្ថែមទៅមុខងារ vigra_medianfilter_c ។
  • ចំណុចប្រទាក់ថ្មី៖ im-median-filter, im-median-filter-channel, im-nl-means, im-nl-means-channel ។
  • ការកែតម្រូវ៖នៅក្នុងម៉ូឌុល (cv support latex) ដោយប្រើ latex-pdftoppm - នីតិវិធីដែលមិនមានឯកសារ ប៉ុន្តែមានប្រយោជន៍ខ្លាំងណាស់សម្រាប់ការរៀបចំអត្ថបទសម្រាប់បន្ថែមទៅរូបភាព - អាគុយម៉ង់ស្រេចចិត្តជាមួយពាក្យគន្លឹះ [#:res 72] មិនត្រូវបានប្រើប្រាស់ជាក់ស្តែងទេ ឥឡូវនេះវាត្រូវបានជួសជុលហើយ។

ចេញមក កំណែថ្មី។ 0.2.3 នៃក្របខ័ណ្ឌបណ្តាញ GNU Artanis ជាភាសាគ្រោងការណ៍

ក្របខ័ណ្ឌនេះត្រូវបានសរសេរនៅក្នុងការអនុវត្តនៃភាសាគ្រោងការណ៍ - Guile Scheme និងត្រូវបានបម្រុងទុកសម្រាប់ការបង្កើតគេហទំព័រថាមវន្ត កម្មវិធីគេហទំព័រ សេវាកម្មគេហទំព័រ និងធនធានគេហទំព័រ។

ក្របខណ្ឌនេះក៏ផ្តល់ឧបករណ៍សម្រាប់ធ្វើការជាមួយមូលដ្ឋានទិន្នន័យ គំរូ វគ្គ ឃ្លាំងសម្ងាត់ ការគូសផែនទី URL សម្រាប់ RESTful ជាដើម។

ឈ្មោះ Artanis ខ្លួនវាមកពីការបញ្ច្រាសនៃ Sinatra ដែលជាក្របខ័ណ្ឌគេហទំព័រ Ruby ។

Artanis គឺស្រដៀងនឹង web frameworks ដូចជា Ruby Sinatra, Python Flask និង Java Spark ។

ឈ្មោះរបស់អ្នកអភិវឌ្ឍន៍សំខាន់គឺ Nala Ginrut ជាថ្មីម្តងទៀតពីការបញ្ច្រាសរបស់ Alan Turing ។

Guile-Ncurses 2.0

ការចេញផ្សាយនៃ guile-ncurses 2.0 បានកើតឡើង - បណ្ណាល័យសម្រាប់បង្កើតចំណុចប្រទាក់អ្នកប្រើអត្ថបទនៅលើ GNU Guile ដោយអនុវត្តគ្រោងការណ៍ភាសាសរសេរកម្មវិធីមុខងារ។ guile-ncurses គឺជាកញ្ចប់សម្រាប់បណ្ណាល័យ Ncurses ។

GNU Guile 2.0.10 បានចេញផ្សាយ

GNU Guile គឺជាគម្រោងមួយដើម្បីអភិវឌ្ឍការអនុវត្តដោយឥតគិតថ្លៃនៃភាសាកម្មវិធីមុខងារ Scheme ដែលគាំទ្រសមត្ថភាពក្នុងការបង្កប់កូដនៅក្នុងកម្មវិធីនៅក្នុងភាសាសរសេរកម្មវិធីផ្សេងទៀត។

ការចេញផ្សាយនេះមាន 253 ប្រព្រឹត្តពីមនុស្ស 11 នាក់ដែលត្រូវបានអនុម័តក្នុងរយៈពេល 11 ខែ។

បន្ថែមពីលើការកែកំហុសជាច្រើន ការចេញផ្សាយនេះមានលក្ខណៈពិសេសថ្មីៗ ដូចជាការអនុវត្តបណ្ណាល័យវ៉ិចទ័រ SRFI-43 និង API តេស្ត SRFI-64 ការគាំទ្រផ្នែកខ្លះសម្រាប់ស្តង់ដារភាសា Scheme R7RS ថ្មី និងផ្នែកបន្ថែម GDB សម្រាប់ការកែកំហុស Guile ។

ការបកប្រែសៀវភៅ "Lisp in Small Pieces" ដែលបានបោះពុម្ពផ្សាយ

នេះគឺជាសៀវភៅដ៏ល្បីល្បាញដោយ Christian Kennek ដែលពិនិត្យមើលអត្ថន័យនៃ Lisp និងមូលដ្ឋានគ្រឹះនៃការអនុវត្តរបស់វាដោយប្រើគ្រាមភាសាគ្រោងការណ៍ជាឧទាហរណ៍មួយ។ នៅក្នុងដំណើរការនៃការនិទានកថា ទិដ្ឋភាពជាច្រើននៃអត្ថន័យនៃភាសាត្រូវបានវិភាគ ដោយចាប់ផ្តើមពីការប្រែប្រួលផ្សេងៗនៃបរិស្ថាន ដោយឆ្លងកាត់ការបន្ត និងការលើកលែង ដោយបញ្ចប់ដោយការឆ្លុះបញ្ចាំង ខ្លឹមសារនៃម៉ាក្រូ ឧបករណ៍ចងក្រង C និងប្រព័ន្ធវត្ថុ។

សៀវភៅនេះមានអ្នកបកប្រែចំនួន 11 នាក់ អ្នកចងក្រងចំនួន 2 នាក់ លំហាត់ជាច្រើននៅក្នុងជំពូកនីមួយៗ សម្ភារៈគួរឱ្យចាប់អារម្មណ៍ជាច្រើនអំពីប្រវត្តិរបស់ Lisp និងហេតុផលសម្រាប់ការសម្រេចចិត្តជាក់លាក់ក្នុងការរចនាភាសា ការនិយាយមួយចំនួនទៅកាន់ ភាសាទំនើបការសរសេរកម្មវិធី ក៏ដូចជាឈុតខ្លីៗនៃអក្សរសិល្ប៍បន្ថែម។

មិនមានវិវរណៈទេ ការបង្កើនប្រសិទ្ធភាពដ៏មានប្រសិទ្ធភាពមិនគួរឱ្យជឿ ប្រព័ន្ធដ៏មានឥទ្ធិពលប្រភេទ និងលក្ខណៈផ្សេងទៀតនៃវិទ្យាសាស្ត្រកុំព្យូទ័រទំនើប (សៀវភៅនេះមានអាយុ 20 ឆ្នាំបន្ទាប់ពីទាំងអស់) ប៉ុន្តែមានការណែនាំដ៏រឹងមាំដ៏ល្អមួយចំពោះការអនុវត្តភាសាសរសេរកម្មវិធី ដែលត្រូវបានរចនាឡើងសម្រាប់អ្នកចាប់ផ្តើមដំបូងដែលចាប់អារម្មណ៍ ណែនាំពួកគេអំពីគោលគំនិត និងបច្ចេកទេសជាមូលដ្ឋាននៃបញ្ហានេះ។ ដូច្នេះការកសាងគ្រឹះសម្រាប់ការអភិវឌ្ឍន៍បន្ថែមទៀត។

ថ្ងៃនេះ ២២ មករា ២០១៣ បានកើតឡើង ការចេញផ្សាយថ្មី។អ្នកបកប្រែដែលត្រូវបានគេស្គាល់យ៉ាងទូលំទូលាយនៃភាសាសរសេរកម្មវិធី Scheme ក្នុងរង្វង់តូចចង្អៀតគឺ Scheme48 ដែលជាអ្នកអភិវឌ្ឍន៍ដែលជាសមាជិកសំខាន់ម្នាក់នៃគណៈកម្មាធិការដឹកនាំគ្រោងការណ៍គឺ Jonathan Reese ។ ការចេញផ្សាយនេះគឺលេខ 1.9 ហើយត្រូវបានទន្ទឹងរង់ចាំជាយូរមកហើយ ចាប់តាំងពីអ្នកបកប្រែមិនត្រូវបានអាប់ដេតអស់រយៈពេលជាយូរមកហើយ។

ការបន្ថែមសំខាន់ៗគឺ៖

  • យន្តការ FFI ថ្មីមួយត្រូវបានបន្ថែម ( យន្តការចាស់នៅតែមាន ទោះជាយ៉ាងណា វានឹងត្រូវបានយកចេញក្នុងពេលឆាប់ៗនេះ ) ។
  • បានបន្ថែមសំណុំនៃមុខងារសម្រាប់ការគាំទ្របណ្តាញ (ជាមួយនឹងការគាំទ្រពេញលេញសម្រាប់ IPv6 និង UDP ដែលមិនទាន់ត្រូវបានចងក្រងជាឯកសារ);
  • កំណត់ត្រាឥឡូវនេះគាំទ្រមរតក (មានតាមរយៈកញ្ចប់ r6rs-records);
  • បន្ថែម letrec *;
  • ឥឡូវនេះ អ្នកបកប្រែព្រមានអំពីភាពអាស្រ័យវដ្ត និងការបដិសេធនៅក្នុងម៉ូឌុល។
  • បន្ថែមទម្រង់ស្ថិតិ;
  • ប្រសិនបើអ្នកបកប្រែ VM ត្រូវបានចងក្រងជាមួយនឹងកម្មវិធីចងក្រងដែលគាំទ្រ GNU C នោះលេខកូដខ្សែផ្ទាល់ត្រូវបានប្រើដែលបង្កើនល្បឿនការប្រតិបត្តិ។
  • ការបន្ថែមផ្សេងទៀតទាក់ទងនឹងការគាំទ្រសម្រាប់សមត្ថភាព R6RS ប្រព័ន្ធសាងសង់ និងអាជ្ញាប័ណ្ណ (សូមមើលតំណ "ព័ត៌មានលម្អិត")។

បញ្ជីនៃការផ្លាស់ប្តូរសំខាន់បំផុត៖

  • ឧបករណ៍ប្រមូលសំរាមផ្ទាល់ខ្លួនរបស់ BIBOP GC ត្រូវបានដំណើរការឡើងវិញ ហើយឥឡូវនេះត្រូវបានប្រើប្រាស់តាមលំនាំដើម។
  • ការអនុវត្តច្បាប់វាក្យសម្ព័ន្ធត្រូវបានសរសេរឡើងវិញ។
  • ការផ្លាស់ប្តូរផ្សេងទៀតទាក់ទងនឹងប្រព័ន្ធសាងសង់ អាជ្ញាប័ណ្ណ និងការគាំទ្រ POSIX (សូមមើលតំណ "ព័ត៌មានលម្អិត") ។

កំណែថ្មីនៃការអនុវត្តភាសាគ្រោងការណ៍ត្រូវបានចេញផ្សាយ - GNU Guile 2.0.7 ។ ទោះបីជាមានការផ្លាស់ប្តូរបន្តិចបន្តួចនៅក្នុងលេខកំណែក៏ដោយ ការច្នៃប្រឌិតគួរឱ្យចាប់អារម្មណ៍ជាច្រើនបានលេចចេញមក ពោលគឺ៖

  • ការគាំទ្រពេញលេញសម្រាប់កន្សោម infix (curly-infix-expressions) ។ ឥឡូវនេះជំនួសឱ្យ (* a (+ b c)) អ្នកអាចសរសេរ (a * (b + c)) ។
  • គាំទ្រជម្រើសអានផ្សេងគ្នាសម្រាប់ច្រកផ្សេងគ្នា។
  • ការ​គាំទ្រ​សម្រាប់​ការ​ណែនាំ​នា​ពេល​អនាគត​ដែល​បាន​បង្កប់​។
  • វាក្យសម្ព័ន្ធពិសេសសម្រាប់ការបន្ថែមផ្លូវទៅកាន់អថេរបរិស្ថាន GUILE_LOAD_PATH និង GUILE_LOAD_COMPILED_PATH នៅចុងបញ្ចប់នៃបញ្ជីផ្លូវជាជាងនៅដើម។
  • បានជួសជុលកំហុសនៅក្នុងមុខងារផ្ទុកក្នុងបរិវេណដែលមិនបានស្កេនថតដែលបានកំណត់នៅក្នុងអថេរ %load-compiled-path។
  • លំដាប់ស្វែងរកផ្នែកបន្ថែមថេរ។ Guile ឥឡូវនេះមិនផ្លាស់ប្តូរអថេរបរិស្ថាន LD_LIBRARY_PATH សម្រាប់ការនេះទេ។
  • មុខងារ make-vtable-vtable ត្រូវបានបដិសេធ វាត្រូវបានណែនាំឱ្យប្រើ make-vtable និង .
  • តើការហៅទូរសព្ទស្មើគ្នាត្រូវបានធ្វើឱ្យប្រសើរទេ? និង eqv? សម្រាប់ករណីនៅពេលដែលអាគុយម៉ង់មួយក្នុងចំណោមអាគុយម៉ង់គឺថេរ។
  • ការព្រមានអ្នកចងក្រងថ្មី -Wduplicate-case-datum និង -Wbad-case-datum ។
  • ការកែលម្អតិចតួចជាច្រើន និងការកែកំហុស។

GNU Guix - អ្នកគ្រប់គ្រងថ្មី។កញ្ចប់ពីក្រុម GNU

Ludovic Courtès ដែលជាអ្នករួមចំណែកគម្រោង GNU ម្នាក់បានប្រកាសពីការចេញផ្សាយកំណែអាល់ហ្វាដំបូងនៃកម្មវិធីគ្រប់គ្រងកញ្ចប់ថ្មីសម្រាប់ការចែកចាយ GNU/Linux ទាំងអស់ - GNU Guix ដោយផ្អែកលើកម្មវិធីគ្រប់គ្រងកញ្ចប់ Nix ។

លើកលែងតែ លក្ខណៈស្តង់ដារការដំឡើង ការលុប និងអាប់ដេតកម្មវិធី GNU Guix នឹងគាំទ្រការអាប់ដេតប្រតិបត្តិការជាមួយនឹងសមត្ថភាពក្នុងការវិលត្រលប់ទៅកំណែមុន ដំណើរការដោយគ្មានសិទ្ធិជា root មានទម្រង់កំណត់រចនាសម្ព័ន្ធដាច់ដោយឡែកសម្រាប់អ្នកប្រើប្រាស់ម្នាក់ៗ និងរួមបញ្ចូលអ្នកប្រមូលសំរាម (ដើម្បីតាមដាន និងព្រងើយកន្តើយ។ កញ្ចប់កាលបរិច្ឆេទ) ។ ប៉ុន្តែលក្ខណៈពិសេសសំខាន់បំផុតរបស់ GNU Guix គឺថាវាត្រូវបានបង្កើតឡើងនៅក្នុងគ្រោងការណ៍ភាសាមុខងារ។

អ្នកអាចទទួលបានកូដប្រភពតាមរយៈឃ្លាំង Git ។

កំណែ 5.2 នៃភាសាសរសេរកម្មវិធី Racket (ពីមុន PLT Scheme) ត្រូវបានណែនាំ។

ថ្មីនៅក្នុងកំណែនេះ៖

  • បណ្ណាល័យ 'db' ថ្មីផ្តល់នូវចំណុចប្រទាក់កម្រិតខ្ពស់ដល់ RDBMSs ដ៏ពេញនិយម៖ MySQL, SQLite, PostgreSQL ក៏ដូចជាកម្មវិធីផ្សេងទៀតតាមរយៈ ODBC ។
  • ការប្រមូល XREPL ថ្មីដែលផ្តល់នូវពាក្យបញ្ជាគាំទ្រសម្រាប់ Racket read-execute-print loop (REPL) ។ វានឹងមានប្រយោជន៍សម្រាប់អ្នកដែលប្រើកំណែកុងសូលរបស់ Racket និងកម្មវិធីកែសម្រួលជំនួស។
  • ការប្រមូល 'គ្រោង' ត្រូវបានសរសេរឡើងវិញនៅក្នុង Racket ដើម្បីគាំទ្រលទ្ធផល PDF អ័ក្សលោការីត អ៊ីស្តូក្រាម និងច្រើនទៀត។
  • DrRacket ប្រើផ្លូវកាត់ក្តារចុចប្រពៃណី៖ C-t បង្កើត ផ្ទាំងថ្មី។, C-w បិទផ្ទាំង C-r ប្រតិបត្តិនិយមន័យ។
  • រ៉ាកែតដែលបានវាយបញ្ចូល៖
    • Typed Racket ផ្តល់នូវឧបករណ៍សម្រាប់ការបំបាត់កំហុសដំណើរការឋិតិវន្ត៖ វាបង្ហាញថាលេខកូដណាមួយនឹងត្រូវបានធ្វើឱ្យប្រសើរ និងមួយណានឹងមិន។
    • ប្រភេទវិចារណញាណបន្ថែមទៀតនៅក្នុងលទ្ធផល REPL និងសារកំហុស។
    • គាំទ្រការកំណត់មុខងារជាមួយនឹងអាគុយម៉ង់ស្រេចចិត្តដោយប្រើវាក្យសម្ព័ន្ធដូចគ្នានឹងរ៉ាកែត។
  • ដោះស្រាយបញ្ហាជាច្រើនជាមួយ ចំណុចប្រទាក់ក្រាហ្វិករួមទាំង Ubuntu 11.10 (GTK+3) និង 64-bit Mac OS X ។
  • និយមន័យខាងក្នុងឥឡូវនេះមានពាក្យថា `let*" ប្រសិនបើពួកវាមិនមាន តំណភ្ជាប់ខាងក្រោយនេះលុបបំបាត់ការពិន័យលើការអនុវត្តនៃការប្រើប្រាស់និយមន័យខាងក្នុងជំនួសឱ្យ 'អនុញ្ញាតឱ្យ' និងផ្លាស់ប្តូរអត្ថន័យនៃកម្មវិធីដែលចាប់យកការបន្តនៅក្នុងនិយមន័យខាងក្នុង ការប្រើប្រាស់និយមន័យខាងក្នុងត្រូវបានចាត់ទុកថាជារចនាប័ទ្មដែលពេញចិត្ត។

ស្តង់ដារនេះគឺជាការកែប្រែតិចតួចនៃស្តង់ដារ R5RS ដោយបន្ថែមលក្ខណៈពេញនិយមបំផុតនៃភាសា ប៉ុន្តែការស្វែងរកដើម្បីរក្សារចនាសម្ព័ន្ធទាំងមូលមិនផ្លាស់ប្តូរ។ នៅក្នុងស្មារតីនៃស្តង់ដារពីមុន ស្ថានភាពជាច្រើនត្រូវបានទុកអោយអ្នកនិពន្ធនៃការអនុវត្តភាសា Scheme ដោយទុកកន្លែងសម្រាប់ការពិសោធន៍ជាមួយនឹងផ្នែកបន្ថែមផ្ទាល់ខ្លួនរបស់ពួកគេ។

ភាសា Scheme ជាប្រពៃណីមានការគាំទ្រដ៏ល្អសម្រាប់ Emacs ។ ការ​គាំទ្រ​នេះ​ត្រូវ​បាន​ផ្តល់​ដោយ​សំណុំ​នៃ​កញ្ចប់​ដែល​អាច​ធ្វើ​ការ​ជាមួយ​នឹង​ការ​អនុវត្ត​បំពាន​ទាំង​ពីរ​នៃ​ភាសា​នេះ ( របៀបគ្រោងការណ៍, cmuscheme, ខ្លែងហើរ) និងគាំទ្រតែការអនុវត្តជាក់លាក់ ( xscheme, gds, របៀបសត្វឃ្មុំ, ល្បែងស៊ីសង) ជាធម្មតា ការគាំទ្រជាក់លាក់នៃការអនុវត្តគឺមានលក្ខណៈទូលំទូលាយជាងកញ្ចប់ដែលគាំទ្រការអនុវត្តទាំងអស់។

អត្ថបទនេះព្យាយាមគ្របដណ្តប់បញ្ហាទាំងអស់នៃការគាំទ្រការសរសេរកម្មវិធីនៅក្នុងគ្រោងការណ៍ ហើយដំបូងនិយាយអំពីអ្វីដែលទូទៅសម្រាប់ការអនុវត្តទាំងអស់ ហើយមានតែបន្ទាប់មកពិចារណាកញ្ចប់ដែលអនុវត្តការគាំទ្រសម្រាប់កំណែជាក់លាក់នៃភាសា។

របៀបគ្រោងការណ៍

របៀបគ្រោងការណ៍ផ្គត់ផ្គង់ជាមួយការចែកចាយ Emacs គឺជាការកែប្រែ របៀប lisspសម្រាប់ធ្វើការជាមួយកូដប្រភពនៅក្នុងភាសាគ្រោងការណ៍។ កញ្ចប់នេះអនុវត្តមុខងារដូចខាងក្រោមៈ

  • ការបន្លិចវាក្យសម្ព័ន្ធ
  • ការចូលបន្ទាត់
  • ការបន្លិចតង្កៀបជាគូ

នៅមូលដ្ឋាន របៀបគ្រោងការណ៍កញ្ចប់ជាច្រើនផ្សេងទៀតត្រូវបានបង្កើត - និងផ្សេងទៀតដែលពង្រីកមុខងាររបស់វាដោយបន្ថែមមុខងារសម្រាប់ប្រតិបត្តិកូដដោយផ្ទាល់ពីសតិបណ្ដោះអាសន្ន Emacs ។ល។ វត្ថុ។

របៀបនេះត្រូវបានបើកដោយស្វ័យប្រវត្តិសម្រាប់ឯកសារដែលប្រើ ផ្នែកបន្ថែមស្តង់ដារសម្រាប់ឯកសារជាមួយ អត្ថបទប្រភពនៅលើគ្រោងការណ៍ - .scm, .ss ។ល។ ដើម្បីបើក របៀបនេះ។សម្រាប់ឯកសារផ្សេងទៀត បន្ថែមកូដខាងក្រោមទៅឯកសារចាប់ផ្តើមរបស់អ្នក (ជំនួស .scm ជាមួយផ្នែកបន្ថែមដែលចង់បាន)៖

(add-to-list "auto-mode-alist"("\\.scm$" . scheme-mode))

ប្រសិនបើអ្នកចង់ផ្លាស់ប្តូរឥរិយាបថរបស់កញ្ចប់ អ្នកអាចបញ្ជាក់ប៉ារ៉ាម៉ែត្រនៅក្នុងមុខងារដែលនៅពេលបន្ថែមទៅអថេរ scheme-mode-hook នឹងត្រូវបានហៅនៅពេលដែលរបៀបត្រូវបានបើកនៅក្នុងសតិបណ្ដោះអាសន្នជាក់លាក់មួយ។ លើសពីនេះទៀតប៉ារ៉ាម៉ែត្រមួយចំនួនអាចត្រូវបានកំណត់តាមរយៈឧបករណ៍កំណត់រចនាសម្ព័ន្ធស្តង់ដារ។ ក្រុមកំណត់ដែលត្រូវគ្នាត្រូវបានគេហៅថាគ្រោងការណ៍។

Cmuscheme

ថង់ផ្លាស្ទិច cmuschemeត្រូវបានសរសេរដោយ Olin Shivers ជាច្រើនឆ្នាំមុន ប៉ុន្តែនៅតែជាកញ្ចប់ Scheme ដ៏សំខាន់មួយ។ កញ្ចប់នេះអនុវត្តការងារអន្តរកម្មជាមួយអ្នកបកប្រែភាសាគ្រោងការណ៍។ អន្តរកម្មជាមួយអ្នកបកប្រែត្រូវបានដឹងតាមរយៈការប្រើប្រាស់សមត្ថភាពកញ្ចប់ មករួមបញ្ចូលជាមួយ Emacs ។

ការរៀបចំកញ្ចប់

ការដំឡើងកញ្ចប់គឺសាមញ្ញណាស់ - ដាក់កូដខាងក្រោមនៅក្នុងឯកសារចាប់ផ្តើមរបស់អ្នក។

(ផ្ទុកដោយស្វ័យប្រវត្តិ "គ្រោងការណ៍ដំណើរការ "cmuscheme" "ដំណើរការគ្រោងការណ៍ទាបជាង" t) (setq scheme-program-name "mzscheme")

ហើយកញ្ចប់នឹងត្រូវបានផ្ទុកដោយស្វ័យប្រវត្តិនៅពេលដែលអ្នកដំណើរការមុខងារ run-scheme ដំបូង។ បន្ទាត់ទីពីរក្នុងឧទាហរណ៍នេះត្រូវបានប្រើដើម្បីបញ្ជាក់ឈ្មោះរបស់អ្នកបកប្រែគ្រោងការណ៍ ដែលអ្នកអាចជំនួសដោយគ្រាមភាសាដែលអ្នកចូលចិត្ត។ ការកំណត់ទាំងអស់សម្រាប់កញ្ចប់នេះក៏មានសម្រាប់ការកំណត់រចនាសម្ព័ន្ធអន្តរកម្មតាមរយៈក្រុមកំណត់រចនាសម្ព័ន្ធ cmuscheme ។

សតិបណ្ដោះអាសន្នអ្នកបកប្រែដែលបង្កើតដោយកញ្ចប់ប្រើរបៀបពិសេសមួយ - inferior-scheme-mode ដែលអាចកំណត់រចនាសម្ព័ន្ធដោយប្រើ inferior-scheme-mode-hook ។ លើសពីនេះទៀត ប្រសិនបើឯកសារ ~/.emacs_SCHEMENAME ឬ ~/.emacs.d/init_SCHEMENAME.scm មាន (ដែល SCHEMENAME ជាឈ្មោះរបស់អ្នកបកប្រែ) ពួកគេនឹងត្រូវបានប្រតិបត្តិភ្លាមៗបន្ទាប់ពីអ្នកបកប្រែត្រូវបានផ្ទុក។

ធ្វើការជាមួយកញ្ចប់

មុខងារចម្បងរបស់កញ្ចប់គឺមុខងារ run-scheme ដែលចាប់ផ្តើមកម្មវិធីបកប្រែភាសា Scheme ដែលបានជ្រើសរើស និងអនុញ្ញាតឱ្យដំណើរការកូដអន្តរកម្មដោយមិនចាកចេញពី Emacs។

ជាមួយនេះ អ្នកអាចគ្រប់គ្រងផ្នែកណាមួយនៃកូដ (ប្លុកជាក់លាក់ និយមន័យមុខងារ ឬកន្សោមតែមួយ) នឹងត្រូវបានប្រតិបត្តិដោយប្រើ មុខងារផ្សេងគ្នាកំណត់ដោយកញ្ចប់ - មុខងារកំណត់រចនាសម្ព័ន្ធ - ផ្ញើ - និយមន័យ (បន្សំ គ្រាប់ចុច C-c C-e ឬ C-M-x) បញ្ជូននិយមន័យបច្ចុប្បន្នទៅឱ្យអ្នកបកប្រែដើម្បីប្រតិបត្តិ; មុខងារ scheme-send-region (C-c C-r) អនុញ្ញាតឱ្យអ្នកប្រតិបត្តិបំណែកនៃកូដប្រភពដែលបានជ្រើសរើស។ function scheme-send-last-sexp (C-x C-e) ត្រូវបានប្រើដើម្បីវាយតម្លៃកន្សោមដែលនៅពីមុខទស្សន៍ទ្រនិច។ ហើយមុខងារ scheme-load-file (C-c C-l) អនុញ្ញាតឱ្យអ្នកផ្ទុកឯកសារទាំងមូលទៅក្នុងអ្នកបកប្រែ (វាអនុញ្ញាតឱ្យអ្នកប្រតិបត្តិកូដពីឯកសារណាមួយដែលបញ្ជាក់ដោយអ្នកប្រើប្រាស់ មិនត្រឹមតែពីសតិបណ្ដោះអាសន្នបច្ចុប្បន្នប៉ុណ្ណោះទេ)។

កម្មវិធីបកប្រែគ្រោងការណ៍ដំណើរការនៅក្នុងសតិបណ្ដោះអាសន្នដាច់ដោយឡែកដែលហៅថា *គ្រោងការណ៍* ដែលលទ្ធផលនៃការវាយតម្លៃកន្សោម និងមុខងារក៏ជាលទ្ធផលផងដែរ។ ដើម្បីប្តូរទៅសតិបណ្ដោះអាសន្ននេះយ៉ាងឆាប់រហ័សពីសតិបណ្ដោះអាសន្នអត្ថបទប្រភព មានមុខងារដាច់ដោយឡែកពីគ្នាពីការផ្លាស់ប្តូរទៅគ្រោងការណ៍ (C-c C-z) ។ លើសពីនេះទៀត ដោយសារវាជាញឹកញាប់ចាំបាច់ដើម្បីប្រតិបត្តិកូដ និងមើលលទ្ធផល កញ្ចប់ក៏កំណត់មុខងារពីរដែលផ្ញើកូដទៅអ្នកបកប្រែសម្រាប់ប្រតិបត្តិ ហើយប្តូរទៅ *scheme* buffer - scheme-send-definition-and-go ( C-c M-e) សម្រាប់ការគណនានិយមន័យបច្ចុប្បន្ន និងគ្រោងការណ៍-send-region-and-go (C-c M-r) ដើម្បីវាយតម្លៃកូដប្រភពដែលបានបែងចែក។

ដើម្បីធ្វើការជាមួយម៉ាក្រូ កញ្ចប់ផ្តល់នូវមុខងារ scheme-expand-current-form (C-c C-x) ដែលអនុញ្ញាតឱ្យអ្នកពង្រីកនិយមន័យនៃម៉ាក្រូបច្ចុប្បន្នទៅក្នុងកូដគ្រោងការណ៍ដែលត្រូវគ្នា។ ការពង្រីកកូដត្រូវបានអនុវត្តដោយអ្នកបកប្រែ និងលទ្ធផលទៅកាន់ *គ្រោងការណ៍* buffer។ ហើយនៅពេលធ្វើការជាមួយការអនុវត្តគ្រោងការណ៍ដែលគាំទ្រការចងក្រងកូដប្រភព អ្នកប្រើប្រាស់អាចទាញយកអត្ថប្រយោជន៍ពីមុខងារ scheme-compile-file (C-c C-k) និង scheme-compile-definition (C-c M-c) functions ដែលចងក្រងឯកសារ ឬនិយមន័យបច្ចុប្បន្នរៀងៗខ្លួន។ .

ដូចដែលបានកត់សម្គាល់ខាងលើ មានរបៀបពិសេសមួយនៅក្នុងសតិបណ្ដោះអាសន្នអ្នកបកប្រែ - របៀប inferior-scheme-mode ដែលពាក្យបញ្ជាទាំងអស់នៃរបៀប comint ដំណើរការ ក៏ដូចជាពាក្យបញ្ជាខាងក្រោម។ cmuscheme- scheme-compile-file (C-c C-k), scheme-load-file (C-c C-l), scheme-send-last-sexp (C-x C-e) និង scheme-send-definition (C-M-x)។

ក្អែក

កញ្ចប់ Quack គឺជាផ្នែកបន្ថែមទៅកញ្ចប់ cmuschemeនិងអនុវត្តមុខងារបន្ថែមខាងក្រោម (ភាគច្រើននៃពួកវាទាក់ទងនឹងការធ្វើការជាមួយ PLT Scheme)៖

  • ម៉ឺនុយអនុញ្ញាតឱ្យចូលប្រើឯកសារភាសា អ្នកបកប្រែ និង SRFI ក៏ដូចជាសមត្ថភាពក្នុងការស្វែងរកការពិពណ៌នាអំពីឈ្មោះមុខងារដែលមានទីតាំងនៅទីតាំងទស្សន៍ទ្រនិចបច្ចុប្បន្ន។
  • កញ្ចប់ backlight ថ្មីសម្រាប់ ចាក់សោអក្សរ- សម្រាប់គម្រោង PLT និងពង្រីកសម្រាប់ការអនុវត្តផ្សេងទៀត;
  • លទ្ធភាពនៃការប្រើប្រាស់និមិត្តសញ្ញាក្រិក ឡាំដាដើម្បីសម្គាល់កន្សោម lambda (ឧទាហរណ៍ត្រូវបានផ្តល់ឱ្យខាងក្រោម);
  • ជម្រើសបន្ថែម និងពាក្យបញ្ជាសម្រាប់បញ្ចូលវង់ក្រចកបើក និងបិទត្រឹមត្រូវ។
  • ផ្នែកបន្ថែមសម្រាប់ច្បាប់ចូលបន្ទាត់ ជាមួយនឹងសមត្ថភាពក្នុងការកំណត់រចនាសម្ព័ន្ធសម្រាប់អ្នកបកប្រែគ្រោងការណ៍ផ្សេងៗគ្នា។
  • កំណែបន្ថែមនៃពាក្យបញ្ជា run-scheme ដែលស្គាល់ឈ្មោះពាក្យបញ្ជារបស់អ្នកបកប្រែ Scheme ដ៏ពេញនិយម ហើយក៏ចងចាំកំណែចុងក្រោយរបស់អ្នកបកប្រែដែលបានបើកដំណើរការចុងក្រោយផងដែរ។
  • កំណែបន្ថែមនៃពាក្យបញ្ជា switch-to-scheme;
  • សមត្ថភាពក្នុងការមើលមាតិកានៃការប្រមូល .plt និងពាក្យបញ្ជាដើម្បីបើកសតិបណ្ដោះអាសន្ន ហួសចិត្តសម្រាប់ការប្រមូលដែលចង់បាន។

ការដំឡើងនិងការកំណត់រចនាសម្ព័ន្ធ

កញ្ចប់នេះត្រូវបានសរសេរដោយ Neil Van Dyke ហើយអាចទាញយកបានពីគេហទំព័ររបស់អ្នកនិពន្ធ។ កញ្ចប់ត្រូវបានដំឡើងដោយចម្លងវាទៅថតដែល Emacs អាចស្វែងរកវា ហើយផ្ទុកដោយពាក្យបញ្ជា៖

(ទាមទារ "ក្លែងបន្លំ")

ការកំណត់កញ្ចប់ទាំងអស់អាចត្រូវបានកំណត់រចនាសម្ព័ន្ធដោយប្រើក្រុមការកំណត់ quack ឬដោយប្រើម៉ឺនុយ Quack ។ ការកំណត់ទាំងនេះរួមមានអាសយដ្ឋានសៀវភៅដៃ និង SRFIs ការកំណត់ផ្លូវកាត់ក្តារចុចបុព្វបទដែលប្រើដោយកញ្ចប់។ល។

អ្នកប្រើប្រាស់ PLT Scheme ត្រូវបានណែនាំអោយទាញយកសៀវភៅណែនាំសម្រាប់អ្នកបកប្រែនេះពីគេហទំព័រគម្រោង ហើយដំឡើងវានៅក្នុងបណ្តុំ ឯកសារ. ទីតាំងនៃការប្រមូល PLT Scheme ត្រូវបានកំណត់ដោយអថេរ quack-pltcollect-dirs ដែលអាចរាយបញ្ជីថតទាំងអស់ជាមួយនឹងការប្រមូលការងារ ឬ អថេរបរិស្ថាន PLTHOME និង/ឬ PLTCOLLECTS ។

កញ្ចប់ក៏ទាមទារឱ្យមានវត្តមាននៃកម្មវិធី wget ដែលនឹងត្រូវបានប្រើដើម្បីចូលប្រើ SRFI ។

ធ្វើការជាមួយកញ្ចប់

បន្ទាប់ពីទាញយកកញ្ចប់បន្ថែមលើមុខងារ cmuschemeនិង របៀបគ្រោងការណ៍មុខងារដែលបានកំណត់ដោយកញ្ចប់អាចប្រើប្រាស់បាន។ អ្នកប្រើប្រាស់អាចអនុវត្តមុខងារទាំងនេះដោយប្រើយន្តការស្តង់ដារ (ផ្លូវកាត់ក្តារចុច និង/ឬបើកដំណើរការដោយឈ្មោះមុខងារ) ឬដោយប្រើម៉ឺនុយ Quack ។

អ្នកអាចមើលឯកសារដោយប្រើមុខងារជាច្រើន។ មុខងារ quack-view-manual (C-c C-q m) ត្រូវបានប្រើដើម្បីមើលឯកសារនៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត។ ពាក្យបញ្ជានេះអនុញ្ញាតឱ្យអ្នកមើលឯកសារមូលដ្ឋានទាំងពីរសម្រាប់ភាសាគ្រោងការណ៍ និងឯកសារសម្រាប់ការអនុវត្តជាក់លាក់។ ដើម្បីមើល SRFI ពាក្យបញ្ជាដាច់ដោយឡែកមួយត្រូវបានកំណត់ - quack-view-srfi (C-c C-q s) ដែលស្នើសុំលេខ ឯកសារដែលត្រូវការហើយបើកវានៅក្នុងកម្មវិធីរុករក។ ហើយសម្រាប់អ្នកប្រើប្រាស់ PLT Scheme ពាក្យបញ្ជា quack-view-keyword-docs (C-c C-q k) ក៏មានផងដែរ ដែលបង្ហាញឯកសារសម្រាប់ពាក្យគន្លឹះដែលបានផ្តល់ឱ្យ ( ការងាររបស់ក្រុមនេះអាស្រ័យលើ ការដំឡើងត្រឹមត្រូវ។ឯកសារគ្រោងការណ៍ PLT).

ដូចដែលបានកត់សម្គាល់ខាងលើ កញ្ចប់អនុវត្តមុខងារ run-scheme (C-c C-q r) ដែលអនុញ្ញាតឱ្យអ្នកបើកកម្មវិធីបកប្រែភាសា Scheme ជ្រើសរើសពួកវាពីបញ្ជីដែលគេស្គាល់ (រួមទាំងការបើកដំណើរការជាមួយនឹងជម្រើសចាំបាច់) ហើយចងចាំផងដែរ ជម្រើសចុងក្រោយអ្នកប្រើប្រាស់។

មុខងារងាយស្រួលសម្រាប់ធ្វើការជាមួយបណ្តុំក៏ត្រូវបានកំណត់សម្រាប់អ្នកប្រើប្រាស់ PLT Scheme ផងដែរ។ មុខងារ quack-find-file (C-c C-q f) បើកឯកសារ ដោយប្រើទិន្នន័យពីបរិបទបច្ចុប្បន្ន ដើម្បីទទួលបានឈ្មោះឯកសារ។ ឧទាហរណ៍ ប្រសិនបើអ្នកប្រើមុខងារនេះខណៈពេលដែលទស្សន៍ទ្រនិចស្ថិតនៅលើកូដ (ទាមទារ (lib "list.ss")) នោះអ្នកនឹងត្រូវបានជម្រុញឱ្យបើក file list.ss ពីការប្រមូល mzlib. លើសពីនេះទៀត មុខងារ quack-dired-pltcollect ត្រូវបានកំណត់ ដែលអនុញ្ញាតឱ្យអ្នកបើកសតិបណ្ដោះអាសន្ន។ ហួសចិត្តសម្រាប់ការប្រមូល PLT Scheme ដែលចង់បាន (នៅពេលបញ្ជាក់ឈ្មោះ អ្នកប្រើប្រាស់អាចប្រើការបំពេញដោយស្វ័យប្រវត្តិនៃឈ្មោះបណ្តុំ)។

កញ្ចប់នេះក៏អនុវត្តមុខងារជាច្រើនដែលផ្លាស់ប្តូរទម្រង់កូដ ដែលធ្វើឱ្យវាកាន់តែងាយស្រួលប្រើ។ មុខងារ quack-tidy-buffer (C-c C-q t) ចូល​បន្ទាត់​កូដ​ឡើង​វិញ ជំនួស​ផ្ទាំង​ដោយ​ដកឃ្លា ដក​បន្ទាត់​ទទេ​បន្ថែម លុប​បន្ទាត់​ពីក្រោយ តួអក្សរដកឃ្លាជាជួរ ហើយបន្ថែមបន្ទាត់ថ្មីនៅចុងបញ្ចប់នៃឯកសារ ប្រសិនបើមិនមាន។ មុខងារ quack-toggle-lambda (C-c C-q l) ផ្លាស់ប្តូរការប្រកាសនៃមុខងារបច្ចុប្បន្នពី (define (func args) ...) ទៅ (define func (lambda (args) ..)) ដែលអនុញ្ញាតឱ្យសញ្ញា lambda ទៅ ត្រូវបានបង្ហាញជាកូដ (នៅពេលបើកជម្រើសសម្រាប់បង្ហាញនិមិត្តសញ្ញានេះ)។ ឧទាហរណ៍ដូចនេះ៖

កញ្ចប់ GCA

G.C.A.- កញ្ចប់ដែលត្រូវបានរចនាឡើងដើម្បីដំណើរការប្រកបដោយប្រសិទ្ធភាពជាមួយកូដប្រភពគ្រោងការណ៍។ វាត្រូវបានរចនាឡើងដើម្បីគាំទ្រ Gauche Scheme ប៉ុន្តែអាចប្រើជាមួយគ្រាមភាសាផ្សេងទៀត។ ចូលចិត្ត ខ្លែងហើរ, វាពង្រីកមុខងារនៃកញ្ចប់ cmuscheme.

កញ្ចប់នេះមានមុខងារដូចខាងក្រោមៈ

  • ការបញ្ចូលបំណែកនៃកូដដោយប្រើយន្តការគំរូ
  • បង្ហាញការពិពណ៌នាសម្រាប់មុខងារ
  • ការបន្ថែមឈ្មោះ

កញ្ចប់នេះមានភាពខុសគ្នាផ្នែកស្ថាបត្យកម្មមួយចំនួនពីកញ្ចប់ផ្សេងទៀត - ជំនួសឱ្យអន្តរកម្មជាមួយអ្នកបកប្រែដោយប្រើការបញ្ចូល និងលទ្ធផលស្តង់ដារ កញ្ចប់នេះប្រើពិធីការបណ្តាញសាមញ្ញដើម្បីផ្ទេរទិន្នន័យ។ វិធីសាស្រ្តនេះ។អនុញ្ញាតឱ្យអ្នកអនុវត្ត ច្រើនទៀតភារកិច្ច ប៉ុន្តែអាស្រ័យយ៉ាងខ្លាំងទៅលើការអនុវត្តរបស់អ្នកបកប្រែ និងទាមទារ ដំណើរការដាច់ដោយឡែកគ្រោងការណ៍ (ម៉ាស៊ីនមេ gds) ដែលនឹងត្រូវប្រើដើម្បីធ្វើអន្តរកម្មជាមួយដំណើរការផ្សេងៗ។

ការដំឡើងនិងការកំណត់រចនាសម្ព័ន្ធ

ថង់ផ្លាស្ទិច gdsមកជាមួយ កំណែចុងក្រោយបំផុត។ Guile ដូច្នេះអ្វីដែលអ្នកត្រូវធ្វើគឺបន្ថែមឯកសារប្រភព Emacs Lisp ទៅផ្លូវស្វែងរក Emacs ហើយដាក់វានៅក្នុងឯកសារចាប់ផ្តើម។ បន្ទាត់បន្ទាប់:

(ទាមទារ "gds")

ពាក្យបញ្ជានេះទាញយកកញ្ចប់ ហើយចាប់ផ្តើមដំណើរការដាច់ដោយឡែកដែលនឹងទទួលខុសត្រូវចំពោះអន្តរកម្មជាមួយអ្នកបកប្រែគ្រោងការណ៍។ វាគួរឱ្យកត់សម្គាល់ថាសម្រាប់កញ្ចប់ដំណើរការ កញ្ចប់ដាច់ដោយឡែកសម្រាប់គ្រោងការណ៍ត្រូវតែមានវត្តមាននៅក្នុងផ្លូវស្វែងរក Guile ។ ប្រសិនបើកញ្ចប់ស្ថិតនៅក្នុងទីតាំងមិនស្តង់ដារ អ្នកអាចបញ្ជាក់ទីតាំងរបស់វាដោយប្រើអថេរ gds-scheme-directory បើមិនដូច្នេះទេ ប្រសិនបើកញ្ចប់នេះមិនមានវត្តមាន នោះកញ្ចប់នឹងមិនត្រូវបានផ្ទុកទាំងស្រុងនោះទេ។

ការកំណត់ផ្សេងទៀតអាចត្រូវបានកំណត់ដោយប្រើក្រុមការកំណត់ gds ។

ធ្វើការជាមួយកូដប្រភព

ថង់ផ្លាស្ទិច gdsប្រើផ្លូវកាត់ក្តារចុចដូចគ្នាដើម្បីគណនាលេខកូដ cmuscheme. ករណីលើកលែងគឺអនុគមន៍ gds-eval-expression (C-c C-e) ដែលវាយតម្លៃកន្សោមដែលបានបញ្ចូលក្នុង minibuffer ។

ការបន្ថែមដ៏ល្អមួយបានអនុវត្ត gdsគឺដើម្បីបំពេញមុខងារ និងឈ្មោះអថេរ ក៏ដូចជាទទួលបានជំនួយអំពីនិមិត្តសញ្ញាជាក់លាក់ និង/ឬស្វែងរកនិមិត្តសញ្ញាតាមឈ្មោះ។

ការបំពេញឈ្មោះត្រូវបានធ្វើឡើងដោយអនុគមន៍ gds-complete-symbol (ផ្លូវកាត់ M-TAB) ដែលព្យាយាមស្វែងរកនិមិត្តសញ្ញាដែលគេស្គាល់ទាំងអស់ដែលឈ្មោះរបស់ពួកគេត្រូវគ្នានឹងអក្សរនៅពីមុខទស្សន៍ទ្រនិច។ ប្រសិនបើឈ្មោះមួយត្រូវបានរកឃើញ វាត្រូវបានបញ្ចូលភ្លាមៗ ប៉ុន្តែប្រសិនបើមានជម្រើសជាច្រើន បង្អួចថ្មីនឹងត្រូវបានបង្ហាញ ដែលអ្នកប្រើប្រាស់អាចជ្រើសរើសឈ្មោះដែលចង់បាន។

ការទទួលបានជំនួយសម្រាប់និមិត្តសញ្ញាជាក់លាក់មួយត្រូវបានធ្វើឡើងដោយប្រើមុខងារ gds-help-symbol (C-h g) ដែលបង្កើតលទ្ធផលដូចគ្នានឹងដំណើរការពាក្យបញ្ជា (help SYMBOL) នៅក្នុងបរិយាកាសអន្តរកម្ម Guile ។ ឈ្មោះនិមិត្តសញ្ញាត្រូវបានសួរពីអ្នកប្រើប្រាស់តាមរយៈ minibuffer ប៉ុន្តែតម្លៃលំនាំដើមគឺជាឈ្មោះដែលទស្សន៍ទ្រនិចបើក។ ប្រសិនបើអ្នកមិនចាំឈ្មោះពិតប្រាកដនៃនិមិត្តសញ្ញាទេ អ្នកអាចប្រើមុខងារ gds-apropos (C-h G) ដែលស្រដៀងនឹង execute (apropos REGEXP) នៅក្នុង Guile ហើយដែលបោះពុម្ពបញ្ជីនិមិត្តសញ្ញាដែលឈ្មោះត្រូវគ្នានឹងការបញ្ចូល កន្សោមធម្មតា។

ការបំបាត់កំហុស

ដើម្បីទាញយកប្រយោជន៍ពីឱកាស gdsក្នុងអំឡុងពេលការងារអន្តរកម្ម អ្នកប្រើប្រាស់នៅតែបញ្ជាក់យ៉ាងច្បាស់អំពីម៉ូឌុលដែលនឹងផ្តល់ការងារជាមួយ gds. ឧទាហរណ៍ ការប្រើកូដខាងក្រោមផ្ទុកម៉ូឌុលទាំងអស់ដែលត្រូវការសម្រាប់ប្រតិបត្តិការ៖

(use-modules (ice-9 gds-client debugging traps)) (named-module-use! "(guile-user) "(ice-9 session)) (gds-accept-input #f)

បន្ទាប់ពីនេះអ្នកអាចធ្វើការជាមួយ gds. ដើម្បីកំណត់ចំណុចឈប់នៅក្នុងដំណើរការ proc_name ខាងក្រោមត្រូវបានប្រើ គណនាក្នុងសតិបណ្ដោះអាសន្នកូដប្រភព៖

(ដំឡើង-អន្ទាក់ (ធ្វើ #:behaviour gds-debug-trap #:procedure proc_name))

ហើយបន្ទាប់ពីហៅនីតិវិធីដែលបានបញ្ជាក់ អ្នកនឹងទទួលបាននៅក្នុងសតិបណ្ដោះអាសន្ន gdsអ្វីមួយដូចនេះ៖

ដំណើរការហៅទូរសព្ទ៖ => s s --:** PID XXXXX (Guile-Debug)--All--------

នៅក្នុងបណ្តុំនេះ អ្នកអាចរុករកជង់ មើលស្ថានភាពរបស់វា បន្តការប្រតិបត្តិកម្មវិធី និង/ឬជំហានឆ្លងកាត់វា។ ការងារនៅក្នុងបណ្តុំបណ្ដោះអាសន្នត្រូវបានធានាដោយប្រើពាក្យបញ្ជាមួយចំនួនដែលចងភ្ជាប់ទៅនឹងសោនីមួយៗ។

គ្រាប់ចុចខាងក្រោមអាចត្រូវបានប្រើដើម្បីផ្លាស់ទីតាមរយៈជង់ការហៅមុខងារ៖ u , C-p និងព្រួញឡើងលើត្រូវបានប្រើដើម្បីផ្លាស់ទីឡើងលើជង់ការហៅ ហើយជ្រើសរើសស៊ុមនោះ (មុខងារ gds-up), d, C-n និងព្រួញចុះក្រោមត្រូវបានប្រើដើម្បីផ្លាស់ទីចុះក្រោម។ (gds-down) ហើយគ្រាប់ចុច RET ត្រូវបានប្រើដើម្បីជ្រើសរើសស៊ុមដែលទស្សន៍ទ្រនិចស្ថិតនៅ។

ការជ្រើសរើសស៊ុមជង់ធ្វើឱ្យផ្នែកដែលត្រូវគ្នានៃកូដប្រភពត្រូវបានបង្ហាញ។ លើសពីនេះ មុខងារមួយចំនួនក៏នឹងប្រើបរិស្ថានដែលភ្ជាប់ជាមួយស៊ុមដែលបានជ្រើសរើសនៅពេលប្រតិបត្តិ។

មុខងារបន្ថែមដែលដំណើរការនៅក្នុងបណ្តុំបណ្ដោះអាសន្នរួមមានដូចខាងក្រោម៖

gds-វាយតម្លៃ (e key)អនុញ្ញាតឱ្យអ្នកវាយតម្លៃកន្សោមដោយប្រើបរិស្ថានដែលត្រូវគ្នានឹងស៊ុមដែលបានជ្រើសរើសដោយលទ្ធផលត្រូវបានបង្ហាញនៅក្នុងតំបន់អេកូ។ gds-frame-info(i)បង្ហាញព័ត៌មានអំពីស៊ុមដែលបានជ្រើសរើស - បន្ទាត់ក្នុងឯកសារប្រភព កន្សោមដែលត្រូវគ្នា ប្រភេទស៊ុម។ល។ gds-frame-args(A)បង្ហាញអាគុយម៉ង់ស៊ុមកម្មវិធី; gds-proc-source(S)បង្ហាញកូដប្រភពនៃនីតិវិធីដែលគេហៅថា។ មុខងារនេះមានប្រយោជន៍ខ្លាំងណាស់ក្នុងករណីដែលនីតិវិធីត្រូវបានបង្កើតឡើងដោយកន្សោម lambda អនាមិក ចាប់តាំងពីនីតិវិធីបែបនេះត្រូវបានបង្ហាញនៅក្នុងជង់ការហៅមុខងារជា ដែល​មិន​បញ្ជាក់​ច្បាស់​ថា​នឹង​ត្រូវ​ធ្វើ​អ្វី​បន្ទាប់​ទៀត។

ដើម្បីបន្តដំណើរការកម្មវិធីដែលរំខាន។ gdsឧបករណ៍ប្រើប្រាស់ មុខងារខាងក្រោម:

gds-go (g, c ឬ q)បន្តការប្រតិបត្តិកម្មវិធី; gds-step-file (SPC)ប្រតិបត្តិមុខងារមួយជំហានដែលជាកម្មសិទ្ធិរបស់ឯកសារប្រភពដូចគ្នាជាមួយស៊ុមជង់ដែលបានជ្រើសរើស។ មុខងារពីឯកសារផ្សេងទៀតនឹងត្រូវបានប្រតិបត្តិ ប៉ុន្តែដោយគ្មានការចូលទៅក្នុងពួកវា។ gds-ជំហានចូលទៅក្នុង (i)អនុវត្តជំហានបន្ទាប់។ នេះគឺជាកម្រិតលម្អិតបំផុតនៃការប្រតិបត្តិកម្មវិធី; gds-step-over (o)ប្រតិបត្តិកម្មវិធីរហូតដល់ស៊ុមជង់ដែលបានជ្រើសរើសត្រូវបានបញ្ចប់ការប្រតិបត្តិ។

ដោយប្រើមុខងារទាំងអស់នេះ អ្នកអភិវឌ្ឍន៍អាចទទួលបានព័ត៌មានលម្អិតអំពីស្ថានភាពនៃកម្មវិធី ហើយអាចស្វែងរក និងកែកំហុសបាន។

គ្រោងការណ៍ 48

គ្រោងការណ៍ 48- កញ្ចប់មួយផ្សេងទៀតដោយផ្អែកលើ cmuschemeប៉ុន្តែការផ្តល់ការគាំទ្របន្ថែមសម្រាប់ការអនុវត្ត Scheme48 ។ កញ្ចប់នេះបន្ថែមការគាំទ្រ ចាក់សោអក្សរសម្រាប់ពាក្យគន្លឹះ និងប្រតិបត្តិករជាក់លាក់ Scheme48 និង ការចងបន្ថែមគ្រាប់ចុចសម្រាប់ពាក្យបញ្ជាវាយតម្លៃការបញ្ចេញមតិ។

នីតិវិធីសម្រាប់ការដំឡើងកញ្ចប់នេះគឺស្តង់ដារ - ដាក់ gambit.el នៅកន្លែងដែល Emacs នឹងរកវា ហើយបន្ថែមបន្ទាត់ខាងក្រោមទៅឯកសារចាប់ផ្តើម៖

(ផ្ទុកដោយស្វ័យប្រវត្តិ "gambit-inferior-mode "gambit" "Hook Gambit mode ចូលទៅក្នុង cmuscheme ។") (ផ្ទុកដោយស្វ័យប្រវត្តិ "gambit-mode "gambit" "របៀប Hook Gambit ចូលទៅក្នុងគ្រោងការណ៍។") (add-hook "inferior-scheme-mode-hook (function gambit-inferior-mode)) (add-hook "scheme-mode-hook (function gambit-mode)) (setq scheme-program-name" gsi -: ឃ-")

កម្មវិធីបកប្រែ Gambit ត្រូវបានដាក់ឱ្យដំណើរការដោយប្រើមុខងារ run-scheme ដែលបានអនុវត្តនៅក្នុង cmuscheme, ប៉ុន្តែ ល្បែងស៊ីសងបន្ថែមនីតិវិធីតម្រងលទ្ធផលទៅវា ដែលអនុញ្ញាតឱ្យកញ្ចប់ទទួលបានព័ត៌មានទីតាំងនៅក្នុង ឯកសារប្រភព. បន្ទាប់ពីបើកដំណើរការអ្នកបកប្រែ អ្នកប្រើប្រាស់អាចប្រើផ្លូវកាត់ក្តារចុចស្តង់ដារ ដើម្បីប្រតិបត្តិ និងចងក្រងកូដ - C-x C-e, C-c C-l, C-c C-k ជាដើម។

បន្ថែមពីលើលក្ខណៈពិសេស cmuscheme, ថង់ប្លាស្ទិក ល្បែងស៊ីសងផ្តល់នូវមុខងារជាច្រើនដែលត្រូវបានរចនាឡើងសម្រាប់ការបំបាត់កំហុសប្រភពកូដ៖

gambit-បន្ត (F8 ឬ C-c c)បន្តការប្រតិបត្តិកូដ។ ស្រដៀងនឹងពាក្យបញ្ជា c របស់អ្នកបកប្រែ។ gambit-crawl-backtrace-newer (F9 ឬ C-c])ទៅស៊ុមមុននៅក្នុងខ្សែសង្វាក់។ ស្រដៀងនឹងពាក្យបញ្ជា - អ្នកបកប្រែ; gambit-crawl-backtrace-older (F10 ឬ C-c[)ផ្លាស់ទីទៅស៊ុមបន្ទាប់នៅក្នុងខ្សែសង្វាក់។ ស្រដៀងនឹងពាក្យបញ្ជា + អ្នកបកប្រែ; gambit-step-continuation (F11 ឬ C-c s)អនុវត្ត​ជំហាន​គណនា​មួយ​រួម​បញ្ចូល​ទាំង​ការ​បញ្ចូល​មុខងារ​ដែល​គេ​ហៅ។ ដូចគ្នានេះដែរ ពាក្យបញ្ជាអ្នកបកប្រែ; gambit-leap-continuation (F12 ឬ C-c l)អនុវត្តជំហានគណនាមួយដោយមិនបញ្ចូលមុខងារដែលបានហៅ។ ស្រដៀងនឹងពាក្យបញ្ជាអ្នកបកប្រែ,l; gambit-kill-last-popup (C-c_)លុបបង្អួចដែលត្រូវបានបង្កើតដើម្បីបង្ហាញកន្សោម។

មានផ្លូវកាត់ក្តារចុចខ្លីជាងសម្រាប់ពាក្យបញ្ជាទាំងនេះ៖ M-c , M-[ , M- ] , M-s , M-l និង M-_ ប៉ុន្តែពួកវាមិនត្រូវបានបើកតាមលំនាំដើមទេ ព្រោះវាមិនសូវធ្វើតាមអនុសញ្ញានៃផ្លូវកាត់ក្តារចុចនៅក្នុង Emacs ។ ដើម្បីបើកការប្រើប្រាស់របស់ពួកគេ អ្នកត្រូវដំណើរការពាក្យបញ្ជាខាងក្រោម (ឬដាក់វានៅក្នុងឯកសារចាប់ផ្តើម)៖

(setq gambit-repl-command-prefix "\e")

របៀបសត្វឃ្មុំ (bmacs)

ប៊ីម៉ាក់គឺជាការអនុវត្តបរិយាកាសកម្មវិធីរួមបញ្ចូលគ្នាសម្រាប់ធ្វើការជាមួយ Bigloo Scheme ។ កញ្ចប់នេះអនុវត្តមុខងារដូចខាងក្រោមៈ

  • ការកែកំហុសកូដ;
  • ការធ្វើទម្រង់;
  • ការបង្កើត និងធ្វើបច្ចុប្បន្នភាពដោយស្វ័យប្រវត្តិនៃ Makefiles;
  • ការរុករកកូដ;
  • ការរួមបញ្ចូលជាមួយប្រព័ន្ធត្រួតពិនិត្យកំណែ;
  • ការមើលឯកសារ;
  • ការប្រតិបត្តិកូដអន្តរកម្ម;
  • ការពង្រីកម៉ាក្រូ;
  • ការគាំទ្រមួយចំនួនសម្រាប់រចនាប័ទ្មកម្មវិធីដែលចេះអក្សរ។

កញ្ចប់នេះទាមទារឧបករណ៍ប្រើប្រាស់បន្ថែមមួយចំនួនដើម្បីដំណើរការ ដែលភាគច្រើនមកជាមួយ Bigloo ។ ឯកសារអាចរកបាននៅលើគេហទំព័រគម្រោង ឬជាផ្នែកមួយនៃការចែកចាយ។

ការដំឡើងនិងការកំណត់រចនាសម្ព័ន្ធ

កញ្ចប់នេះត្រូវបានផ្គត់ផ្គង់ជាផ្នែកនៃ Bigloo Scheme ហើយមានទីតាំងនៅក្នុងថតរង bmacs នៃការចែកចាយ។ ដើម្បីដំឡើងកញ្ចប់ សូមចូលទៅកាន់ថតនេះ ហើយដំណើរការពាក្យបញ្ជានៅទីនោះ៖

ធ្វើការដំឡើង EMACSDIR =

ដែលនឹងបង្កើត ឯកសារចាំបាច់ទៅទីតាំងដែលអ្នកបានចង្អុលបង្ហាញ។ បន្ទាប់ពីនេះ អ្នកអាចបន្ថែមបន្ទាត់ខាងក្រោមទៅឯកសារចាប់ផ្តើមរបស់អ្នក ដើម្បីផ្ទុកកញ្ចប់ដោយស្វ័យប្រវត្តិនៅពេលអ្នកបើកឯកសារប្រភព៖

(autoload "bdb "bdb" "bdb mode" t) (autoload "bee-mode "bee-mode" "bee mode" t) (setq auto-mode-alist (បន្ថែម "(("\\.scm$" . bee-mode) ("\\.sch$" . bee-mode) ("\\.scme$" . bee-mode) ("\\.bgl$" . bee-mode) ("\\.bee$ ". bee-mode)) auto-mode-alist))

ការកំណត់កញ្ចប់អាចត្រូវបានកំណត់ដោយប្រើក្រុមការកំណត់សត្វឃ្មុំ ដែលផ្តល់នូវការកំណត់សម្រាប់ របៀបសត្វឃ្មុំ, និងក្រុម dbg & កំហុសប្រើដើម្បីកំណត់ការកំណត់បំបាត់កំហុស។

ធ្វើការជាមួយកូដប្រភព

បន្ទាប់ពីទាញយក របៀបសត្វឃ្មុំអ្នកប្រើប្រាស់អាចប្រតិបត្តិពាក្យបញ្ជាមូលដ្ឋានដោយប្រើរូបតំណាងរបារឧបករណ៍ដែលត្រូវគ្នា ឬដោយជ្រើសរើស ចំណុចចាំបាច់ពីម៉ឺនុយ Bee ដែលបង្ហាញនៅពេលរបៀបចាប់ផ្តើម។

ដើម្បីចូលបន្ទាត់ដោយអនុលោមតាមអនុសញ្ញា Bigloo កញ្ចប់ របៀបសត្វឃ្មុំកំណត់មុខងារជាច្រើន៖ bee-indent-sexp (C-M-q) ចូលបន្ទាត់កន្សោមបច្ចុប្បន្ន bee-indent-define ( ផ្ទាំង C-c C-d) ធ្វើវាសម្រាប់និយមន័យមុខងារបច្ចុប្បន្ន bee-indent-last-sexp (C-c ផ្ទាំង C-l) ចូល​បន្ទាត់​កន្សោម​ពី​មុខ​ទស្សន៍ទ្រនិច ។ល។

សំណុំមុខងារសំខាន់ៗដែលប្រើនៅពេលធ្វើការជាមួយកូដប្រភព គឺជាមុខងារសម្រាប់ស្វែងរកនិយមន័យនៃមុខងារ និងអថេរ។ ដើម្បីស្វែងរកនិយមន័យអថេរ អ្នកអាចប្រើ bee-tags-find (C-x 5 .) ឬ bee-tags-find-variable (C-c C-d f)។ ហើយដើម្បីស្វែងរកនិយមន័យម៉ូឌុល មានមុខងារ bee-find-module (C-c C-d m)។ ក្រៅពីនេះ របៀបសត្វឃ្មុំកំណត់ឡើងវិញនូវផ្លូវកាត់ក្តារចុចពីរ - M-។ & M- ដែលភ្ជាប់ជាមួយមុខងារ bee-tag-find និង bee-tags-find-next functions អនុញ្ញាតឱ្យរកឃើញមុខងារ និងថ្នាក់។

ដើម្បីងាយស្រួលក្នុងការធ្វើការជាមួយម៉ូឌុល របៀបសត្វឃ្មុំកំណត់សំណុំមុខងារដែលគ្រប់គ្រងបញ្ជីនៃម៉ូឌុលដែលនាំចូលដោយកូដប្រភពបច្ចុប្បន្ន - មុខងារភ្ជាប់ bee-import-binding (C-c RET i) ក៏ដូចជាបញ្ជីមុខងារ និងអថេរដែលនាំចេញពីម៉ូឌុលបច្ចុប្បន្ន - bee-export- មុខងារ (C-c RET f) និង bee-export-variable (C-c RET v) ។ លើសពីនេះទៀតវាមានមុខងារដាច់ដោយឡែកដែលអនុញ្ញាតឱ្យអ្នកនាំចូលនិមិត្តសញ្ញាពីឯកសារ C - bee-import-c-file (C-c RET c) ហើយវាក៏ធ្វើបច្ចុប្បន្នភាព Makefile ដើម្បីបន្ថែមភាពអាស្រ័យដើម្បីចងក្រងកូដដែលត្រូវគ្នា។

កញ្ចប់នេះក៏ផ្តល់នូវការគាំទ្រខ្លះៗសម្រាប់អ្វីដែលគេហៅថាការសរសេរកម្មវិធី។ ការគាំទ្រដែលបានផ្តល់គឺមិនពេញលេញទេ ប៉ុន្តែយ៉ាងហោចណាស់អនុញ្ញាតឱ្យអ្នកបញ្ចូលតំណភ្ជាប់ទៅកាន់ម៉ូឌុល និងការពិពណ៌នាមុខងារទៅក្នុងកូដ។ នេះត្រូវបានសម្រេចដោយប្រើពាក្យគន្លឹះ @path, @node & @deffn នៅក្នុងមតិយោបល់របស់ម៉ូឌុល និងការពិពណ៌នាមុខងារ។ ពាក្យគន្លឹះ @path & @node កំណត់ផ្នែកឯកសារ និងឯកសារដែលពិពណ៌នាអំពីម៉ូឌុលដែលបានផ្តល់ឱ្យ ហើយត្រូវបានបញ្ជាក់នៅក្នុងមតិយោបល់សម្រាប់ការប្រកាសម៉ូឌុល។ ហើយពាក្យគន្លឹះ @deffn ត្រូវបានចង្អុលបង្ហាញនៅក្នុងមតិយោបល់សម្រាប់មុខងារ។ ការប្រើប្រាស់ទាំងនេះ ពាក្យគន្លឹះអ្នកអភិវឌ្ឍន៍អាចរុករកផ្នែកដែលពាក់ព័ន្ធ និងការពិពណ៌នាមុខងារបានយ៉ាងឆាប់រហ័ស ដែលអនុញ្ញាតឱ្យមានការកែលម្អឯកសារកូដ។

ប្រតិបត្តិ និងចងក្រងកូដ

ដូចគ្នានឹងកញ្ចប់ផ្សេងទៀតដែរ របៀបសត្វឃ្មុំអនុញ្ញាតឱ្យអ្នកប្រតិបត្តិកូដគ្រោងការណ៍ដោយផ្ទាល់ពីសតិបណ្ដោះអាសន្ន Emacs ។ ដើម្បីចាប់ផ្តើមអ្នកបកប្រែ អ្នកត្រូវប្រតិបត្តិមុខងារ ude-repl-other-frame (C-c C-r C-r) ជ្រើសរើសរូបតំណាងរបារឧបករណ៍សមស្រប ( តំណាង) ឬធាតុម៉ឺនុយដែលត្រូវគ្នា។

ហើយ​បន្ទាប់​ពី​ផ្ទុក​អ្នក​បក​ប្រែ អ្នក​ប្រើ​អាច​ប្រតិបត្តិ​កូដ​ដោយ​ប្រើ​មុខងារ​ដូច​ខាង​ក្រោម៖

  • ude-repl-send-buffer (C-c C-r b) ផ្ញើសតិបណ្ដោះអាសន្នទាំងមូលសម្រាប់ការគណនា។
  • ude-repl-send-region (C-c C-r r) ផ្ញើប្លុកកូដដែលបានជ្រើសរើសទៅអ្នកបកប្រែ។
  • bee-repl-send-define (C-c C-r d) ត្រូវបានប្រើដើម្បីប្រតិបត្តិនិយមន័យបច្ចុប្បន្ន។
  • bee-repl-send-last-sexp (C-c C-r l) វាយតម្លៃតម្លៃនៃកន្សោមមុនទស្សន៍ទ្រនិច;
  • bee-repl-send-toplevel-sexp (C-c C-r t) ត្រូវបានប្រើដើម្បីវាយតម្លៃកន្សោមបច្ចុប្បន្នទាំងមូល។

ជាញឹកញាប់ណាស់ នៅពេលប្រើម៉ាក្រូ អ្នកត្រូវតែអាចពង្រីកពួកវាបាន។ ដូចជាសម្រាប់ធ្វើការជាមួយកូដធម្មតា, របៀបសត្វឃ្មុំអនុវត្តសំណុំមុខងារសម្រាប់ពង្រីកម៉ាក្រូនៅក្នុងកូដរបស់អ្នក (ក្នុងករណីនេះ សតិបណ្ដោះអាសន្នទាំងមូលនឹងត្រូវបានស្កេនសម្រាប់វត្តមាននៃនិយមន័យម៉ាក្រូ):

  • bee-expand-buffer (C-c C-e C-e) បណ្តាលឱ្យម៉ាក្រូនៅក្នុងសតិបណ្ដោះអាសន្នបច្ចុប្បន្នត្រូវបានពង្រីក។
  • bee-expand-region (C-c C-e C-r) ពង្រីកម៉ាក្រូនៅក្នុងកូដខាងក្រោយ;
  • bee-expand-define (C-c C-e C-d) ពង្រីកម៉ាក្រូក្នុងនិយមន័យបច្ចុប្បន្ន
  • bee-expand-last-sexp (C-c C-e C-l) ពង្រីកម៉ាក្រូក្នុងកន្សោមមុនទស្សន៍ទ្រនិច;
  • bee-expand-toplevel-sexp (C-c C-e C-t) ពង្រីកម៉ាក្រូក្នុងកន្សោមបច្ចុប្បន្ន។

ដើម្បីចងក្រងកម្មវិធី អ្នកត្រូវតែមាន Makefile ដែលពិពណ៌នាអំពីភាពអាស្រ័យរវាងម៉ូឌុល និងបញ្ជាក់ទង់ចងក្រង។ គម្រោងនេះទាមទារអ្វីដែលគេហៅថា ថតឫស - របៀបសត្វឃ្មុំព្យាយាមកំណត់ថតឫសរបស់គម្រោងដោយស្វែងរកឯកសារ Makefile , .afile , ឬ .etags ឬថតឫសអាចត្រូវបានកំណត់ដោយប្រើមុខងារ ude-user-set-root-directory (C-c C-p C-r) ឬសមស្រប ប៊ូតុងរបារឧបករណ៍។

នៅពេលដែលថត root ត្រូវបានបញ្ជាក់ Makefile មួយអាចត្រូវបានបង្កើតដោយប្រើមុខងារ ude-generate-makefile (C-c C-c a ឬ C-c C-c C-l) ដែលនឹងប្រាប់អ្នកប្រើប្រាស់សម្រាប់ឈ្មោះដែលអាចប្រតិបត្តិបានដែលកូដប្រភពដែលបានផ្តល់ឱ្យ។ ចងក្រង។ ប្រសិនបើ Makefile មានរួចហើយ នោះផ្លូវកាត់ក្តារចុចដូចគ្នាទាំងនេះនឹងធ្វើបច្ចុប្បន្នភាពវា ហើយថែមទាំងបង្កើតឯកសារ .afile និង .etags ឡើងវិញ។ លើសពីនេះទៀតមានសំណុំនៃមុខងារសម្រាប់កែសម្រួល Makefile - ude-edit-makefile (C-c C-c e) ធ្វើឱ្យទាន់សម័យ Makefile - ude-update-makefile (C-c C-c u) ការប្តូររវាងការបំបាត់កំហុស និងកំណែចុងក្រោយនៃកម្មវិធី - ude- makefile-debug-mode (C-c C-c C-d) & ude-makefile-final-mode (C-c C-c C-f) និងផ្សេងៗទៀត។

នៅពេលដែល Makefile មាន វាអាចចងក្រងកូដដោយប្រើមុខងារ ude-mode-compile-from-menu (C-c C-c C-c) ។ អ្នកអាចរំខានការចងក្រងដោយប្រើមុខងារ kill-compilation (C-c C-c k) ។

ហើយ​បន្ទាប់​ពី​ការ​ចងក្រង​បាន​បញ្ចប់ អ្នក​អាច​ប្រតិបត្តិ​ការ​ប្រតិបត្តិ​បាន​ដោយ​ប្រើ​មុខងារ ude-execute (C-c C-c C-r) ។

ការបំបាត់កំហុស និងការបំពេញទម្រង់

កញ្ចប់ Bigloo ក៏ភ្ជាប់មកជាមួយឧបករណ៍បំបាត់កំហុសដែលអនុញ្ញាតឱ្យអ្នកបំបាត់កំហុសនៅកម្រិតកូដប្រភព។ របៀបសត្វឃ្មុំគាំទ្រអន្តរកម្មជាមួយកម្មវិធីបំបាត់កំហុសនេះនៅក្នុង Emacs។ ដើម្បីបើកដំណើរការកម្មវិធីបំបាត់កំហុស អ្នកត្រូវដំណើរការមុខងារ bee-debug (C-c C-b C-b) ឬជ្រើសរើសរូបតំណាងរបារឧបករណ៍ ឬធាតុម៉ឺនុយដែលសមរម្យ។ ប៉ុន្តែការបើកដំណើរការកម្មវិធីបំបាត់កំហុសមិនភ្ជាប់វាដោយស្វ័យប្រវត្តិទេ ដូច្នេះអ្នកត្រូវតែប្រតិបត្តិមុខងារ bee-toggle-connect-buffer (C-c C-b c) ដើម្បីភ្ជាប់សតិបណ្ដោះអាសន្នបច្ចុប្បន្នទៅនឹងឧបករណ៍បំបាត់កំហុស ដែលនឹងអនុញ្ញាតឱ្យអ្នកកំណត់ចំណុចឈប់ និងអនុវត្តការងារផ្សេងទៀត ខណៈពេលដែលនៅក្នុងបណ្តុំអត្ថបទប្រភព។

ទម្រង់កម្មវិធីត្រូវបានគាំទ្រដោយស្វ័យប្រវត្តិ ប្រសិនបើអ្នកប្រើការបង្កើតឯកសារ។ ដើម្បីសរសេរកូដទម្រង់ ជាដំបូងអ្នកត្រូវតែចងក្រងវាជាមួយនឹងការគាំទ្រទម្រង់ ដែលត្រូវបានធ្វើជាមួយនឹងមុខងារ bee-profiler-start (C-c C-p c)។ ហើយបន្ទាប់ពីការចងក្រង អ្នកអាចដំណើរការ bee-profiler-inspect (C-c C-p i) ដែលនឹងដំណើរការកម្មវិធី ហើយបន្ទាប់មកដំណើរការឧបករណ៍ប្រើប្រាស់ bglprof ដែលនឹងប្រមូលទិន្នន័យប្រតិបត្តិសម្រាប់អ្នកដើម្បីវិភាគ។

មុខងារផ្សេងទៀត។

កញ្ចប់ផ្តល់ឱកាសក្នុងការទទួល ព័ត៌មានយោង. នេះអាចត្រូវបានធ្វើដោយដំណើរការមុខងារ bee-doc-visit (C-c C-d i) ឬដោយចុចលើរូបតំណាងព័ត៌មាននៅក្នុងរបារឧបករណ៍។ មុខងារនេះមានឥរិយាបទខុសគ្នាអាស្រ័យលើ ស្ថានភាពបច្ចុប្បន្នទស្សន៍ទ្រនិច - ប្រសិនបើទស្សន៍ទ្រនិចស្ថិតនៅលើឧបករណ៍កំណត់អត្តសញ្ញាណ នោះឯកសារសម្រាប់ការកំណត់អត្តសញ្ញាណនេះត្រូវបានចេញ ប្រសិនបើតំបន់កូដត្រូវបានជ្រើសរើស នោះឯកសារសម្រាប់តំបន់នេះត្រូវបានចេញ។ បើមិនដូច្នេះទេ អ្នកប្រើប្រាស់នឹងត្រូវបានសួររកឈ្មោះនៃផ្នែកឯកសារដែលចាប់អារម្មណ៍ ហើយផ្នែកដែលបានជ្រើសរើសនឹងត្រូវបានបង្ហាញ។

ព័ត៌មានដែលបង្ហាញដល់អ្នកប្រើប្រាស់គឺយកចេញពីឯកសារ Info ដែលភ្ជាប់មកជាមួយ Bigloo ។ លើសពីនេះទៀត ឯកសារត្រូវបានស្វែងរកនៅក្នុងថតឯកសាររបស់គម្រោងបច្ចុប្បន្ន ហើយពួកវាត្រូវបានបន្ថែមដោយស្វ័យប្រវត្តិ។ លើសពីនេះ អ្នកប្រើប្រាស់អាចបញ្ជាក់ឯកសារឯកសារបន្ថែមដែលត្រូវស្វែងរក។

ថង់ផ្លាស្ទិច ប៊ីម៉ាក់ក៏ផ្តល់នូវមុខងារមួយចំនួនសម្រាប់ធ្វើការជាមួយប្រព័ន្ធត្រួតពិនិត្យកំណែ ដែលអនុញ្ញាតឱ្យអ្នកធ្វើប្រតិបត្តិការជាមួយទិន្នន័យនៅកម្រិតគម្រោង។ ប៉ុន្តែដោយសារតែការលេចចេញនូវប្រព័ន្ធត្រួតពិនិត្យកំណែថ្មី និងចំណុចប្រទាក់ដែលត្រូវគ្នាសម្រាប់ពួកវា មុខងារទាំងនេះមិនមានតម្រូវការជាពិសេសនោះទេ។

លើសពីនេះទៀតមានច្រើន។ មុខងារបន្ថែមអនុវត្តដោយកញ្ចប់នេះ ឧទាហរណ៍ ការគាំទ្រសម្រាប់ធ្វើការជាមួយកូដដែលសរសេរជា C ជាដើម។ ប៉ុន្តែការពិពណ៌នាអំពីសមត្ថភាពទាំងនេះគឺហួសពីវិសាលភាពនៃអត្ថបទនេះ។

ការគាំទ្រគ្រោងការណ៍នៅក្នុង SLIME

ដើម្បីប្រើ ស្លីមជាមួយនឹងគ្រោងការណ៍អ្នកត្រូវធ្វើ ការដំឡើងមូលដ្ឋានកញ្ចប់ ដូចដែលបានពិពណ៌នានៅក្នុងផ្នែកកញ្ចប់ ហើយបន្ទាប់មកទាញយកសមាសធាតុដែលត្រូវការ។ ជាទូទៅនេះត្រូវបានធ្វើដូចខាងក្រោម:

(add-hook "slime-load-hook (lambda() (ទាមទារ "slime-scheme)))

ពាក្យបញ្ជានេះនឹងដំឡើងទំពក់ដែលចាំបាច់ដើម្បីធ្វើការជាមួយ ស្លីមប៉ុន្តែសម្រាប់គ្រាមភាសាដែលគាំទ្រនីមួយៗ អ្នកប្រហែលជាត្រូវធ្វើ ការកំណត់បន្ថែមដោយអនុលោមតាមការណែនាំដែលមាននៅក្នុងឯកសារដែលត្រូវគ្នា - swank-kawa.scm ឬ swank-mit-scheme.scm ។

និងអ្វីៗផ្សេងទៀតទាក់ទងនឹងការធ្វើការជាមួយ ស្លីមដែលត្រូវបានពិពណ៌នានៅក្នុងផ្នែកដែលត្រូវគ្នា។

តាមលំនាំដើម ដំណើរការគ្រោងការណ៍តែមួយត្រូវបានអនុញ្ញាតឱ្យដំណើរការ។ ប៉ុន្តែអ្នកអាចប្រើកញ្ចប់ប្រសិនបើអ្នកត្រូវការដំណើរការដំណើរការជាច្រើនក្នុងពេលតែមួយ។

លើសពីនេះទៀតការដឹកជញ្ជូន ប៊ីម៉ាក់កញ្ចប់ក៏មានផងដែរ។ ស៊ីរចនាឡើងសម្រាប់កែសម្រួលកូដ C ដែលប្រើដើម្បីសរសេរផ្នែកបន្ថែម Bigloo bug-mode ដែលផ្តល់ការគាំទ្រសម្រាប់ Bigloo debugger និង ude(បរិស្ថានអភិវឌ្ឍន៍យូនីក) ដែលអនុវត្តការគាំទ្រការចងក្រង និង ឧបករណ៍ប្រើប្រាស់ផ្សេងៗប្រើក្នុងការធ្វើការជាមួយ Bigloo ។

វាគួរឱ្យកត់សម្គាល់ថាប្រសិនបើ Makefile មិនមានទេនោះមុខងារនេះបណ្តាលឱ្យការចងក្រងនៃម៉ូឌុលដែលអាចប្រតិបត្តិបានចាប់ផ្តើមពីឯកសារតែមួយ។

អ្វីដែលគេហៅថា swank- ម៉ូឌុល។

សមាសធាតុទាំងអស់ដែលទាក់ទងនឹងគ្រោងការណ៍មានទីតាំងនៅក្នុងថតរងនៃការចែកចាយ SLIME ដូច្នេះកុំភ្លេចបន្ថែមវាទៅផ្លូវស្វែងរករបស់អ្នក។

តើភាសាមួយណាដែលត្រូវជ្រើសរើសសម្រាប់ការរៀនសរសេរកម្មវិធី?អ្នកមិនគួរចាប់ផ្តើមរៀនសរសេរកម្មវិធីនៅកន្លែងណាមួយនៅកណ្តាលនោះទេ។

ដំបូងអ្នកត្រូវហ្វឹកហាត់ខួរក្បាលរបស់អ្នក សមត្ថភាពក្នុងការបង្កើតក្បួនដោះស្រាយ និងពណ៌នាពួកគេ ដោយដឹងពីសមត្ថភាពនៃភាសាជាក់លាក់មួយ។ នៅក្នុងសាលា និងសាកលវិទ្យាល័យក្នុងស្រុក ការសរសេរកម្មវិធីជាធម្មតាត្រូវបានបង្រៀនដោយប្រើ Basic ឬ Pascal ជាឧទាហរណ៍។ រហូតមកដល់ពេលនេះ Pascal ត្រូវបានចាត់ទុកថាជាផ្នែកមួយនៃ ភាសាល្អបំផុតសម្រាប់ការបណ្តុះបណ្តាល វាគឺជាការនិយាយដ៏តឹងរឹងជាមួយនឹងការវាយអក្សរឋិតិវន្ត ដែលអនុញ្ញាតដោយគ្មាន បញ្ហាដែលមិនចាំបាច់អនុវត្តគោលការណ៍នៃនីតិវិធី និងកម្មវិធីតម្រង់ទិសវត្ថុ។ ប៉ុន្តែដោយបានស្គាល់សម្ភារៈសិក្សារបស់សាកលវិទ្យាល័យបស្ចិមប្រទេសឈានមុខគេ (Berkeley, Stanford, MIT) ខ្ញុំយល់ស្របថា វាជាគំនិតល្អក្នុងការចាប់ផ្តើមសិក្សាជាមួយភាសាមុខងារមួយ។

ជាទូទៅ វាចម្លែកណាស់ ប៉ុន្តែគំរូមុខងារត្រូវបានមិនអើពើដោយរឹងរូសដោយការអប់រំក្នុងស្រុក។ ដើម្បីភ្ជាប់គម្លាតនេះ ខ្ញុំចង់និយាយអំពីភាសាកម្មវិធី Scheme ។

គ្រោងការណ៍គឺជាភាសាសរសេរកម្មវិធីដ៏សាមញ្ញបំផុត។ វាពិតជាអាចទៅរួចក្នុងការរៀនវាក្នុងមួយថ្ងៃ ប៉ុន្តែភាពសាមញ្ញនេះគឺបោកបញ្ឆោត។ គ្រោងការណ៍ក៏ជាភាសាដ៏មានឥទ្ធិពលផងដែរ។ មានការអនុវត្តយ៉ាងច្រើន។

កម្មវិធីវិញ្ញាបនប័ត្រត្រូវបានរក្សាទុកក្នុងឯកសារ *.scm ឬអ្នកអាចប្រើ របៀបអន្តរកម្មអ្នកបកប្រែស្រដៀងនឹង Python ។

អថេរ និងអថេរ

តោះចាប់ផ្តើមរៀនរចនាសម្ព័ន្ធមូលដ្ឋាននៃ Scheme ។ ជាដំបូង ចូរយើងកំណត់ចំនួនថេរ៖

123 - ចំនួនគត់

3.1415926 - លេខប្រភាគ

2 + 3i - ចំនួនកុំផ្លិច

2/3 - ប្រភាគ

#B1111 - លេខគោលពីរ

#xFF - អត្ថបទគោលដប់ប្រាំមួយ។

#O123 - លេខប្រាំបី

#\A - តួអក្សរតែមួយ

"ជំរាបសួរពិភពលោក!" - ខ្សែអក្សរ

"ជំរាបសួរ - និមិត្តសញ្ញា

#f - តម្លៃឡូជីខល

ថេរអាចត្រូវបានដំណើរការដោយការប្រើសញ្ញាប្រមាណវិធីឬមុខងារ។ យ៉ាងណាមិញ Scheme គឺជាភាសាដែលមានមុខងារ ដូច្នេះវាមានមុខងារទាំងអស់។

នៅក្នុងគណិតវិទ្យា អ្នកស្គាល់ទម្រង់នៃការសរសេរអនុគមន៍ f (x) ឬ t (a, b)។ ប៉ុន្តែរឿងដូចគ្នាអាចត្រូវបានសរសេរក្នុងទម្រង់ (f x) ឬ (t a b) ។ នេះគឺជាទម្រង់នៃការថតដែល Scheme ប្រើ។ មិន​មែន​ជា​កន្សោម​នព្វន្ធ​ដែល​ត្រូវ​បាន​សរសេរ​ក្នុង​ទម្រង់​ជា​ឧទាហរណ៍ ២+៣ ប៉ុន្តែ​ក្នុង​បុព្វបទ - (+ ២ ៣)។

ឧទាហរណ៍៖

ល្បិច > (+ (* ៣ ៤) (/ ៥ ២))

29/2

ល្បិច > (+ ១ ១ ១ ១ ១)

ល្បិច> (/២)

ល្បិច> (sqrt 2)

1.4142135623731

ដើម្បីប្រកាសអថេរ ប្រើសំណង់ (កំណត់ឈ្មោះតម្លៃ)

ល្បិច> (កំណត់ ២)

ល្បិច> (កំណត់ខ ២)

ល្បិច > (+ a b)

តម្លៃនៃអថេរដែលមានស្រាប់អាចត្រូវបានផ្លាស់ប្តូរដោយប្រើសំណង់ (កំណត់! តម្លៃឈ្មោះ)

ល្បិច> (កំណត់!a 5)

ល្បិច > ក

មុខងារត្រូវបានប្រកាសដោយប្រើ construct (កំណត់ (ឈ្មោះប៉ារ៉ាម៉ែត្រ) function_type)

ល្បួង> (កំណត់ (ការ៉េ x) (* x x))

ល្បិច> (ការ៉េ ៣)

ដើម្បី​បង្ហាញ​ការ​បង្កើត​ឡើងវិញ ខ្ញុំ​នឹង​ផ្តល់​ឧទាហរណ៍​មួយ​នៃ​ការ​គណនា​ហ្វាក់តូរីល៖

(កំណត់ (ការពិត x)

(ប្រសិនបើ (= x 1)

(* X (ការពិត (- x 1)))))

ដូចដែលអ្នកបានយល់រួចហើយ លក្ខខណ្ឌមួយអាចត្រូវបានត្រួតពិនិត្យដោយប្រើសំណង់ (ប្រសិនបើមានលក្ខខណ្ឌណាមួយ)

ដោយមិនចូលទៅក្នុងព័ត៌មានលម្អិតខ្ញុំនឹងទាក់ទាញការយកចិត្តទុកដាក់ចំពោះមុខងារសំខាន់ៗ

(បង្ហាញ "សួស្តីពិភពលោក!") - បង្ហាញខ្សែអក្សរ

(បន្ទាត់ថ្មី) - ទៅបន្ទាត់ថ្មី។

វាងាយស្រួលប្រើបញ្ជីដើម្បីធ្វើការជាមួយសំណុំទិន្នន័យ

Guile> (កំណត់លេខ (បញ្ជី 1 2 3 4 5 6 7 8 9 10)) - ប្រកាសបញ្ជី

Guile> (list-ref nums 0) - អានធាតុដែលមានលេខ 0

Guile> (លេខឡាន) - អានធាតុទីមួយ

Guile> (លេខ cdr) - អានធាតុផ្សេងទៀតទាំងអស់។

(2 3 4 5 6 7 8 9 10)

អ្នកអាចដំណើរការធាតុបញ្ជីទាំងអស់ក្នុងពេលតែមួយ

បង្កើតបញ្ជីថ្មីដោយអនុវត្តមុខងារសម្រាប់ធាតុនីមួយៗ

ល្បិច> (ផែនទីលេខការ៉េ)

(1 4 9 16 25 36 49 64 81 100)

Guile> (ផែនទី (lambda (x) (* x 3)) លេខ)

(3 6 9 12 15 18 21 24 27 30)

រចនាសម្ព័ន្ធ lambda អនុញ្ញាតឱ្យអ្នកប្រកាសមុខងារតាមតម្រូវការដោយមិនចាំបាច់ប្រាប់ឈ្មោះពួកគេ។ ប្រសិនបើអ្នកសរសេរកម្មវិធីនៅក្នុង Python អ្នកស្គាល់សំណង់ទាំងនេះរួចហើយ។

តាមពិត Scheme មិនមានរង្វិលជុំដូចដែលពួកគេកំពុងស្ថិតនៅក្នុងនោះទេ។ ភាសាចាំបាច់. នៅទីនេះការហៅឡើងវិញត្រូវបានប្រើសម្រាប់គោលបំណងដូចគ្នា។ ឧទាហរណ៍ ចូរយើងបង្ហាញមាតិកានៃបញ្ជីនៅក្នុងជួរឈរមួយ។

(កំណត់ (បញ្ជីបោះពុម្ព)

(ប្រសិនបើ (មិនមែន (null? Lst)))

(ចាប់ផ្តើម (បង្ហាញ (ឡាន))

(បន្ទាត់ថ្មី)

(បញ្ជីបោះពុម្ព (cdr lst)))))

ការសាងសង់ (ចាប់ផ្តើម ... ​​) ត្រូវបានប្រើប្រសិនបើអ្នកត្រូវការបញ្ចូលសញ្ញាប្រមាណវិធីជាច្រើនដែលវាក្យសម្ព័ន្ធអនុញ្ញាតតែមួយ។

សំណង់ខាងក្រោមអនុញ្ញាតឱ្យអ្នកក្លែងធ្វើរង្វិលជុំដែលគេស្គាល់ពីភាសាសរសេរកម្មវិធីផ្សេងទៀត៖

(អនុញ្ញាតឱ្យរង្វិលជុំ ((i 1))

(បង្ហាញ i)

(បន្ទាត់ថ្មី)

(ប្រសិនបើ (<= i 10) (loop (+ i 1))))

let construct ត្រូវបានប្រើនៅពេលដែលអ្នកត្រូវការប្រកាសអថេរមូលដ្ឋាននៅក្នុងកន្សោមមួយ ឬនៅពេលដែលអ្នកត្រូវការប្រកាសអនុគមន៍ដែលបានដាក់។ នៅក្នុងវិធីនេះ ជម្រើសវដ្តដែលអាចធ្វើបានស្ទើរតែទាំងអស់អាចត្រូវបានអនុវត្ត។ ជាការពិតណាស់ អ្នកតែងតែអាចបង្កើតមុខងារផ្ទាល់ខ្លួនរបស់អ្នក ដើម្បីបង្រួមកំណត់ចំណាំ ព្រោះមុខងារអាចត្រូវបានបញ្ជូនជាប៉ារ៉ាម៉ែត្រទៅមុខងារផ្សេងទៀត ដូចជាទិន្នន័យសាមញ្ញ។ ជាទូទៅ គ្រោងការណ៍អនុញ្ញាតឱ្យអ្នកប្ដូរភាសាតាមចិត្តរបស់អ្នក។ ភាសាដែលអាចបត់បែនបានអស្ចារ្យ។

ឧទាហរណ៍ អ្នកអាចផ្តល់នូវការអនុវត្តមុខងារសម្រាប់គណនាអាំងតេក្រាលច្បាស់លាស់

(កំណត់ (func x)

(កំណត់ (រួមបញ្ចូល a b e f)

(កំណត់ផលបូក ០)

(អនុញ្ញាតឱ្យរង្វិលជុំ ((i a))

(ប្រសិនបើ (

(កំណត់! ផលបូក (+ បូក (* (f i) អ៊ី)))

(រង្វិលជុំ (+ i e)))))

ផលបូក)

(បង្ហាញ (រួមបញ្ចូល 0 1 0.01 មុខងារ))

(បន្ទាត់ថ្មី)

គេហទំព័រផ្លូវការរបស់ Guile

Schemers.org

ការ​ថត​វីដេអូ​នៃ​ការ​បង្រៀន​នៅ​លើ​វគ្គ​សិក្សា The Structure and Interpretation of Computer Programs at Berkeley University

ជាទូទៅ ដោយសារ Scheme គឺជាភាសាសិក្សា វាមានព័ត៌មានជាច្រើននៅលើវា។ ក្នុងពេលជាមួយគ្នានេះ ចំណេះដឹងនៃភាសានេះនឹងមិនត្រឹមតែអនុញ្ញាតឱ្យអ្នកមើលការស្ថាបនាផ្សេងៗនៅក្នុងភាសាផ្សេងទៀតប៉ុណ្ណោះទេ (ដូចជា Python ជាឧទាហរណ៍)។

សេចក្តីផ្តើម

គ្រោងការណ៍- ភាសាសរសេរកម្មវិធីដែលមានមុខងារ ដែលជាគ្រាមភាសាដ៏ល្បីបំផុតពីរនៃភាសានៅសម័យរបស់យើង។ លីព. បុរស L. Steeleនិង Gerald Jay Sussmanពីវិទ្យាស្ថានបច្ចេកវិទ្យា Massachusetts ( MIT) - បានបង្កើតវានៅពាក់កណ្តាលទសវត្សរ៍ឆ្នាំ 1970 ។ ពិតប្រាកដ គ្រោងការណ៍ត្រូវបានប្រើជាយូរមកហើយនៅក្នុង MITសម្រាប់ការបង្រៀនកម្មវិធី (ឥឡូវត្រូវបានជំនួសដោយ ពស់ថ្លាន់) និងយ៉ាងជាក់លាក់ គ្រោងការណ៍ឧទាហរណ៍ត្រូវបានសរសេរនៅក្នុងសៀវភៅដ៏ល្បីល្បាញ "រចនាសម្ព័ន្ធ និងការបកស្រាយនៃកម្មវិធីកុំព្យូទ័រ"- ព្រះគម្ពីររបស់អ្នកសរសេរកម្មវិធីដែលគោរពខ្លួនឯង។

សម្រាប់ IDE សូរ្យគ្រាសមានកម្មវិធីជំនួយដែលអនុញ្ញាតឱ្យអ្នកសរសេរកម្មវិធី គ្រោងការណ៍. នៅក្នុងអត្ថបទនេះយើងនឹងពិនិត្យមើលលក្ខណៈសំខាន់ៗនៃកម្មវិធីជំនួយនេះ សិក្សាដំណើរការនៃការប្រើប្រាស់វា និងនីតិវិធីនៃការកំណត់រចនាសម្ព័ន្ធ។

កម្មវិធីជំនួយត្រូវបានគេហៅថា SchemeScript និងជាផ្នែកមួយនៃគម្រោង គ្រោងការណ៍. អ្នកអាចទាញយកកំណែចុងក្រោយបំផុតនៃកម្មវិធីជំនួយនេះពីគេហទំព័រ (បន្ទាប់ពីទាញយករួច គ្រាន់តែចម្លង ឯកសារពាងទៅកាតាឡុក eclipse/plugins) គម្រោងនេះកំពុងអភិវឌ្ឍយ៉ាងសកម្ម កំណែចុងក្រោយបំផុតត្រូវបានគេហៅថា 1.3.0 អាល់ហ្វា 10និងចេញផ្សាយនៅថ្ងៃទី 05/09/2010 កូដប្រភពមាននៅ GitHub. ព័ត៌មានបន្ថែមអំពីកម្មវិធីជំនួយ ល្បិចមួយចំនួនដែលវាអនុញ្ញាត SchemeScriptហើយសមត្ថភាពរបស់វាអាចរកបាននៅក្នុងប្លក់ Dominique Boucher- អ្នកនិពន្ធនៃផ្នែកបន្ថែមនេះ។

វាគួរឱ្យកត់សម្គាល់ថាសូម្បីតែកំណែចុងក្រោយបំផុត។ SchemeScriptមិនដំណើរការនៅក្នុង Eclipse Heliosដូច្នេះសម្រាប់ពេលនេះសម្រាប់ការអភិវឌ្ឍន៍ភាសា គ្រោងការណ៍គួរតែត្រូវបានប្រើ សូរ្យគ្រាស Galileo.

UPD 07/17/10:កំណែចុងក្រោយបំផុតនៅលើ GitHub ដំណើរការនៅក្នុង Eclipse Heliosប៉ុន្តែវាត្រូវការចងក្រងពីប្រភព។ បន្ទាប់ពីពេលខ្លះ Dominic បានសន្យាថានឹងសាងសង់ការចែកចាយឡើងវិញ។

សូរ្យគ្រាស- ទស្សនវិស័យ គ្រោងការណ៍

បន្ទាប់ពីដំឡើងកម្មវិធីជំនួយវានឹងមាន សូរ្យគ្រាស- ទស្សនវិស័យ គ្រោងការណ៍. តាមលំនាំដើមវាមើលទៅដូចនេះ៖

ទស្សនវិស័យរួមបញ្ចូលទិដ្ឋភាព (នៅក្នុងលក្ខខណ្ឌ សូរ្យគ្រាសអ្នករុករកគម្រោង - អ្នករុករកទិដ្ឋភាពបង្ហាញមាតិកាដែលបានញែកនៃឯកសារដែលបានកែសម្រួល - គ្រោងដែលនឹងបង្ហាញបញ្ជីនៃនិយមន័យនៃថេរ និងមុខងារ ក៏ដូចជាទិដ្ឋភាពដែលដួលរលំពីរ៖ ទិដ្ឋភាពដែលមានរូបតំណាងក្នុងទម្រង់ជាអក្សរឡាំដា - និយមន័យនិងមើល កុងសូល។.

ទៅម៉ឺនុយមេ សូរ្យគ្រាសបានបន្ថែមក្រុមនៃពាក្យបញ្ជា គ្រោងការណ៍ត្រូវបានរចនាឡើងជាចម្បងដើម្បីគ្រប់គ្រងអ្នកបកប្រែ។ បន្ទះចាប់ផ្តើមរហ័សមានប៊ូតុងបី (បំពាក់ដោយរូបតំណាងក្នុងទម្រង់ជាអក្សរឡាំដា) ពីឆ្វេងទៅស្តាំ៖ ចាប់ផ្តើមអ្នកបកប្រែ ចាប់ផ្តើមអ្នកបកប្រែឡើងវិញ និងបញ្ឈប់អ្នកបកប្រែ។

មុនពេលអ្នកចាប់ផ្តើមធ្វើការជាមួយកម្មវិធីនិពន្ធ អ្នកត្រូវបង្កើត គម្រោង Eclipseដែលនឹងរក្សាទុកឯកសារកូដប្រភព។ ជាក់លាក់ទៅ គ្រោងការណ៍កម្មវិធីជំនួយប្រភេទគម្រោង SchemeScriptមិនផ្តល់ទេ ដូច្នេះអ្នកត្រូវបង្កើតគម្រោងធម្មតាពីថត ទូទៅ:

គម្រោងដែលបានបង្កើតនឹងត្រូវបានបង្ហាញនៅក្នុងកម្មវិធីរុករក៖

ឥឡូវនេះនៅក្នុងគម្រោងអ្នកអាចប្រតិបត្តិបាន។ ថ្មី -> ឯកសារនិងបង្កើតឯកសារដែលបានរចនាឡើងដើម្បីរក្សាទុកកូដប្រភពនៅលើ គ្រោងការណ៍. ឯកសារនេះត្រូវតែមានផ្នែកបន្ថែម .ស.scm. ឯកសារដែលមានផ្នែកបន្ថែមទាំងនេះនឹងត្រូវបានកែសម្រួលដោយប្រើកម្មវិធីនិពន្ធពិសេសដែលរួមបញ្ចូលក្នុងកញ្ចប់ SchemeScript.

ការកែសម្រួលកូដប្រភព

SchemeScriptផ្តល់កម្មវិធីនិពន្ធកូដប្រភពសម្រាប់ភាសា គ្រោងការណ៍ជាមួយនឹងលទ្ធភាពសម្បូរបែប។ សូមក្រឡេកមើលពួកគេឱ្យកាន់តែច្បាស់។

ជាបឋមវាគួរអោយកត់សំគាល់ ការបន្លិចតង្កៀបជាគូ. នៅពេលកែសម្រួលលេខកូដទៅ លីព-like languages ​​លក្ខណៈពិសេសនេះគឺចាំបាច់ ពីព្រោះនៅក្នុងសំណង់ស្មុគ្រស្មាញច្រើន ឬតិច វាអាចច្រឡំថាវង់ក្រចកបើកមួយណាដែលត្រូវនឹងការបិទមួយ។

កម្មវិធីនិពន្ធមានភ្ជាប់មកជាមួយ S-expressions វិភាគភាពត្រឹមត្រូវ. ឧទាហរណ៍ ប្រសិនបើវង់ក្រចកបិទត្រូវបានលុបចោល សារកំហុសនឹងត្រូវបានបង្កើត៖

វាក៏មានរបស់ដែលមានប្រយោជន៍ដូចជា ការជំនួសដោយស្វ័យប្រវត្តិការបញ្ចប់ការបញ្ចេញមតិ. នោះគឺប្រសិនបើអ្នកចុចនៅពេលវាយ បញ្ជា(Ctrl)+លំហបន្ទាប់មកបង្អួចនឹងលេចឡើងជាមួយនឹងជម្រើសដែលមានសម្រាប់ការបំពេញរចនាសម្ព័ន្ធដែលបានបញ្ចូល៖

នៅពេលបង្កើតនិយមន័យ (ឧទាហរណ៍ការប្រើពាក្យគន្លឹះ កំណត់) ពួកគេត្រូវបានបន្ថែមទៅទិដ្ឋភាព គ្រោងដែលអនុញ្ញាតឱ្យអ្នកចូលប្រើនិយមន័យដែលចង់បានយ៉ាងឆាប់រហ័សប្រសិនបើចាំបាច់៖

កម្មវិធីជំនួយ SchemeScriptបន្ថែមពីរក្រុមនៃធាតុទៅម៉ឺនុយបរិបទកម្មវិធីកែសម្រួលកូដ៖ ប្រភព- មានពាក្យបញ្ជាសម្រាប់កែសម្រួលកូដប្រភព - និង អ៊ីវ៉ាល។- មានពាក្យបញ្ជាសម្រាប់ការបកស្រាយរបស់វា៖

ពិចារណាក្រុមនៃធាតុម៉ឺនុយ ប្រភព:

ស្វែងរកនិយមន័យ- ស្វែងរកនិយមន័យនៃនិមិត្តសញ្ញានៅក្នុងកូដប្រភព។ នោះគឺជាឧទាហរណ៍យើងត្រូវមើលពីរបៀបដែលនិមិត្តសញ្ញាត្រូវបានកំណត់ sqr. ដើម្បីធ្វើដូចនេះដាក់ទស្សន៍ទ្រនិចបន្ទាប់ពីតួអក្សរនេះ។

និងចុច F12. ទស្សន៍ទ្រនិចនឹងផ្លាស់ទីទៅនិយមន័យមុខងារ sqrហើយនិយមន័យនេះនឹងត្រូវបានបន្លិច៖

និមិត្តសញ្ញាពេញលេញ- យើងបានស្គាល់ពាក្យបញ្ជានេះរួចហើយ វាគឺជាពាក្យបញ្ជាបំពេញដោយស្វ័យប្រវត្តិ។

ពិពណ៌នាអំពីនិមិត្តសញ្ញា- បង្ហាញព័ត៌មានជំនួយជាមួយនឹងការពិពណ៌នាអំពីនិមិត្តសញ្ញា។ ឧទាហរណ៍និមិត្តសញ្ញាដែលយើងបានពិចារណាក្នុងឧទាហរណ៍មុន។ sqrគឺជាមុខងារមួយ៖

បញ្ចូលមតិយោបល់បឋមកថា- បន្ថែមមតិយោបល់ជាសកលទៅការចាប់ផ្តើមនៃឯកសារកូដប្រភព។ នៅក្នុងការកំណត់ (សូមមើលខាងក្រោម) អ្នកអាចកំណត់វាលមួយចំនួនសម្រាប់មតិបែបនេះ - អ្នកនិពន្ធ ការរក្សាសិទ្ធិ។ល។

បញ្ចូលមតិយោបល់ជំពូក- បន្ថែមមតិយោបល់ទៅប្លុកជាក់លាក់នៃកូដ - សំណុំនៃមុខងារ និងនិយមន័យ។

បញ្ចូលមតិយោបល់ផ្នែក- បន្ថែមមតិយោបល់ទៅមុខងារ ឬនិយមន័យជាក់លាក់។

បិទ/បើក​មតិ- មតិយោបល់ / មិនផ្តល់យោបល់លើប្លុកកូដដែលបានជ្រើសរើស។ ប្រសិនបើប្លុកកូដមិនមែនជាមតិ នោះតួអក្សរនាំមុខ ";" ត្រូវបានបន្ថែមទៅវា៖

ហើយផ្ទុយមកវិញ - ប្រសិនបើការបញ្ចេញមតិមួយចំនួនត្រូវបានបញ្ចេញមតិ នោះនិមិត្តសញ្ញាមតិត្រូវបានដកចេញ៖

បង្រួមចន្លោះ- ដកដកឃ្លាមុន និងបន្ទាប់បន្ថែម និងបន្ទាត់ថ្មី។ អ្វីមួយដូចជាមុខងារ កាត់:

ទម្រង់- ធ្វើទ្រង់ទ្រាយកូដស្របតាមការកំណត់ដែលបានបញ្ជាក់។ ចូលបន្ទាត់ ដកចន្លោះបន្ថែម និងការបំបែកបន្ទាត់។

កូដមុនពេលធ្វើទ្រង់ទ្រាយ

កូដបន្ទាប់ពីការធ្វើទ្រង់ទ្រាយ

ប្តូរកន្សោម S- ផ្លាស់ប្តូរលំដាប់នៃ S-expressions នៃកម្រិតសំបុកដូចគ្នា។ ឧទាហរណ៍ ប្រសិនបើក្នុងឧទាហរណ៍មុន អ្នកប្រតិបត្តិពាក្យបញ្ជានេះ បន្ទាប់មក បញ្ជីនិង ឡាំដាកន្លែងផ្លាស់ប្តូរ៖

នៅចំណុច គ្រោងការណ៍ម៉ឺនុយមេ សូរ្យគ្រាសមានពាក្យបញ្ជា ស្វែងរកនិមិត្តសញ្ញាគ្រោងការណ៍(ក៏មាននៅ បញ្ជា (Ctrl) + F12) នៅពេលអ្នកហៅពាក្យបញ្ជានេះ ប្រអប់មួយលេចឡើងដែលអនុញ្ញាតឱ្យអ្នកស្វែងរកនិយមន័យនៃមុខងារដែលចង់បានយ៉ាងឆាប់រហ័ស។ ឧទាហរណ៍ យើង​មាន​មុខងារ​កំណត់​ក្នុង​ឯកសារ​ប្រភព​កូដ sqrរៀងគ្នាប្រសិនបើនៅក្នុងវាល បញ្ចូលបុព្វបទនិមិត្តសញ្ញា៖បញ្ចូលប្រអប់ sqបន្ទាប់មកនៅក្នុងវាល និមិត្តសញ្ញាដែលត្រូវគ្នា។មុខងារដែលបានកំណត់ក្នុងកូដនឹងបង្ហាញ sqr:

ប្រសិនបើមកពីវាល និមិត្តសញ្ញាដែលត្រូវគ្នា។ជ្រើសរើសមុខងារនេះ ទស្សន៍ទ្រនិចក្នុងកម្មវិធីនិពន្ធនឹងផ្លាស់ទីដោយស្វ័យប្រវត្តិទៅកន្លែងដែលវាត្រូវបានកំណត់។ ឧបមាថាយើងមានឯកសារជាច្រើនដែលមានកូដប្រភព ហើយមុខងារមួយត្រូវបានកំណត់ក្នុងនីមួយៗ sqr. បន្ទាប់មកបន្ថែមពីលើមុខងារខ្លួនវាអ្នកក៏ត្រូវជ្រើសរើសឯកសារផងដែរ។ សម្រាប់គោលបំណងនេះប្រើទម្រង់ និយមន័យដែលក្នុងនោះ បន្ទាប់ពីជ្រើសរើសមុខងារមួយ ព័ត៌មានអំពីជម្រើសសម្រាប់និយមន័យរបស់វាពីឯកសារផ្សេងៗគ្នាត្រូវបានដាក់៖

ការបកស្រាយ

នៅពេលដែលកូដត្រូវបានសរសេរ អ្នកចង់ពិនិត្យមើលវា ឧទាហរណ៍ ដោយដំណើរការវានៅលើអ្នកបកប្រែ គ្រោងការណ៍. កម្មវិធីជំនួយ SchemeScriptផ្តល់ឱកាសសម្រាប់រឿងនេះផងដែរ។ ជាបឋមចំណុចនេះ។ គ្រោងការណ៍ម៉ឺនុយមេ សូរ្យគ្រាសដែល​មាន​ពាក្យ​បញ្ជា​សម្រាប់​ជ្រើសរើស​អ្នក​បក​ប្រែ​ដែល​ចង់​បាន និង​គ្រប់គ្រង​វា៖ ចាប់ផ្ដើម ចាប់ផ្ដើម​ឡើង​វិញ និង​បញ្ឈប់ (ចាំបាច់​ប្រសិនបើ​កម្មវិធី​បង្កក ឧទាហរណ៍ រង្វិលជុំ​អស់កល្បជានិច្ច។ គ្រោងការណ៍អាច​បង្កើន​ប្រសិទ្ធភាព​ឡើងវិញ​កន្ទុយ រង្វិលជុំ​ដ៏​អស់កល្ប​គឺ​ពិត​ជា​អស់កល្ប​ជានិច្ច)។

រូបបង្ហាញពីជម្រើសសម្រាប់ជ្រើសរើសអ្នកបកប្រែ។ ជាដំបូងនៃការទាំងអស់នេះ - អ្នកបកប្រែខាងក្រៅ- ភ្ជាប់អ្នកបកប្រែខាងក្រៅដែលបានដំឡើងនៅលើម៉ាស៊ីនដូចគ្នាជាមួយ សូរ្យគ្រាស. អ្នកបកប្រែ គ្រោងការណ៍ឥឡូវនេះជាច្រើន, នៅក្រោម វីនដូអ្នកអាចប្រើឧទាហរណ៍ គ្រោងការណ៍ Chez.

បង្កប់ Kawa- រួមបញ្ចូលនៅក្នុងការដឹកជញ្ជូន SchemeScriptអ្នកបកប្រែ កាវ៉ា. កំពុងត្រូវបានអភិវឌ្ឍក្រោមការឧបត្ថម្ភ GNUនៅលើ ចាវ៉ាក្របខ័ណ្ឌសម្រាប់ការអនុវត្តភាសាកម្រិតខ្ពស់ និងថាមវន្ត កូដដែលត្រូវបានចងក្រងជា Java bytecode. ធ្វើឱ្យវាងាយស្រួលប្រើក្នុងកូដ គ្រោងការណ៍ ថ្នាក់ Javaដូច្នេះហើយ ល្អជាភាសាស្គ្រីប។ ក្រៅ​ពី​អ្នក​បក​ប្រែ វា​ក៏​មាន​កម្មវិធី​ចងក្រង​ដែល​អនុញ្ញាត​ឱ្យ​ប្រើ​ជា​ភាសា​ពេញ​លេញ​សម្រាប់ JVMរបៀបដែលពួកគេត្រូវបានប្រើ ស្កាឡា, Groovyនិង Clojure. អ្នកចូលចិត្តខ្លះប្រើ កាវ៉ាសម្រាប់ការបង្កើតកម្មវិធីដែលកំពុងដំណើរការនៅលើវេទិកា ប្រព័ន្ធប្រតិបត្តិការ Android.

អ្នកបកប្រែពីចម្ងាយ- អនុញ្ញាតឱ្យអ្នកជ្រើសរើសម៉ាស៊ីនមេពិសេសដែលដំណើរការលើម៉ាស៊ីនផ្សេងទៀតជាអ្នកបកប្រែ។ ជាឧទាហរណ៍ នៅវិទ្យាស្ថានមួយ ពេលបង្រៀនសរសេរកម្មវិធី អ្នកអាចដំឡើងម៉ាស៊ីនមេពិសេសដែលអាចបកស្រាយបាន។ គ្រោងការណ៍- កូដ។ អន្តរកម្ម SchemeScriptហើយអ្នកបកប្រែនេះនឹងត្រូវបានអនុវត្តតាមបណ្តាញ។

អ្នកបកប្រែ SISC- ភ្ជាប់មកជាមួយ REPLពី អ្នកបកប្រែទីពីរនៃកូដគ្រោងការណ៍- បានសរសេរនៅក្នុង ចាវ៉ាអ្នកបកប្រែ គ្រោងការណ៍.

ឧទាហរណ៍បន្ទាប់ពីជ្រើសរើសអ្នកបកប្រែដែលកំពុងដំណើរការ កាវ៉ាវាត្រូវតែត្រូវបានបើកដំណើរការដោយប្រើពាក្យបញ្ជាម៉ឺនុយសមស្រប ឬប៊ូតុងពីបន្ទះបើកដំណើរការរហ័ស៖

ក្រុមនៃពាក្យបញ្ជាត្រូវបានប្រើដោយផ្ទាល់ដើម្បីផ្ញើផ្នែកនៃកូដសម្រាប់ការបកស្រាយ អ៊ីវ៉ាល។ពីម៉ឺនុយបរិបទកម្មវិធីកែកូដ៖

ក្រុមនេះមានពាក្យបញ្ជាដូចខាងក្រោមៈ

ការបញ្ចេញមតិ Eval កំពូល- ប្រតិបត្តិ​កន្សោម​កម្រិត​កំពូល​ដែល​ទាក់ទង​នឹង​ចំណុច​ដែល​ទស្សន៍ទ្រនិច​ស្ថិតនៅ។ ប្រសិនបើទស្សន៍ទ្រនិចនៅពីមុខតង្កៀបបិទចុងក្រោយ - មើលរូប

ហើយពាក្យបញ្ជានេះត្រូវបានប្រតិបត្តិ និយមន័យមុខងារនឹងត្រូវបានផ្ទុកទៅក្នុងអ្នកបកប្រែ sqr.

Eval កន្សោមមុន។- ប្រតិបត្តិកន្សោមមុនទាក់ទងនឹងទស្សន៍ទ្រនិច។ ប្រសិនបើនៅក្នុងឧទាហរណ៍

ប្រតិបត្តិពាក្យបញ្ជានេះ កន្សោមនឹងត្រូវបានផ្ទុកទៅក្នុងអ្នកបកប្រែ (* x x)ដែលគាត់នឹងមិនអាចបំពេញបានទេព្រោះ ប៉ារ៉ាម៉ែត្រ xមិនត្រូវបានកំណត់៖

ផ្ទុកឯកសារនៅក្នុងអ្នកបកប្រែ- ផ្ទុកឯកសារទៅក្នុងអ្នកបកប្រែ i.e. ប្រតិបត្តិមាតិកាទាំងមូលនៃឯកសារនៅក្នុងអ្នកបកប្រែ។

សូមក្រឡេកមើលឧទាហរណ៍៖ មានកូដសម្រាប់មុខងារដែលគណនា n- e លេខ Fibonacci ។ យើងចង់គណនាលេខ Fibonacci ទីបួន៖

ប្រសិនបើអ្នកដំណើរការពាក្យបញ្ជា Eval កន្សោមមុន។បន្ទាប់ពី (ហ្វីប ៤)បន្ទាប់មកកំហុសមួយនឹងត្រូវបានបង្កើត៖ អ្នកបកប្រែមិនស្គាល់និយមន័យនៃមុខងារ សរសៃ:

ប្រសិនបើអ្នកដំណើរការពាក្យបញ្ជា ផ្ទុកឯកសារនៅក្នុងអ្នកបកប្រែហើយបន្ទាប់មក - Eval កន្សោមមុន។បន្ទាប់មកការគណនានឹងដំណើរការត្រឹមត្រូវ៖

គាំទ្រ កាវ៉ា REPL

អាន-វាយតម្លៃ-បោះពុម្ពរង្វិលជុំ (REPL)- បរិយាកាសសរសេរកម្មវិធីអន្តរកម្មសាមញ្ញ ក្នុងបរិយាកាសនេះ អ្នកប្រើប្រាស់អាចបញ្ចូលកន្សោមដែលនឹងត្រូវបានគណនាភ្លាមៗ ហើយលទ្ធផលគណនានឹងត្រូវបានបង្ហាញដល់អ្នកប្រើប្រាស់។

រួមបញ្ចូល កាវ៉ាបរិយាកាសបែបនេះត្រូវបានរួមបញ្ចូល។ ឧទាហរណ៍ អ្នកអាចកំណត់មុខងារមួយដោយផ្ទាល់នៅក្នុងកុងសូលជាមួយនឹងអ្នកបកប្រែដែលកំពុងដំណើរការ ផលបូកហើយគណនាតម្លៃរបស់វាទាក់ទងទៅនឹងអាគុយម៉ង់មួយចំនួន (បន្ទាត់នីមួយៗត្រូវបានចាត់ទុកជាកន្សោមតែមួយ)៖

លើសពីនេះទៀតក៏មានទិដ្ឋភាពផងដែរ។ Kawa Stack Traceដែលអនុញ្ញាតឱ្យអ្នកត្រួតពិនិត្យស្ថានភាពនៃជង់ការហៅទូរសព្ទខណៈពេលកំពុងបំបាត់កំហុស។ ដើម្បីយល់ពីរបៀបប្រើវា សូមក្លែងធ្វើកំហុស ឧទាហរណ៍ ហៅមុខងារដែលគណនាការ៉េនៃលេខពីអាគុយម៉ង់ "ss":

កាវ៉ានឹងមិនអាចវាយតម្លៃតម្លៃនៃកន្សោមនេះបានទេ ហើយនឹងបង្ហាញកំហុសការបំប្លែងប្រភេទ៖

ដានជង់នឹងមើលទៅដូចនេះ៖

ប្រសិនបើចុចក្នុងទម្រង់ Kawa Stack Traceប៊ូតុង បង្ហាញតែស៊ុមគ្រោងការណ៍ប៉ុណ្ណោះ។បន្ទាប់មក stacktrace ពេញលេញនឹងត្រូវបានបង្ហាញ រួមទាំងស្ថានភាពពិសេសនៅក្នុងកូដដែលបានសរសេរនៅក្នុង ចាវ៉ានិងមិនគ្រាន់តែនៅលើ គ្រោងការណ៍:

ការកំណត់

កម្មវិធីជំនួយ គ្រោងការណ៍គឺជាផ្នែកបន្ថែមដែលអាចបត់បែនបានសម្រាប់បរិយាកាសអភិវឌ្ឍន៍ សូរ្យគ្រាស. ដើម្បីយល់ពីសមត្ថភាពរបស់វាទាំងអស់ អ្នកពិតជាគួរពិចារណាលើការកំណត់។ មែកធាងការកំណត់ចាប់ផ្តើមដោយក្រុម គ្រោងការណ៍:

នៅលើទំព័រ គ្រោងការណ៍ការកំណត់ខាងក្រោមអាចប្រើបាន៖
- ផ្ទាំងបង្ហាញជាមួយ- អនុញ្ញាតឱ្យអ្នកកំណត់ទទឹង (ក្នុងចន្លោះ) សម្រាប់បង្ហាញតួអក្សរផ្ទាំង។ វាដំណើរការតែក្នុងករណីដែលក្រុមមិនជាធម្មតាជំនួសផ្ទាំងដោយដកឃ្លា។
- បើកការកែសម្រួលរចនាសម្ព័ន្ធ- ប្រអប់ធីកគឺទទួលខុសត្រូវចំពោះការបើក/បិទកម្មវិធីនិពន្ធដែលមានរចនាសម្ព័ន្ធ គ្រោងការណ៍. កម្មវិធីនិពន្ធដែលមានរចនាសម្ព័ន្ធមិនដំណើរការជាមួយនិមិត្តសញ្ញាទេ ប៉ុន្តែជាមួយនឹងកន្សោម S ទាំងមូល។ ទាំងនោះ។ ដោយ backspaceជាឧទាហរណ៍ កន្សោម S ទាំងមូលនឹងត្រូវបានលុបក្នុងពេលតែមួយ។ ផងដែរ នៅពេលបើកវង់ក្រចក ការបិទជាគូនឹងត្រូវបានបន្ថែមភ្លាមៗ។
- រក្សាទុក...និង ផ្ទុក...អនុញ្ញាតឱ្យអ្នករក្សាទុកនិងច្រាសមកវិញ - ផ្ទុក - ការកំណត់ SchemeScriptទៅ/ពី .epf-ឯកសារ/ក។

ទំព័រ រូបរាងទទួលខុសត្រូវចំពោះរូបរាងរបស់កម្មវិធីនិពន្ធ។ អនុញ្ញាតឱ្យអ្នកកំណត់ពណ៌ដែលតង្កៀបដែលបានផ្គូផ្គងនឹងត្រូវបានបន្លិច (ក្រុម វង់ក្រចកដែលត្រូវគ្នា។), ពណ៌ផ្ទៃខាងក្រោយកម្មវិធីនិពន្ធ (ក្រុម ផ្ទៃខាងក្រោយ) និងពណ៌ដែលប្រើសម្រាប់ការបន្លិចវាក្យសម្ព័ន្ធ (ក្រុម ផ្ទៃខាងមុខ).

រូបខាងលើបង្ហាញពីឧទាហរណ៍នៃការកំណត់ពណ៌ខៀវសម្រាប់ខ្សែអក្សរថេរ។

ទំព័រ មតិយោបល់ទទួលខុសត្រូវចំពោះការបង្ហាញមតិ។ វាមានការកំណត់ដូចខាងក្រោមៈ
- បុព្វបទសម្រាប់មតិយោបល់- បុព្វបទដែលមតិយោបល់នឹងចាប់ផ្តើម។ តាមលំនាំដើម - សញ្ញាក្បៀសពីរ ( ;; ).
- ខ្លឹមសារនៃវាលអ្នកនិពន្ធ- មាតិកានៃវាលអ្នកនិពន្ធ អនុញ្ញាតឱ្យអ្នកបញ្ជាក់ឈ្មោះ/នាមត្រកូលរបស់អ្នកនិពន្ធកូដ។
- មាតិកានៃកន្លែងរក្សាសិទ្ធិ- មាតិកានៃវាលរក្សាសិទ្ធិអនុញ្ញាតឱ្យអ្នកបញ្ជាក់ព័ត៌មានរក្សាសិទ្ធិ។
- បន្តមតិដោយស្វ័យប្រវត្តិពីជួរមុន។- ប្រសិនបើប្រអប់ធីកនេះត្រូវបានធីក នោះនៅពេលអ្នកចុច បញ្ចូលបន្ទាប់ពីមតិយោបល់លើបន្ទាត់ថ្មី មតិយោបល់នឹងបន្ត ពោលគឺឧ។ បន្ទាត់ថ្មីនឹងចាប់ផ្តើមជាមួយ ;; .

ទំព័រ គ្រាប់ចុច Eval រហ័សអនុញ្ញាតឱ្យអ្នកបញ្ជាក់ពាក្យបញ្ជា (ឧទាហរណ៍ឈ្មោះ គ្រោងការណ៍-functions) ដែលនឹងត្រូវបានប្រតិបត្តិនៅពេលដែលបន្សំក្តារចុចដែលត្រូវគ្នាត្រូវបានចុច។ តាមលំនាំដើមសម្រាប់អ្នករាល់គ្នា គន្លឹះ Eval លឿន 0...9ត្រូវគ្នាទៅនឹងបន្សំគន្លឹះ Alt-K, 0...9. នៅពេលប្រើកម្មវិធីជំនួយយ៉ាងសកម្ម អ្នកអភិវឌ្ឍន៍នីមួយៗបង្កើតសំណុំនៃឈ្មោះវិធីសាស្ត្រដែលគាត់ហៅជានិច្ច (ឧទាហរណ៍ វិធីសាស្ត្រ សាកល្បងដើម្បីដំណើរការកូដសាកល្បងមួយចំនួន)។ ដូច្នោះហើយ ការហៅវិធីសាស្ត្រទាំងនេះអាចត្រូវបានកំណត់ទៅផ្លូវកាត់ក្តារចុច។

ទំព័រ ការចូលបន្ទាត់បម្រើដើម្បីកំណត់រចនាសម្ព័ន្ធការចូលបន្ទាត់ដែលបានបន្ថែមនៅពេលសរសេរ/ធ្វើទ្រង់ទ្រាយកូដ។ សម្រាប់ពាក្យគន្លឹះនីមួយៗ អ្នកអាចបញ្ជាក់ការកំណត់ការចូលបន្ទាត់ដែលបានអនុវត្តចំពោះអាគុយម៉ង់របស់វា។ តារាងការកំណត់ត្រូវបានរៀបចំដូចខាងក្រោម: នៅក្នុងជួរឈរ និមិត្តសញ្ញាពាក្យគន្លឹះត្រូវបានបញ្ជាក់ ការចូលបន្ទាត់ដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធ។ ជួរឈរ គ្រោងការណ៍ចូលបន្ទាត់បញ្ជាក់គ្រោងការណ៍ចូលបន្ទាត់។ គ្រោងការណ៍មានដូចខាងក្រោម៖
- លំនាំដើម- កន្សោមរងទាំងអស់ត្រូវបានតម្រឹមនៅខាងក្រោមតួអក្សរទីមួយនៃកន្សោមជុំវិញរបស់វា។
- និយមន័យ- កន្សោមរងទាំងអស់ត្រូវបានតម្រឹមជាកន្សោមស៊ុម + ចន្លោះ 2 (ស្រដៀងទៅនឹងការរចនាទម្រង់ កំណត់).
- ប្រសិនបើ- កន្សោមរងទាំងអស់ត្រូវបានតម្រឹមជាកន្សោមស៊ុម + 4 ចន្លោះ (ស្រដៀងទៅនឹងការរចនាទម្រង់ ប្រសិនបើ).
- គ្មាន- គ្មានការចូលបន្ទាត់ទេ កន្សោមរងទាំងអស់ត្រូវបានតម្រឹមតាមរបៀបដូចគ្នានឹងកន្សោមជុំវិញ។
- ជាមួយ- ទម្រង់តម្រឹមដ៏ស្មុគស្មាញបំផុត ប្រើសម្រាប់មុខងារដែលមានឈ្មោះវែង និង/ឬបញ្ជីប៉ារ៉ាម៉ែត្រធំ។ ទីមួយ - ប៉ារ៉ាម៉ែត្រ​ត្រូវ​បាន​ចូល​បន្ទាត់​ដោយ​មាន​ចន្លោះ​ចំនួន 4 សល់ - ជាមួយ​ចន្លោះ 2 ជួរ ព័ត៌មានជំនួយកំណត់តម្លៃ . ឧទាហរណ៍នៃការប្រើប្រាស់ទម្រង់នេះគឺការតម្រឹមពាក្យគន្លឹះ អនុញ្ញាតឱ្យ:

ទំព័រ អ្នកបកប្រែអនុញ្ញាតឱ្យអ្នកកំណត់ការកំណត់សម្រាប់ការបកស្រាយកូដ និងការញែក។ រហូតមកដល់ពេលនេះមានការកំណត់ពីរបែបនេះ៖ - ប្រសិនបើប្រអប់ធីកត្រូវបានធីក នោះឯកសារនឹងត្រូវបានរក្សាទុកមុនពេលផ្ញើសម្រាប់ការបកស្រាយ។ ជៀសវាង​ការ​ចងចាំ​ដើម្បី​រក្សា​ទុក​ការ​ផ្លាស់ប្ដូរ​មុន​នឹង​បកស្រាយ​វា។
- ជុំវិញកន្សោមដោយ (ចាប់ផ្តើម...)- ថាតើត្រូវរៀបចំកន្សោមដែលបានបកស្រាយក្នុងទម្រង់ឬអត់ (ចាប់ផ្តើម...). ដូចដែលខ្ញុំយល់ហើយ ជម្រើសនេះគឺចាំបាច់ដើម្បីធ្វើការជាមួយអ្នកបកប្រែមួយចំនួនដែលអាចប្រតិបត្តិ S-expression មួយក្នុងពេលតែមួយ។

ទំព័រ អ្នកបកប្រែខាងក្រៅអនុញ្ញាតឱ្យអ្នកបញ្ជាក់អ្នកបកប្រែខាងក្រៅដែលត្រូវប្រើ។ អ្នកអាចកំណត់ជម្រើសដូចខាងក្រោមៈ
- ឈ្មោះអ្នកបកប្រែ- ឈ្មោះអ្នកបកប្រែ
- បន្ទាត់ពាក្យបញ្ជា- បន្ទាត់ពាក្យបញ្ជា រួមទាំងផ្លូវពេញលេញទៅកាន់អ្នកបកប្រែ និងជម្រើសមួយចំនួនដែលវាត្រូវការដើម្បីដំណើរការ។
- ថតការងារ- ថតឯកសារធ្វើការរបស់អ្នកបកប្រែ គឺជាថតដែលទាក់ទងនឹងការដែលវានឹងគណនាផ្លូវឯកសារ។
- កំហុស Regexp- កន្សោមធម្មតាសម្រាប់ការញែកកំហុស។ អ្នកបកប្រែបង្កើតសារកំហុសក្នុងទម្រង់មួយចំនួនរបស់វា SchemeScriptត្រូវតែដឹងពីរបៀបទាញយកព័ត៌មានអំពីទីតាំងនៃកំហុសនៅក្នុងកូដប្រភពពីបន្ទាត់នេះដោយមានកំហុស។ ឧទាហរណ៍សម្រាប់ កាវ៉ាកន្សោមធម្មតានេះគឺ៖ [\ t ]+ នៅ [^(]+\((.+):(+))\).

រូបខាងលើបង្ហាញពីអ្នកបកប្រែខាងក្រៅដែលកំពុងដំណើរការនៅក្នុងកុងសូល។ គ្រោងការណ៍ chez.

ទំព័រ អ្នកបកប្រែពីចម្ងាយមានការកំណត់សម្រាប់ភ្ជាប់ទៅអ្នកបកប្រែពីចម្ងាយ - អ្នកបកប្រែដែលកំពុងដំណើរការជាម៉ាស៊ីនមេ និងស្តាប់ច្រកជាក់លាក់មួយ។ ដូច្នោះហើយ ទំព័រនេះអនុញ្ញាតឱ្យអ្នកបញ្ជាក់ឈ្មោះម៉ាស៊ីន និងច្រកដែលអ្នកបកប្រែពីចម្ងាយនេះកំពុងដំណើរការ។

ទំព័រ ផ្នែកបន្ថែម Lexicalបម្រើដើម្បីគ្រប់គ្រងផ្នែកបន្ថែម lexical គ្រោងការណ៍. មានធាតុពីរ៖
- ចាត់ទុកតង្កៀប (ឬ ()) ជាឪពុកម្តាយ- ថាតើត្រូវព្យាបាលអង្កាញ់ និងតង្កៀបក្នុងវិធីដូចគ្នានឹងរាងមូលដែរឬទេ។ ទាំងនោះ។ ថាតើត្រូវបន្លិចគូ និងថាតើត្រូវគ្រប់គ្រងការផ្គូផ្គងតង្កៀប។
- ទទួលយកសញ្ញា (#) ជាផ្នែកកំណត់អត្តសញ្ញាណ- ថាតើត្រូវអនុញ្ញាតឱ្យប្រើនិមិត្តសញ្ញា hash ជាផ្នែកនៃឈ្មោះអត្តសញ្ញាណ (ដូចដែលខ្ញុំយល់ហើយ វាមិនដំណើរការសម្រាប់អ្នកបកប្រែទាំងអស់ គ្រោងការណ៍).

ទំព័រចុងក្រោយ - វាក្យសម្ពន្ធ- អនុញ្ញាតឱ្យអ្នកគ្រប់គ្រងដំណើរការនៃវាក្យសម្ព័ន្ធភាសាដោយបត់បែន - បន្ថែម និងលុបរចនាសម្ព័ន្ធចេញពីក្រុម ដែលប៉ះពាល់ដល់ការបន្លិចវាក្យសម្ព័ន្ធនៅពេលកែសម្រួល។ មាន 5 ក្រុមដែលបានកំណត់នៅលើទំព័រនេះ:
- កំណត់- និយមន័យមានពាក្យគន្លឹះដែលនិយមន័យចាប់ផ្តើមឧទាហរណ៍ - កំណត់.
- ឈ្មោះពិសេស- ប៉ារ៉ាម៉ែត្រដែលមានឈ្មោះពិសេសដូចជា #!គន្លឹះ#សម្រាក.
- ទម្រង់ពិសេស- ទម្រង់ពិសេសដូចជា ប្រសិនបើ, និង, អនុញ្ញាតឱ្យល។ តាមពិត - ផ្នែកសំខាន់នៃពាក្យគន្លឹះនៃភាសាសរសេរកម្មវិធី។
- អ្នកផ្លាស់ប្តូរ- អ្នកផ្លាស់ប្តូរ, i.e. មុខងារដែលផ្លាស់ប្តូរស្ថានភាព។ ត្រូវបានបន្លិចខុសពីមុខងារដែលមិនផ្លាស់ប្តូរស្ថានភាព។
- ថេរ- ថេរដូចជា #!អេហ្វ, #!nulល។ អ្នកក៏អាចបន្ថែម #tនិង #f.

អ្នកអាចបន្ថែមធាតុផ្ទាល់ខ្លួនរបស់អ្នកទៅក្រុមនីមួយៗ ក៏ដូចជាលុបធាតុដែលមានស្រាប់ផងដែរ។ នេះគឺងាយស្រួលណាស់នៅពេលអភិវឌ្ឍខ្លួនឯង DSLផ្អែកលើ គ្រោងការណ៍និងធ្វើការជាមួយវានៅក្នុងកម្មវិធីនិពន្ធ។ បន្ថែមពីលើការបន្ថែមវ៉ារ្យ៉ង់យ៉ាងច្បាស់ អ្នកអាចបញ្ជាក់កន្សោមធម្មតានៅក្នុងក្រុមនីមួយៗ ដើម្បីផ្គូផ្គងសមាជិករបស់វា។

នេះជាអ្វីដែលនឹងកើតឡើង ប្រសិនបើអ្នកបន្ថែមវាទៅក្នុងក្រុម កំណត់ពាក្យគន្លឹះ pavel:

សេចក្តីសន្និដ្ឋាន

យើងបានក្រឡេកមើលឧបករណ៍ដែលសំបូរទៅដោយមុខងារ និងអាចប្ដូរតាមបំណងបានខ្ពស់សម្រាប់ការអភិវឌ្ឍន៍ជាភាសាសរសេរកម្មវិធី គ្រោងការណ៍នៅក្នុងបរិស្ថាន សូរ្យគ្រាស. ឧបករណ៍នេះអនុញ្ញាតឱ្យអ្នកកែសម្រួលកូដប្រភព និងធ្វើអន្តរកម្មជាមួយអ្នកបកប្រែជាច្រើនប្រភេទ រួមទាំងកម្មវិធីដែលភ្ជាប់មកជាមួយ និងពីចម្ងាយផងដែរ។ ប្រសិនបើយើងប្រៀបធៀបសមត្ថភាពរបស់កម្មវិធីជំនួយនេះជាមួយនឹងឧបករណ៍អភិវឌ្ឍន៍នៅលើ គ្រោងការណ៍ឧទាហរណ៍នៅក្រោម អេម៉ាក់បន្ទាប់មកពួកវាគឺអាចប្រៀបធៀបបាន (លើកលែងតែអវត្តមាននៃរឿងតូចតាចដូចជាការជំនួសពាក្យគន្លឹះ ឡាំដាទៅនិមិត្តសញ្ញានៃអក្សរក្រិកឡាំដា) ។ អ្នកសរសេរកម្មវិធីណាដែលមិនចង់ធ្វើជាម្ចាស់ អេម៉ាក់អាចប្រើ សូរ្យគ្រាសដើម្បីចាប់ផ្តើមជាមួយកម្មវិធីមុខងារ ឬភាសា គ្រោងការណ៍ក៏ដូចជាសម្រាប់ការដោះស្រាយបញ្ហា និងលំហាត់ពី SICP. ដូចគ្នានេះផងដែរ, ប្រហែលជានរណាម្នាក់នឹងចាប់អារម្មណ៍លើប្រធានបទនៃការអភិវឌ្ឍន៍នៅលើ គ្រោងការណ៍ក្រោម JVMការប្រើប្រាស់ កាវ៉ា.

ខ្ញុំ​ចង់​និយាយ​អរគុណ​អ្នក​និពន្ធ SchemeScript - Dominique Boucherដែលបង្កើតឧបករណ៍ប្រើប្រាស់នេះដោយឥតគិតថ្លៃ។ វាគួរឱ្យកត់សម្គាល់ថាកម្មវិធីជំនួយ SchemeScriptគឺជាគម្រោងប្រភពបើកចំហ ហើយអ្នកសរសេរកម្មវិធីណាមួយអាចជួយអភិវឌ្ឍវាដោយបន្ថែមលក្ខណៈពិសេសដែលពួកគេត្រូវការ។

ZY ការ​គិត​ក៏​បាន​កើត​ឡើង​ដូច​គ្នា។ គ្រោងការណ៍វាពិបាកក្នុងការសិក្សាព្រោះវាមិនគួរឱ្យចាប់អារម្មណ៍ - មិនមានកិច្ចការគួរឱ្យចាប់អារម្មណ៍ទេ។ ការគណនាគណិតវិទ្យាធម្មតាគឺមិនចាប់អារម្មណ៍ទេ ហើយសូម្បីតែការងារសាមញ្ញជាមួយក្រាហ្វិក ជាឧទាហរណ៍ ទាមទារវេទិកា និងបណ្ណាល័យ។ វាជាការគួរឱ្យចាប់អារម្មណ៍ជាងក្នុងការរៀនភាសាមួយដោយអនុវត្តវាទៅនឹងមុខវិជ្ជាមួយចំនួន។ ដូច្នេះ SchemeScript + Kawa + Eclipseអាចត្រូវបានប្រើជាវេទិកាសិក្សា។ សូមមើលឧទាហរណ៍ពី SchemeScript(នៅក្នុងប្រអប់ដាក់ឯកសារ ឧទាហរណ៍) មានរឿងគួរឱ្យចាប់អារម្មណ៍មួយចំនួននៅទីនោះ។

ជាធម្មតា អ្នកអាចទុកមតិយោបល់របស់អ្នក ឬសួរសំណួរទៅកាន់អ្នកសរសេរកម្មវិធី Severe Chelyabinsk ។

ខ្ញុំចូលចិត្តសារ -

សេចក្តីផ្តើម

នៅពេលបង្កើតគ្រោងការណ៍ ការសង្កត់ធ្ងន់គឺទៅលើភាពឆើតឆាយ និងភាពសាមញ្ញនៃភាសា។ ទស្សនវិជ្ជានៃភាសាគឺមានលក្ខណៈតិចតួចបំផុត។ គោលដៅរបស់វាមិនមែនដើម្បីបញ្ចូលគ្នានូវសំណង់ និងឧបករណ៍ដែលមានប្រយោជន៍ផ្សេងៗនោះទេ ប៉ុន្តែផ្ទុយទៅវិញ ដើម្បីលុបបំបាត់ភាពទន់ខ្សោយ និងដែនកំណត់ដែលចាំបាច់ត្រូវតែបន្ថែមមុខងារថ្មីៗទៅក្នុងភាសា។ ជាលទ្ធផល គ្រោងការណ៍មានអប្បរមានៃសំណង់បឋម និងអនុញ្ញាតឱ្យអ្នកបង្ហាញពីអ្វីដែលអ្នកចង់បានដោយការកសាងលើពួកវា។ ជាឧទាហរណ៍ យើងអាចចង្អុលបង្ហាញថា ភាសាប្រើយន្តការ 2 សម្រាប់រៀបចំរង្វិលជុំ៖

  1. "សំណល់" ឬ "កន្ទុយ" ឡើងវិញ កន្ទុយ)
  2. វិធីសាស្រ្តដដែលៗ (ដែលប្រើអថេរបណ្តោះអាសន្នដើម្បីរក្សាទុកលទ្ធផលកម្រិតមធ្យម)។

គ្រោងការណ៍គឺជាគ្រាមភាសា Lisp ដំបូងគេដែលប្រើវិសាលភាពអថេរឋិតិវន្តទាំងស្រុង (ជាជាងថាមវន្ត) ធានាការបង្កើនប្រសិទ្ធភាពនៃការបង្កើតឡើងវិញកន្ទុយ និងគាំទ្រប្រភេទទិន្នន័យប៊ូលីន (#t និង #f ជំនួសឱ្យ T និង NIL ធម្មតា) ។ វាក៏ជាភាសាមួយក្នុងចំណោមភាសាដំបូងគេដែលគាំទ្រដោយផ្ទាល់ ការបន្ត(ភាសាអង់គ្លេស) ការបន្ត) ចាប់តាំងពីការបញ្ជាក់ R^5RS ភាសាបានទទួលនូវមធ្យោបាយដ៏មានអានុភាព និងងាយស្រួលនៃការសរសេរម៉ាក្រូ ដោយផ្អែកលើលំនាំបំប្លែងវាក្យសម្ព័ន្ធក្នុងលក្ខណៈ "អនាម័យ"។ អនាម័យ_ម៉ាក្រូ) គ្រោងការណ៍ក៏អនុវត្ត "ការប្រមូលសំរាម" ផងដែរ។ ការប្រមូលសំរាម) ពោលគឺការបញ្ចេញអង្គចងចាំដោយស្វ័យប្រវត្តិពីវត្ថុដែលលែងប្រើ។

ភាសាប្រើបញ្ជី និងអារេមួយវិមាត្រ ("វ៉ិចទ័រ") ជារចនាសម្ព័ន្ធទិន្នន័យមូលដ្ឋាន។ ដោយអនុលោមតាមអប្បរមាដែលបានប្រកាស វាមិនមាន (មិនទាន់មាន) វាក្យសម្ព័ន្ធស្តង់ដារសម្រាប់គាំទ្ររចនាសម្ព័ន្ធដែលមានវាលដែលមានឈ្មោះ ក៏ដូចជាឧបករណ៍ OOP ទេ - ទាំងអស់នេះអាចត្រូវបានអនុវត្តដោយអ្នកសរសេរកម្មវិធីតាមចំណូលចិត្តរបស់គាត់ ទោះបីជាការអនុវត្តភាសាភាគច្រើនផ្តល់នូវយន្តការដែលត្រៀមរួចជាស្រេចក៏ដោយ។ .

ជាការចង់ដឹងចង់ឃើញ វាអាចត្រូវបានកត់សម្គាល់ថាឈ្មោះដើមនៃភាសា Schemer ត្រូវបានផ្លាស់ប្តូរទៅជាបច្ចុប្បន្នដោយសារតែការរឹតបន្តឹងលើប្រវែងនៃឈ្មោះឯកសារនៅក្នុង ITS ។

ឧទាហរណ៍

ប្រតិបត្តិការគណិតវិទ្យាសាមញ្ញ

(+ 2 (* 2 2 ) ) (+ 1 2 3 4 )

ការហៅប្រតិបត្តិការ (ឬមុខងារ) នីមួយៗត្រូវបានតំណាងជាបញ្ជី ដែលក្នុងនោះនិមិត្តសញ្ញាប្រតិបត្តិការ (ដែលជាឈ្មោះសំខាន់នៃមុខងារ) តែងតែកាន់កាប់ទីតាំងចាប់ផ្តើម។

ប្រភេទព្យាករណ៍

(លេខ? 5) (លេខ? "foo") (ខ្សែអក្សរ "foo")

តាមអនុសញ្ញា ឈ្មោះរបស់បុព្វបទទាំងអស់បញ្ចប់ដោយនិមិត្តសញ្ញា? .

ការត្រួតពិនិត្យសមភាព

(eq? "foo" "bar") (eq? 5 (+ 2 3) ) (eq? (eq? 2 3 ) (eq? 3 4 ))

ការកំណត់ម៉ាក្រូសម្រាប់ប្រតិបត្តិការរុញ/ប៉ុបប្រពៃណី

(កំណត់វាក្យសម្ព័ន្ធជំរុញ! (វាក្យសម្ព័ន្ធ-ច្បាប់ () ((រុញ! x l ) (កំណត់! l (cons x l ) ) ) (កំណត់វាក្យសម្ព័ន្ធ pop! (វាក្យសម្ព័ន្ធ-ច្បាប់ () ((លេចឡើង! l ) (អនុញ្ញាតឱ្យ ( (x (ឡាន l ) ) ) ( កំណត់ ! l ( cdr l ) ) x) ) ) )

ការកំណត់មុខងារ

;; ហ្វាក់តូរីល នៅក្នុងរចនាប័ទ្ម recursive (មិនមានប្រសិទ្ធភាព)(កំណត់ (ការពិត x) (ប្រសិនបើ (< x 3 ) x (* (fact (- x 1 ) ) x) ) ) ;; មុខងារ Fibonacci - ទាមទារការហៅឡើងវិញពីរដង(កំណត់ (fib n) (cond ((= n 0 ) 0 ) ((= n 1 ) 1 ) (else (+ (fib (- n 1) )) (fib (- n 2 ) ) ) ) ;; ផលបូកនៃធាតុបញ្ជីនៅក្នុងរចនាប័ទ្មគ្រោងការណ៍ធម្មតា។ ;; (មុខងារជំនួយរង្វិលជុំបង្ហាញរង្វិលជុំដោយប្រើ ;; កន្ទុយ recursion និង accumulator variable)(កំណត់ (បូកបញ្ជី x) (អនុញ្ញាតឱ្យរង្វិលជុំ ((x x) (n 0 ) ) (ប្រសិនបើ (null? x) n (រង្វិលជុំ (cdr x) (+ (ឡាន x) n) ) )) (ការពិត 14) (fib 10) (ផលបូក "(6 6 6 100) ) (ផលបូក (ផែនទី fib "(1 2 3 4 ) ))

និយមន័យមុខងារត្រូវតែអនុលោមតាមគំរូខាងក្រោម៖

(កំណត់ function_name (lambda (argument_list) (function_implementation))) ,

ទោះបីជានៅក្នុងការអនុវត្តទម្រង់អក្សរកាត់ត្រូវបានគេប្រើញឹកញាប់ជាងនេះ៖

(កំណត់ (អាគុយម៉ង់មុខងារឈ្មោះ) (អនុគមន៍_ការអនុវត្ត)) ។

អាយ/អូ

(សរសេរ (+ (អាន) (អាន)))

តំណភ្ជាប់

តំណភ្ជាប់ភាសារុស្ស៊ី

តំណភ្ជាប់ភាសាអង់គ្លេស

សៀវភៅសិក្សាជាភាសាអង់គ្លេស

  • ការបង្រៀនវីដេអូ "រចនាសម្ព័ន្ធ និងការបកស្រាយកម្មវិធីកុំព្យូទ័រ" Harold Abelson និង Gerald Jay Sussman
  • The Scheme Programming Language, R. Kent Dybvig

មូលនិធិវិគីមេឌា។

ឆ្នាំ ២០១០។

    សូមមើលអ្វីដែល "គ្រោងការណ៍ (ភាសាសរសេរកម្មវិធី)" មាននៅក្នុងវចនានុក្រមផ្សេងទៀត៖