2.3 Programming ·§©À

²³æªº»¡¡Aµ{¦¡¥u¬O¤@°ï«ü¥Oªº¶°¦XÅé¡F¦Ó³o¨Ç«ü¥O¬O¥Î¨Ó§i¶D¹q¸£À³¸Ó­n§@¨º¨Ç¨Æ±¡¡C ¦³®É­Ô¡A«ü¥Oªº°õ¦æ¨ú¨M©ó«e¤@­Ó«ü¥Oªºµ²ªG¦Ó©w¡C ¥»³¹±N·|§i¶D§A¦³ 2 ­Ó¥D­nªº¤èªk¡AÅý§A¥i¥H¹ï¹q¸£¤U¹F³o¨Ç«ü¥Ü(instruction) ©Î ¡§©R¥O(commands)¡¨¡C ²Ä¤@­Ó¤èªk´N¬O ª½Ä¶¾¹(interpreter)¡A ¦Ó²Ä¤G­Ó¤èªk¬O ½s;¹(compiler)¡C ¥Ñ©ó¹ï©ó¹q¸£¦Ó¨¥¡A¤HÃþ»y¨¥ªº»y·N¹L©ó¼Ò½k¦Ó¤ÓÃø²z¸Ñ¡A ¦]¦¹©R¥O(commands)´N±`·|¥H¤@ºØ(©Î¦hºØ)µ{¦¡»y¨¥¼g¦¨¡A¥Î¨Ó«ü¥Ü¹q¸£©Ò­n°õ¦æªº¯S©w°Ê§@¬°¦ó¡C

2.3.1 ª½Ä¶¾¹

¨Ï¥Îª½Ä¶¾¹®É¡A©Ò¨Ï¥Îªºµ{¦¡»y¨¥´N¹³Åܦ¨¤@­Ó·|©M§A¤¬°ÊªºÀô¹Ò¡C ·í¦b©R¥O´£¥Ü¦C¤W¥´¤W©R¥O®É¡Aª½Ä¶¾¹·|§Y®É°õ¦æ¸Ó©R¥O¡C ¦b¤ñ¸û½ÆÂøªºµ{¦¡¤¤¡A¥i¥H§â©Ò¦³·Q¤U¹Fªº©R¥O²Î²Î¿é¤J¨ì¬YÀɮ׸̭±¥h¡A µM«á©I¥sª½Ä¶¾¹¥hŪ¨ú¸ÓÀɮסA¨Ã¥B°õ¦æ§A¼g¦b³o­ÓÀɮפ¤ªº«ü¥O¡C ¦pªG©Ò¤Uªº«ü¥O¦³¿ù»~²£¥Í¡A¤j¦h¼Æªºª½Ä¶¾¹·|¶i¤J°»¿ù¼Ò¦¡(debugger)¡A ¨Ã¥BÅã¥Ü¬ÛÃö¿ù»~°T®§¡A¥H«K¹ïµ{¦¡°£¿ù¡C

³oºØ¤è¦¡¦n³B¦b©ó¡G¥i¥H¥ß¨è¬Ý¨ì«ü¥Oªº°õ¦æµ²ªG¡A¥H¤Î¿ù»~¤]¥i¨³³t­×¥¿¡C ¬Û¹ïªº¡A³Ì¤jªºÃa³B«K¬O·í§A·Q§â§A¼gªºµ{¦¡¤À¨Éµ¹¨ä¥L¤H®É¡A³o¨Ç¤H¥²¶·­n¦³¸ò§A¤@¼Ëªºª½Ä¶¾¹¡C ¦Ó¥B§O§Ñ¤F¡A¥L­Ì¤]­n·|¨Ï¥Îª½Ä¶¾¹ª½Ä¶µ{¦¡¤~¦æ¡C ·íµM¨Ï¥ÎªÌ¤]¤£§Æ±æ¤£¤p¤ß«ö¿ùÁä¡A´N¶i¤J°»¿ù¼Ò¦¡¦Ó¤£ª¾©Ò±¹¡C ´N°õ¦æ®Ä²v¦Ó¨¥¡Aª½Ä¶¾¹·|¨Ï¥Î¨ì«Ü¦hªº°O¾ÐÅé¡A ¦Ó¥B³oÃþª½Ä¶¦¡µ{¦¡¡A³q±`¨Ã¤£·|¤ñ½s;¹©Ò½sĶªºµ{¦¡ªº§ó¦³®Ä²v¡C

µ§ªÌ­Ó¤H»{¬°¡A¦pªG§A¤§«e¨S¦³¾Ç¹L¥ô¦óµ{¦¡»y¨¥¡A³Ì¦n¥ý¾Ç¾Ç²ßª½Ä¶¦¡»y¨¥(interpreted languages)¡A ¹³¬O Lisp¡ASmalltalk¡APerl ©M Basic ³£¬O¡AUNIX® ªº shell ¹³¬O sh ©M csh ¥¦­Ì¥»¨­´N¬Oª½Ä¶¾¹¡A¨Æ¹ê¤W¡A«Ü¦h¤H³£¦b¥¦­Ì¦Û¤v¾÷¾¹¤W¼¶¼g¦U¦¡ªº shell ¡§script¡¨¡A ¨Ó¶¶§Q§¹¦¨¦U¶µ ¡§housekeeping(ºûÅ@)¡¨ ¥ô°È¡C UNIX ªº¨Ï¥Î­õ¾Ç¤§¤@´N¬O´£¨Ñ¤j¶qªº¤p¤u¨ã¡A ¨Ã¨Ï¥Î shell script ¨Ó²Õ¦X¹B¥Î³o¨Ç¤p¤u¨ã¡A¥H«K¤u§@§ó¦³®Ä²v¡C

2.3.2 FreeBSD ´£¨Ñªºª½Ä¶¾¹

¤U­±³oÃ䦳¥÷ FreeBSD Ports Collection ©Ò´£¨Ñªºª½Ä¶¾¹²M³æ¡AÁÙ¦³°Q½×¤@¨Ç¤ñ¸û¨üÅwªïªºª½Ä¶¦¡»y¨¥

¦Ü©ó¦p¦ó¨Ï¥Î Ports Collection ¦w¸Ëªº»¡©ú¡A¥i°Ñ¾\ FreeBSD Handbook ¤¤ªº Ports³¹¸`¡C

BASIC

BASIC ¬O Beginner's ALL-purpose Symbolic Instruction Code ªºÁY¼g¡C BASIC ©ó 1950 ¦~¥N¶}©lµo®i¡A³Ìªì¶}µo³o®M»y¨¥ªº¥Øªº¬O¬°¤F±Ð¾É·í®Éªº¤j¾Ç¾Ç¥Í¦p¦ó¼gµ{¦¡¡C ¨ì¤F 1980¡ABASIC¤w¸g¬O«Ü¦h programmer ²Ä¤@­Ó¾Ç²ßªºµ{¦¡»y¨¥¤F¡C ¦¹¥~¡ABASIC ¤]¬O Visual Basic ªº°ò¦¡C

FreeBSD Ports Collection ¤]¦³¦¬¿ý¬ÛÃöªº BASIC ª½Ä¶¾¹¡C Bywater Basic ª½Ä¶¾¹©ñ¦b lang/bwbasic¡C ¦Ó Phil Cockroft's Basic ª½Ä¶¾¹(¦­´Á¤]¥s Rabbit Basic)©ñ¦b lang/pbasic¡C

Lisp

LISP ¬O¦b 1950 ¦~¥N¶}©lµo®iªº¤@­Óª½Ä¶¦¡»y¨¥¡A¦Ó¥B LISP ´N¬O¤@ºØ ¡§number-crunching¡¨ languages(¨³³t¶i¦æ¤j¶q¹Bºâªºµ{¦¡»y¨¥)¡A¦b·í®Éºâ¬O¤@­Ó´¶¹Mªºµ{¦¡»y¨¥¡C LISP ªºªí¹F¤£¬O°ò©ó¼Æ¦r(numbers)¡A¦Ó¬O°ò©óªí(lists)¡C ¦Ó³Ì¯àªí¥Ü¥X LISP ¯S¦âªº¦a¤è´N¦b©ó¡G LISP ¬O ¡§List Processing¡¨ ªºÁY¼g¡C ¦b¤H¤u´¼¼z(Artificial Intelligence, AI)»â°ì¤W LISP ªº¦U¦¡À³¥Î«D±`´¶¹M¡C

LISP ¬O«D±`±j®«¥B½ÆÂøªºµ{¦¡»y¨¥¡A¦ý¬O¯ÊÂI¬Oµ{¦¡½X·|«D±`¤j¦Ó¥BÃø¥H¾Þ§@¡C

µ´¤j³¡¤Àªº LISP ª½Ä¶¾¹³£¥i¥H¦b UNIX ¨t²Î¤W¹B§@¡A·íµM FreeBSD ªº Ports Collection ¤]¦³¦¬¿ý¡C GNU Common Lisp ¦¬¿ý¦b lang/gcl¡A Bruno Haible ©M Michael Stoll ªº CLISP ¦¬¿ý¦b lang/clisp ¡A¦¹¥~ CMUCL(¥]§t¤@­Ó¤w¸g³Ì¨Î¤Æªº½s;¹)¡A ¥H¤Î¨ä¥L²¤Æª©ªº LISP ª½Ä¶¾¹(¤ñ¦p¥H C »y¨¥¼gªº SLisp¡A¥u¥Î´X¦Ê¦æµ{¦¡½X´N¹ê§@¤j¦h¼Æ Common Lisp ªº¥\¯à) «h¬O¤À§O¦¬¿ý¦b lang/cmucl ¥H¤Î lang/slisp¡C

Perl

¹ï¨t²ÎºÞ²zªÌ¦Ó¨¥¡A³Ì·R¥Î perl ¨Ó¼¶¼g scripts ¥HºÞ²z¥D¾÷¡A ¦P®É¤]¸g±`¥Î¨Ó¼g WWW ¥D¾÷¤Wªº CGI Script µ{¦¡¡C

Perl ¦b Ports Collection ¤ºªº lang/perl5¡C ¦Ó FreeBSD 4.X «h¬O§â Perl ¸Ë¦b /usr/bin/perl¡C

Scheme

Scheme ¬O LISP ªº¥t¤@¤À¤ä¡AScheme ªº¯SÂI´N¬O¤ñ Common LISP ÁÙ­n²¼ä¦³¤O¡C ¥Ñ©ó Scheme ²³æ¡A©Ò¥H«Ü¦h¤j¾Ç®³¨Ó·í§@²Ä¤@°óµ{¦¡»y¨¥±Ð¾Ç±Ð§÷¡C ¦Ó¥B¹ï©ó¬ã¨s¤H­û¨Ó»¡¤]¥i¥H§Ö³tªº¶}µo¥L­Ì©Ò»Ý­nªºµ{¦¡¡C

Scheme ¦¬¿ý¦b lang/elk¡A Elk Scheme ª½Ä¶¾¹(¥Ñ³Â¬Ù²z¤u¾Ç°|©Òµo®iªº Scheme ª½Ä¶¾¹)¦¬¿ý¦b lang/mit-scheme¡A SCM Scheme Interpreter ¦¬¿ý¦b lang/scm¡C

Icon

Icon Äݰª¶¥µ{¦¡»y¨¥¡AIcon ¨ã¦³±j¤jªº¦r¦ê(String)©Mµ²ºc(Structure)³B²z¯à¤O¡C FreeBSD Ports Collection ©Ò¦¬¿ýªº Icon ª½Ä¶¾¹ª©¥»«h¬O©ñ¦b lang/icon¡C

Logo

Logo ¬OºØ®e©ö¾Ç²ßªºµ{¦¡»y¨¥¡A³Ì±`¦b¤@¨Ç±Ð¾Ç½Òµ{¤¤³Q®³¨Ó·í§@¶}ÀY½d¨Ò¡C ¦pªG­nµ¹¤pªB¤Í¶}©l¤Wµ{¦¡»y¨¥½Òªº¸Ü¡ALogo ¬O¬Û·í¤£¿ùªº¿ï¾Ü¡C ¦]¬°¡A§Y¨Ï¹ï¤pªB¤Í¨Ó»¡¡A­n¥Î Logo ¨Ó¨q¥X½ÆÂø¦hÃä§Î¹Ï§Î¬O¬Û·í»´ÃP®e©öªº¡C

