Senk kesyon sou konsepsyon langaj pwogramasyon

Senk kesyon sou konsepsyon langaj pwogramasyon

Gid Filozofi

1. Lang pwogramasyon pou moun

Lang pwogramasyon se fason moun pale ak òdinatè. Òdinatè a pral kontan pale nenpòt lang ki pa anbigwi. Rezon ki fè nou gen lang wo nivo se paske moun pa ka okipe langaj machin. Pwen langaj pwogramasyon an se anpeche sèvo imen pòv, frajil nou yo vin akable pa twòp detay.

Achitèk yo konnen ke kèk pwoblèm konsepsyon yo pi mondan pase lòt. Gen kèk nan pwoblèm ki pi klè ak pi abstrè konsepsyon yo se konsepsyon an nan pon. Nan ka sa a, travay ou se kouvri distans ki nesesè a ak materyèl piti ke posib. Nan lòt bout nan spectre a se konsepsyon chèz. Konsèpteur chèz yo ta dwe pase tan yo panse sou bounda moun yo.

Devlopman lojisyèl gen yon diferans ki sanble. Konsepsyon algoritm pou wout done atravè yon rezo se yon bèl pwoblèm abstrè, tankou konsepsyon pon. Lè nou konsidere ke desine langaj pwogramasyon se tankou desine chèz: ou dwe fè fas ak feblès imen.

Sa difisil pou pifò nan nou reyalize. Konsepsyon elegant sistèm matematik son pi attrayant pou pifò nan nou pase pandering feblès imen. Wòl nan distenksyon matematik se ke kèk degre nan distenksyon fè pwogram yo pi fasil yo konprann. Men, se pa tout sou distenksyon.

E lè mwen di ke lang yo ta dwe fèt pou akomode feblès imen, mwen pa vle di ke lang yo ta dwe fèt pou pwogramasyon move. An reyalite, ou ta dwe desine lojisyèl pou pi bon pwogramè yo, men menm pi bon pwogramè yo gen limit yo. Mwen pa panse pèsonn ta renmen pwograme nan yon lang kote tout varyab yo te deziye pa lèt "x" ak enskri nonb antye relatif.

2. Design pou tèt ou ak zanmi ou yo

Si w gade istwa langaj pwogramasyon yo, pifò nan pi bon lang yo te fèt pou pwòp otè yo itilize, e pifò nan pi move yo te fèt pou lòt moun itilize.

Lè lang yo fèt pou lòt moun, se toujou yon gwoup moun espesifik: moun yo pa entelijan menm jan ak kreyatè lang lan. Men ki jan ou jwenn yon lang ki pale ak ou. Cobol se egzanp ki pi enpòtan, men pifò lang yo anprint ak lespri sa a.

Li pa gen anyen pou wè ak nivo wo nivo lang lan. C se nivo byen ba, men li te kreye yo dwe itilize pa otè li yo, ki se poukisa entru renmen li.

Agiman an pou desine lang pou pwogramè move se ke gen plis pwogramè move pase sa ki bon. Petèt sa a se konsa. Men, ti kantite bon pwogramasyon sa a ekri disproporsyonelman plis lojisyèl.

Kesyon mwen an se, ki jan ou kreye yon lang ki fè apèl a pi bon entru yo? Li sanble ke kesyon sa a se ki idantik ak kesyon ki jan yo kreye yon bon langaj pwogramasyon?, men menm si li pa, li se omwen yon kesyon ki enteresan.

3. Bay pwogramè a otank kontwòl posib

Anpil lang (sitou sa yo ki fèt pou lòt moun) aji tankou jounou: yo eseye avèti ou lwen bagay ke yo panse pa pral itil ou. Mwen pran opinyon opoze a: bay pwogramè a otan kontwòl ke ou kapab.

Lè mwen te fèk aprann Lisp, sa mwen te plis renmen se ke nou te pale kòm egal. Nan lòt lang ke mwen te aprann nan pwen sa a, te gen yon lang, e te gen pwogram mwen an nan lang sa a, epi yo te egziste byen separeman. Men, nan Lisp, fonksyon yo ak makro ke mwen te ekri yo se yo menm ki lang nan li menm te ekri nan. Mwen te kapab reekri lang nan tèt li si mwen te vle. Li te gen menm apèl ak lojisyèl sous louvri.

