គ្រោងការណ៍ដែលត្រូវបានគេស្គាល់ថា 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 ខាងក្រោមត្រូវបានប្រើ គណនាក្នុងសតិបណ្ដោះអាសន្នកូដប្រភព៖
(ដំឡើង-អន្ទាក់ (ធ្វើ
ហើយបន្ទាប់ពីហៅនីតិវិធីដែលបានបញ្ជាក់ អ្នកនឹងទទួលបាននៅក្នុងសតិបណ្ដោះអាសន្ន 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 សម្រាប់រៀបចំរង្វិលជុំ៖
- "សំណល់" ឬ "កន្ទុយ" ឡើងវិញ កន្ទុយ)
- វិធីសាស្រ្តដដែលៗ (ដែលប្រើអថេរបណ្តោះអាសន្នដើម្បីរក្សាទុកលទ្ធផលកម្រិតមធ្យម)។
គ្រោងការណ៍គឺជាគ្រាមភាសា 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
មូលនិធិវិគីមេឌា។
ឆ្នាំ ២០១០។
សូមមើលអ្វីដែល "គ្រោងការណ៍ (ភាសាសរសេរកម្មវិធី)" មាននៅក្នុងវចនានុក្រមផ្សេងទៀត៖