Logo ¦b FreeBSD Ports Collection ªº³Ì·sª©«h¬O©ñ¦b lang/logo¡C

Python

Python ¬Oª«¥ó¾É¦Vªºª½Ä¶¦¡»y¨¥¡A Python ªº¾ÖÅ@ªÌÁ`¬O«ÅºÙ Python ¬O³Ì¦n¤Jªùªºµ{¦¡»y¨¥¡C ÁöµM Python ¥i¥H«Ü²³æªº¶}©l¡A¦ý¬O¤£¥Nªí¥¦´N·|¿éµ¹¨ä¥Lª½Ä¶¦¡»y¨¥(¹³¬O Perl ©M Tcl)¡A ¨Æ¹êÃÒ©ú Python ¤]¥i¥H®³¨Ó¶}µo¤j«¬¡B½ÆÂøªºÀ³¥Îµ{¦¡¡C

FreeBSD Ports Collection ¦¬¿ý¦b lang/python¡C

Ruby

Ruby ¬O¯Âª«¥ó¾É¦Vªºª½Ä¶¦¡»y¨¥¡C Ruby ¥Ø«e«D±`¬y¦æ¡A­ì¦]¦b©ó¥L©öÀ´ªºµ{¦¡»yªkµ²ºc¡A¦b¼¶¼gµ{¦¡®Éªº¼u©Ê¡A ¥H¤Î¤Ñ¥Í¨ã¦³»´©öªºµo®iºûÅ@¤j«¬±M®×ªº¯à¤O¡C

FreeBSD Ports Collection ¦¬¿ý¦b lang/ruby8¡C

Tcl and Tk

Tcl ¬O¤º´O¦¡ªºª½Ä¶¦¡»y¨¥¡AÅý Tcl ¥i¥H¦p¦¹¼sªx¹B¥Îªº­ì¦]¬O Tcl ªº²¾´Ó©Ê¡C Tcl ¤]¥i¥H§Ö³tµo®i¤@­Ó²³æ¦ý¬O¨ã¦³Âú«¬ªºµ{¦¡©ÎªÌ¨ã¦³§¹¾ã¥\¯àªºµ{¦¡¡C

Tcl ³\¦hªºª©¥»³£¥i¦b FreeBSD ¤W¹B§@¡A¦Ó³Ì·sªº Tcl ª©¥»¬° Tcl 8.4¡A FreeBSD Ports Collection ¦¬¿ý¦b lang/tcl84¡C

2.3.3 ½s;¹

½s;¹©Mª½Ä¶¾¹¨âªÌ¬Û¤ñªº¸Ü¡A¦³¨Ç¤£¦P¡A­º¥ý´N¬O¥²¶·¥ý§âµ{¦¡½X²Î²Î¼g¤J¨ìÀɮ׸̭±¡A µM«á¥²¶·°õ¦æ½s;¹¨Ó¸ÕµÛ½s͵{¦¡¡A¦pªG½s;¹¤£±µ¨ü©Ò¼gªºµ{¦¡¡A¨º´N¥²¶·¤@ª½­×§ïµ{¦¡¡A ª½¨ì½s;¹±µ¨ü¥B§â§Aªºµ{¦¡½sͦ¨°õ¦æÀÉ¡C ¦¹¥~¡A¤]¥i¥H¦b´£¥Ü©R¥O¦C¡A©Î¦b°£¿ù¾¹¤¤°õ¦æ§A½sͦnªºµ{¦¡¬Ý¬Ý¥¦¬O§_¥i¥H¹B§@¡C [1]

«Ü©úÅ㪺¡A¨Ï¥Î½s;¹¨Ã¤£¹³ª½Ä¶¾¹¯ë¥i¥H°¨¤W±o¨ìµ²ªG¡C ¤£ºÞ¦p¦ó¡A½s;¹¤¹³\§A§@«Ü¦hª½Ä¶¾¹¤£¥i¯à©ÎªÌ¬O«ÜÃø¹F¨ìªº¨Æ±¡¡C ¨Ò¦p¡G¼¶¼g©M§@·~¨t²Î±K¤Á¤¬°Êªºµ{¦¡¡A¬Æ¦Ü¬O§A¦Û¤v¼gªº§@·~¨t²Î¡I ·í§A·Q­n¼g¥X°ª®Ä²vªºµ{¦¡®É¡A½s;¹«K¬£¤W¥Î³õ¤F¡C ½s;¹¥i¥H¦b½sͮɶ¶«K³Ì¨Î¤Æ§Aªºµ{¦¡¡A¦ý¬Oª½Ä¶¾¹«o¤£¦æ¡C ¦Ó½s;¹»Pª½Ä¶¾¹³Ì¤jªº®t§O¦b©ó¡G·í§A·Q§â§A¼g¦nªºµ{¦¡®³¨ì¥t¥~¤@¥x¾÷¾¹¤W¶]®É¡A §A¥u­n±N½s;¹½sĶ¥X¨Óªº¥i°õ¦æÀÉ¡A®³¨ì·s¾÷¾¹¤W«K¥i¥H°õ¦æ¡A ¦Óª½Ä¶¾¹«h¥²¶·­n¨D·s¾÷¾¹¤W¡A¥²¶·­n¦³¸ò¥t¤@¥x¾÷¾¹¤W¬Û¦Pªºª½Ä¶¾¹¡A ¤~¯à²ÕͰõ¦æ§Aªºµ{¦¡¡I

½sͦ¡ªºµ{¦¡»y¨¥¥]§t Pascal¡BC ©M C++¡A C ©M C++ ¤£¬O¤@­Ó¿Ë©M¤O¤Q¨¬ªº»y¨¥¡A¦ý¬O«Ü¾A¦X¨ã¦³¸gÅ窺 Programmer¡C Pascal ¨ä¹ê¬O¤@­Ó³]­p¥Î¨Ó±Ð¾Ç¥Îªºµ{¦¡»y¨¥¡A¦Ó¥B¤]«Ü¾A¦X¥Î¨Ó¤Jªù¡A FreeBSD ¹w³]¨Ã¨S¦³§â Pascal ¾ã¦X¶i base system ¤¤¡A ¦ý¬O GNU Pascal Compiler ©M Free Pascal Compiler ³£¥i¤À§O¦b lang/gpc ©M lang/fpc ¤¤§ä¨ì¡C

¦pªG§A¥Î¤£¦Pªºµ{¦¡¨Ó¼g½sͦ¡µ{¦¡¡A¨º»ò¤£Â_¦a½s¿è-½sĶ-°õ¦æ-°£¿ùªº³o­Ó´`ÀôªÖ©w·|«Ü·Ð¤H¡A ¬°¤F§ó²¤Æ¡B¤è«Kµ{¦¡¶}µo¬yµ{¡A«Ü¦h°Ó·~½s;¹¼t°Ó¶}©lµo®i©Ò¿×ªº IDE (Integrated Development Environments) ¶}µoÀô¹Ò¡A FreeBSD ¹w³]¨Ã¨S¦³§â IDE ¾ã¦X¶i base system ¤¤¡A ¦ý¬O§A¥i³z¹L devel/kdevelop ¦w¸Ë kdevelop ©Î¨Ï¥Î Emacs ¨ÓÅéÅç IDE ¶}µoÀô¹Ò¡C ¦b«á­±ªº Section 2.7 ±MÃD±N¤¶²Ð¡A¦p¦ó¥H Emacs ¨Ó§@¬° IDE ¶}µoÀô¹Ò¡C

Notes

[1]

¦pªG¦b´£¥Ü©R¥O¦C¤U°õ¦æ¡A¨º»ò¦³¥i¯à·|²£¥Í core dump¡C

¥»¤å¤Î¨ä¥L¤å¥ó¡A¥i¥Ñ¦¹¤U¸ü¡Gftp://ftp.FreeBSD.org/pub/FreeBSD/doc/¡C

­Y¦³ FreeBSD ¤è­±ºÃ°Ý¡A½Ð¥ý¾\Ū FreeBSD ¬ÛÃö¤å¥ó¡A¦p¤£¯à¸Ñ¨Mªº¸Ü¡A¦A¬¢¸ß <questions@FreeBSD.org>¡C
Ãö©ó¥»¤å¥óªº°ÝÃD¡A½Ð¬¢¸ß <doc@FreeBSD.org>¡C