4. Brevite se sè talan

Brevite se underrated e menm meprize. Men, si ou gade nan kè yo nan entru, ou pral wè ke yo reyèlman renmen konsizyon. Konbyen fwa ou tande entru yo pale ak kè kontan sou fason, nan, di, APL, yo ka fè bagay etonan ak jis yon koup nan liy nan kòd? Mwen devine moun ki reyèlman entelijan aktyèlman renmen peye atansyon sou sa a.

Mwen kwè ke prèske tout bagay ki fè pwogram yo pi kout se yon bon bagay. Ta dwe gen yon anpil nan fonksyon bibliyotèk, tout bagay ki ka implicite ta dwe konsa; sentaks ta dwe pi kout; menm non antite yo ta dwe kout.

Epi se pa sèlman pwogram yo ta dwe kout. Manyèl yo ta dwe tou kout. Yon bon pati nan manyèl yo plen ak eksplikasyon, avètisman ak ka espesyal. Si ou bezwen vin pi kout manyèl la, pi bon opsyon se korije lang ki mande anpil eksplikasyon.

5. Rekonèt sa piratage se

Anpil moun ta renmen piratage yo dwe matematik, oswa omwen yon bagay ki sanble ak syans. Mwen panse ke Hacking se plis tankou achitekti. Achitekti se sou fizik nan ke yon achitèk bezwen desine yon bilding ki pa pral tonbe, men objektif reyèl la nan yon achitèk se kreye yon gwo bilding, pa fè dekouvèt nan jaden an nan estatik.

Ki sa entru renmen se kreye gwo pwogram. E mwen panse ke, omwen nan pwòp panse nou, nou ta dwe sonje ke ekri gwo pwogram se yon bèl bagay, menm lè travay sa a pa fasil tradui nan lajan an entelektyèl nòmal nan papye syantifik. Soti nan yon pwendvi entelektyèl, li enpòtan menm jan ak konsepsyon yon lang ke pwogramasyon yo ap renmen kòm li se konsepsyon yon sèl terib ki incarne yon lide ke ou ka pibliye yon papye sou.

Pwoblèm Louvri

1. Ki jan yo òganize bibliyotèk gwo?

Bibliyotèk yo ap vin yon pati enpòtan nan langaj pwogramasyon yo. Yo vin tèlman gwo ke li ka danjere. Si li pran plis tan pou jwenn yon fonksyon nan yon bibliyotèk ki fè sa ou bezwen pase pou ekri fonksyon sa a ou menm, lè sa a tout kòd la pa fè anyen men fè manyèl ou pi epè. (Manyèl Symbolics yo te yon egzanp sa a.) Se konsa, nou pral oblije rezoud pwoblèm òganizasyon bibliyotèk la. Idealman, konsepsyon yo pou pwogramè a ka devine ki fonksyon bibliyotèk ki apwopriye.

2. Èske moun reyèlman pè nan sentaks prefiks?

Sa a se yon pwoblèm ouvè nan sans ke mwen te panse sou li depi plizyè ane epi toujou pa konnen repons lan. Sentaks prefiks sanble konplètman natirèl pou mwen, eksepte petèt pou itilizasyon li nan matematik. Men, li ka ke anpil nan enpopularite Lisp a se tou senpleman akòz sentaks la abitye ... Si li vo fè anyen sou li, si sa a se vre, se yon lòt pwoblèm.

3. Kisa ou bezwen pou lojisyèl sèvè?

Mwen panse ke pifò aplikasyon ki pral ekri nan ven pwochen ane yo pral aplikasyon entènèt, nan sans ke pwogram yo pral abite sou yon sèvè epi kominike avèk ou atravè yon navigatè entènèt. Ak ekri aplikasyon sa yo nou bezwen nouvo bagay.

Youn nan bagay sa yo se sipò pou yon nouvo fason pou lage aplikasyon pou sèvè. Olye de youn oubyen de gwo lage pa ane, tankou lojisyèl Desktop, lojisyèl sèvè yo pral lage nan yon seri ti chanjman. Ou ta ka gen senk oswa dis degaje yon jou. Epi tout moun ap toujou gen dènye vèsyon an.

èske w konnen ki jan yo desine pwogram yo dwe antretyen? Lojisyèl sèvè dwe fèt pou ka chanje. Ou ta dwe kapab chanje li fasil, oswa omwen konnen ki sa yon ti chanjman vle di ak sa ki enpòtan.

Yon lòt bagay ki ka itil nan lojisyèl sèvè se, toudenkou, kontinwite livrezon. Nan yon aplikasyon entènèt ou ka itilize yon bagay tankou CPSpou jwenn efè woutin nan mond apatrid sesyon entènèt yo. Èske w gen kontinwite nan rezèv la ka vo li si karakteristik la pa twò chè.

4. Ki nouvo abstraksyon ki rete pou dekouvri?

Mwen pa fin sèten ki jan espwa sa a rezonab, men pèsonèlman mwen ta reyèlman renmen dekouvri yon nouvo abstraksyon - yon bagay ki ta ka gen sans kòm fonksyon premye klas oswa recursion oswa omwen paramèt default. Petèt sa a se yon rèv enposib. Bagay sa yo souvan pa dekouvri. Men, mwen pa pèdi espwa.

Ti sekrè li te ye

1. Ou ka sèvi ak nenpòt lang ou vle

Précédemment, kreyasyon aplikasyon yo te vle di kreyasyon lojisyèl Desktop. Ak nan lojisyèl Desktop gen yon gwo patipri nan direksyon pou ekri aplikasyon nan menm lang ak sistèm nan fonksyone. Se konsa, dis ane de sa, ekri lojisyèl an jeneral vle di ekri lojisyèl nan C. Evantyèlman, tradisyon an evolye: aplikasyon yo pa ta dwe ekri nan lang ki pa nòmal. Ak tradisyon sa a te evolye pou lontan ke moun ki pa teknik tankou administratè ak kapitalis antrepriz yo te aprann li tou.

Lojisyèl sèvè detwi modèl sa a nèt. Avèk lojisyèl sèvè ou ka itilize nenpòt lang ou vle. Prèske pèsonn pa konprann sa a ankò (sitou administratè ak kapitalis antrepriz). Men, gen kèk entru konprann sa a, se poutèt sa nou tande pale de lang indy tankou Perl ak Python. Nou pa tande pale de Perl ak Python paske moun sèvi ak yo pou ekri aplikasyon Windows.

Ki sa sa vle di pou nou, moun ki enterese nan konsepsyon langaj pwogramasyon, ke gen yon odyans potansyèl pou travay nou an.

2. Vitès soti nan profiler

Devlopè langaj, oswa omwen aplikasyon langaj, renmen ekri konpilateur ki jenere kòd rapid. Men, mwen panse ke se pa sa ki fè lang yo vit pou itilizatè yo. Knuth te note depi lontan ke vitès depann sou jis kèk blokaj. E nenpòt moun ki te eseye akselere yon pwogram konnen ke ou pa ka devine ki kote anbouteyaj la ye. Profiler se repons lan.

Devlopè lang yo ap rezoud pwoblèm nan mal. Itilizatè yo pa bezwen referans yo kouri byen vit. Yo bezwen yon lang ki ka montre ki pati nan pwogram yo bezwen reekri. Nan pwen sa a, vitès ki nesesè nan pratik. Se konsa, petèt li ta pi bon si aplikasyon lang yo te pase mwatye tan yo pase optimize du a epi pase li nan ekri yon bon profiler.

3. Ou bezwen yon app ki fè lang ou evolye

Sa a ka pa verite final la, men li sanble ke pi bon lang yo te evolye ansanm ak aplikasyon yo kote yo te itilize yo. C te ekri pa moun ki te bezwen sistèm pwogramasyon. Lisp te fèt an pati pou diferansyasyon senbolik, e McCarthy te tèlman anvi kòmanse ke li menm te kòmanse ekri pwogram diferansyasyon nan premye papye Lisp an 1960.

Sa a se sitou bon si aplikasyon w lan rezoud kèk nouvo pwoblèm. Sa a pouse lang ou a gen nouvo karakteristik pwogramasyon yo vle. Pèsonèlman, mwen enterese nan ekri yon lang ki pral bon pou aplikasyon pou sèvè.

[Pandan diskisyon an, Guy Steele te fè pwen sa a tou, e li te ajoute ke aplikasyon an pa ta dwe konpoze de ekri yon konpilatè pou lang ou, sof si lang ou a fèt pou ekri konpilatè.]

4. Lang lan dwe apwopriye pou ekri pwogram yon sèl fwa.

Ou konnen ki sa yon pwogram yon sèl-piki vle di: se lè ou bezwen byen vit rezoud kèk pwoblèm limite. Mwen kwè ke si ou gade alantou, ou pral jwenn anpil pwogram serye ki te kòmanse soti kòm yon sèl-off. Mwen pa ta sezi si pi fò nan pwogram yo te kòmanse soti kòm yon sèl-off. Se konsa, si ou vle kreye yon lang ki pral apwopriye pou ekri lojisyèl an jeneral, Lè sa a, li ta dwe tou apwopriye pou ekri pwogram yon sèl-off, paske sa a se etap inisyal la nan anpil pwogram.

5. Sentaks gen rapò ak semantik

Li tradisyonèlman kwè ke sentaks ak semantik yo trè diferan. Sa a ka son chokan, men li pa. Mwen panse ke sa ou vle reyalize nan pwogram ou an gen pou wè ak fason ou eksprime li.

Dènyèman mwen te pale ak Robert Morris, e li te note ke surcharge operatè se yon gwo avantaj pou viktwa lang ki gen sentaks enfiks. Nan lang ki gen sentaks prefiks, nenpòt fonksyon ou defini se aktyèlman yon operatè. Si ou vle ajoute yon nouvo kalite nimewo ke ou te fè, ou ka tou senpleman defini yon nouvo fonksyon pou ajoute li. Si ou fè sa nan yon lang ki gen sentaks enfiks, ou pral wè ke gen yon gwo diferans ant lè l sèvi avèk yon operatè twò chaje ak rele yon fonksyon.

Lide ki tounen sou tan

1. Nouvo langaj pwogramasyon

Gade tounen nan ane 1970 yo, li te alamòd yo devlope nouvo langaj pwogramasyon. Sa a se pa ka a kounye a. Men, mwen kwè ke lojisyèl sèvè pral ankò pote tounen mòd pou kreye nouvo lang. Avèk lojisyèl sèvè ou ka itilize nenpòt lang ou vle, kidonk si yon moun kreye yon lang ki sanble pi bon pase rès la, pral gen moun ki pral deside sèvi ak li.

2. Tan pataje

Richard Kelsey te vini ak lide sa a ki gen lè a rive ankò e mwen konplètman sipòte li. Devine mwen (ak Microsoft a tou) se ke yon anpil nan informatique ap deplase soti nan Desktop la nan serveurs aleka. Nan lòt mo, tan pataje se tounen. Mwen panse ke sa ap bezwen sipò nan nivo lang. Par egzanp, Richard ek Jonathan Reeves in fer bokou travay pour enplimant prosedir proze dan Scheme 48.

3. Efikasite

Dènyèman li te sanble ke òdinatè yo te deja vit ase. Nou ap tande pi plis ak plis sou bytecode, ki omwen pou mwen vle di nou gen kèk pouvwa an rezèv. Men, mwen panse ke ak lojisyèl sèvè, nou pa genyen li. Yon moun ap gen pou peye pou serveurs ki kouri lojisyèl a, ak kantite itilizatè sèvè a ka sipòte pa machin yo pral yon divizyon nan depans kapital yo.

Mwen panse ke efikasite pral enpòtan, omwen nan kou boutèy informatique. Sa a pral espesyalman enpòtan pou operasyon I/O, paske aplikasyon sèvè fè yon anpil nan operasyon sa yo.

Nan fen a, li ka vire soti ke bytecode se pa repons lan. Sun ak Microsoft sanble yo pral tèt a tèt nan jaden an bytecode nan moman sa a. Men, yo fè sa paske bytecode se yon kote ki pratik pou entegre tèt li nan yon pwosesis, pa paske bytecode tèt li se yon bon lide. Li ka vire ke tout batay sa a pral pase inapèsi. Li ta komik.

Pyèj ak pyèj

1. Kliyan

Sa a se jis yon devine, men li se ke aplikasyon yo sèlman ki pral benefisye yo se sa yo ki konplètman sèvè-bò. Konsepsyon lojisyèl ki opere sou sipozisyon ke tout moun pral gen yon kliyan se tankou desine yon sosyete ki baze sou sipozisyon ke tout moun pral onèt. Li ta definitivman pratik, men ou dwe asime ke li pa janm pral rive.

Mwen panse ke pral gen yon ogmantasyon rapid nan aparèy ki pèmèt entènèt, epi nou ka asime ke yo pral sipòte html debaz ak fòm. Èske w gen yon navigatè sou telefòn ou? Èske PalmPilot ou a gen yon telefòn? Èske rakèt ou a gen yon ekran pi gwo? Èske w ap kapab jwenn aksè nan entènèt la nan gameboy ou a? Soti nan mont ou a? M pa konnen. Apre sa, mwen pa pral bezwen chèche konnen si mwen parye ke tout bagay pral sou sèvè a. Li jis pi plis serye yo gen tout sèvo yo sou sèvè a. .

2. pwogram oryante objè

Mwen reyalize ke sa a se yon deklarasyon kontwovèsyal, men mwen pa panse OOP se sa ki enpòtan. Mwen panse ke sa a se yon paradigm apwopriye pou aplikasyon espesifik ki bezwen estrikti done espesifik, tankou sistèm fenèt, simulation, sistèm CAD. Men, mwen pa konprann poukisa li ta dwe apwopriye pou tout pwogram yo.

Mwen panse ke moun nan gwo konpayi yo renmen OOP, an pati, paske li fè anpil bagay ki sanble travay. Ki sa ki ta ka natirèlman reprezante kòm, di, yon lis nonm antye, kapab kounye a reprezante kòm yon salklas ak tout kalite echafodaj, ajitasyon ak ajitasyon.

Yon lòt karakteristik atire nan OOP se ke metòd ba ou kèk nan efè a nan fonksyon premye klas yo. Men, sa a se pa nouvèl pou pwogramè Lisp. Lè ou gen vre fonksyon premye klas, ou ka tou senpleman itilize yo nan nenpòt fason ki kostim travay la nan men yo, olye pou yo pouse tout bagay nan yon chodyè klas ak metòd.

Mwen panse ke sa sa vle di pou konsepsyon lang se ke ou pa ta dwe entegre OOP twò pwofondman nan li. Petèt repons lan se ofri plis jeneral, bagay ki fondamantal, epi kite moun konsepsyon nenpòt sistèm objè kòm bibliyotèk.

3. Konsepsyon pa komite

Si lang ou a fèt pa yon komite, Lè sa a, ou ap bloke, epi yo pa sèlman pou rezon ke tout moun konnen. Tout moun konnen ke komite yo gen tandans kreye desen lang ki pa konsistan, ki pa konsistan. Men, mwen panse ke gwo danje a se ke yo pa pran risk. Lè yon moun responsab, li pran risk ke komite a pa ta janm dakò pran.

Ou bezwen pran risk pou kreye yon bon lang? Anpil moun ta ka sispèk ke konsepsyon lang se kote ou dwe rete trè pre sajès tradisyonèl yo. Mwen parye ke se pa ka a. Nan tout lòt bagay moun fè, rekonpans la pwopòsyonèl ak risk la. Se konsa, poukisa konsepsyon lang yo ta dwe diferan?

Sous: www.habr.com

Add nouvo kòmantè