Lima patarosan ngeunaan desain basa programming

Lima patarosan ngeunaan desain basa programming

Pituduh Filsafat

1. Basa program pikeun jalma

Basa pemrograman nyaéta kumaha jalma ngobrol sareng komputer. Komputer bakal resep nyarios basa naon waé anu henteu ambigu. Alesan urang gaduh basa tingkat luhur kusabab jalma henteu tiasa ngadamel basa mesin. Inti tina basa pamrograman nyaéta pikeun nyegah otak manusa anu miskin, rapuh tina kabeuratan ku seueur teuing detil.

Arsiték terang yén sababaraha masalah desain langkung biasa tibatan anu sanés. Sababaraha masalah desain anu paling jelas sareng paling abstrak nyaéta desain sasak. Dina hal ieu, tugas anjeun pikeun nutupan jarak anu diperlukeun ku bahan sakedik-gancang. Di tungtung séjén spéktrum nyaéta desain korsi. Désainer korsi kedah nyéépkeun waktosna pikeun mikirkeun butts jalma.

Pangwangunan parangkat lunak ngagaduhan bédana anu sami. Ngarancang algoritma pikeun jalur data ngaliwatan jaringan mangrupakeun masalah, abstrak nice, kawas ngarancang sasak. Padahal ngarancang basa pamrograman sapertos ngarancang korsi: anjeun kedah ngatasi kalemahan manusa.

Ieu hésé pikeun kalolobaan urang sadar. Ngarancang sistem matématika anu elegan sigana langkung pikaresepeun pikeun kalolobaan urang tibatan nganggap kalemahan manusa. Peran kaanggunan matematika nyaéta sababaraha tingkat kaanggunan ngajantenkeun program langkung gampang kahartos. Tapi éta henteu sadayana ngeunaan kaanggunan.

Sareng nalika kuring nyarios yén basa kedah dirancang pikeun nampung kalemahan manusa, kuring henteu hartosna yén basa kedah dirancang pikeun programer anu goréng. Dina kanyataanana, Anjeun kudu ngarancang software pikeun programer pangalusna, tapi malah programer pangalusna boga wates maranéhanana. Ku teu sangka saha bakal ngarasakeun programming dina basa dimana sakabeh variabel dilambangkeun ku hurup "x" kalawan integer subscripts.

2. Desain pikeun diri jeung babaturan anjeun

Upami anjeun ningali sajarah basa pamrograman, kalolobaan basa anu pangsaéna dirancang pikeun dianggo ku pangarangna sorangan, sareng anu paling awon dirancang pikeun dianggo ku jalma sanés.

Nalika basa dirancang pikeun jalma sanés, éta mangrupikeun sakelompok jalma anu khusus: jalma henteu pinter sapertos anu nyiptakeun basa. Ieu kumaha anjeun kéngingkeun basa anu nyarioskeun ka anjeun. Cobol mangrupikeun conto anu paling menonjol, tapi kalolobaan basa diimbuhan ku sumanget ieu.

Henteu aya hubunganana sareng tingkat luhur basa. C tingkat rada handap, tapi dijieun pikeun dipaké ku pangarang na, naha hacker cinta eta.

Argumen pikeun ngarancang basa pikeun programer anu goréng nyaéta yén aya seueur programer anu goréng tibatan anu saé. Sugan ieu kitu. Tapi sajumlah leutik programer anu saé ieu nyerat langkung seueur parangkat lunak.

Patarosan abdi, kumaha anjeun nyieun basa nu banding ka hacker pangalusna? Sigana mah sual ieu idéntik jeung sual cara nyieun basa programming alus?, Tapi sanajan teu, éta sahanteuna hiji patarosan metot.

3. Masihan programmer salaku loba kontrol sabisa

Seueur basa (utamana anu dirancang pikeun jalma sanés) sapertos nannies: aranjeunna nyobian ngingetkeun anjeun tina hal-hal anu aranjeunna pikir moal aya gunana pikeun anjeun. Kuring nyokot tempoan sabalikna: masihan programmer salaku loba kontrol anjeun tiasa.

Nalika kuring mimiti diajar Lisp, anu paling kuring resep nyaéta yén urang nyarios sami. Dina basa-basa sanés anu ku kuring diajar ku waktos éta, aya basa, sareng aya program kuring dina basa éta, sareng aranjeunna aya nyalira. Tapi dina Lisp, fungsi sareng makro anu kuring nyerat sami sareng anu nyerat basana. Kuring bisa nulis ulang basa sorangan lamun kuring hayang. Éta ngagaduhan daya tarik anu sami sareng parangkat lunak open source.

4. Brevity nyaeta adina bakat

Brevity ieu underrated komo hina. Tapi lamun ningali kana hate hacker, anjeun bakal nempo yén maranéhna bener resep brevity. Sabaraha kali anjeun kantos ngupingkeun hacker ngobrol ngeunaan kumaha, dina, sebutkeun, APL, aranjeunna tiasa ngalakukeun hal-hal anu luar biasa kalayan ngan sababaraha garis kode? Kuring nebak jalma bener pinter sabenerna resep nengetan ieu.

Kuring yakin yén ampir naon waé anu ngajantenkeun program langkung pondok mangrupikeun hal anu saé. Kedah aya seueur fungsi perpustakaan, sadayana anu tiasa implisit kedah kitu; sintaksis kudu leuwih singket; malah ngaran éntitas kudu pondok.

Sareng henteu ngan ukur program kedah pondok. Manual ogé kedah pondok. Hiji bagian alus tina manual ieu ngeusi guaran, Bantahan, warnings jeung kasus husus. Upami anjeun kedah pondokkeun manual, pilihan anu pangsaéna nyaéta ngabenerkeun basa anu peryogi seueur katerangan.

5. Ngakuan naon Hacking téh

Seueur jalma hoyong hacking janten matematika, atanapi sahenteuna anu sami sareng sains. Jigana Hacking leuwih kawas arsitéktur. Arsitéktur nyaéta ngeunaan fisika yén arsiték kedah ngararancang gedong anu moal runtuh, tapi tujuan nyata arsiték nyaéta nyiptakeun gedong anu saé, sanés pikeun mendakan dina widang statika.

Anu resep hacker nyaéta nyiptakeun program anu saé. Sareng kuring nyangka, sahenteuna dina pikiran urang sorangan, urang kedah émut yén nyerat program anu hébat mangrupikeun hal anu saé, sanaos padamelan éta henteu gampang ditarjamahkeun kana mata uang intelektual biasa tina makalah ilmiah. Tina sudut pandang inteléktual, penting pisan pikeun ngararancang basa anu bakal dipikacinta ku programer sareng mendesain anu dahsyat anu ngandung ide anu anjeun tiasa nyebarkeun makalah.

Buka Isu

1. Kumaha carana ngatur perpustakaan badag?

Perpustakaan janten bagian penting tina basa program. Aranjeunna janten ageung dugi ka bahaya. Upami peryogi langkung lami pikeun milarian fungsi dina perpustakaan anu ngalakukeun naon anu anjeun peryogikeun tibatan nyerat fungsi éta nyalira, maka sadaya kode henteu ngalakukeun tapi ngajantenkeun manual anjeun langkung kandel. (The Symbolics manuals éta conto ieu.) Jadi urang gé kudu ngajawab masalah organisasi perpustakaan. Ideally, mendesain aranjeunna ambéh programmer bisa nebak mana fungsi perpustakaan cocog.

2. Naha jalma bener-bener sieun ku sintaksis awalan?

Ieu mangrupikeun masalah anu kabuka dina hartos yén kuring parantos mikirkeun éta sababaraha taun sareng masih henteu terang jawabanana. Sintaksis awalan sigana lumrah pikeun kuring, iwal pikeun dianggo dina matematika. Tapi bisa jadi loba unpopularity Lisp urang ngan saukur alatan sintaksis asing ... Naha urang kudu ngalakukeun nanaon ngeunaan eta, lamun leres, éta urusan sejen.

3. Naon nu peryogi pikeun software server?

Jigana lolobana aplikasi anu bakal ditulis dina dua puluh taun hareup bakal aplikasi wéb, dina harti program bakal reside dina server jeung komunikasi sareng anjeun ngaliwatan web browser. Jeung nulis aplikasi sapertos urang peryogi hal anyar.

Salah sahiji hal éta nyaéta dukungan pikeun cara anyar pikeun ngaleupaskeun aplikasi server. Gantina hiji atawa dua release badag per taun, kawas software desktop, software server bakal dileupaskeun dina runtuyan parobahan leutik. Anjeun tiasa gaduh lima atanapi sapuluh sékrési sadinten. Jeung dulur bakal salawasna mibanda versi panganyarna.

Naha anjeun terang kumaha mendesain program pikeun dijaga? Parangkat lunak server kedah dirarancang supados tiasa dirobih. Anjeun kedah tiasa ngarobih éta kalayan gampang, atanapi sahenteuna terang naon hartosna parobahan minor sareng naon anu penting.

Hal séjén anu tiasa mangpaat dina parangkat lunak server nyaéta, ujug-ujug, kontinuitas pangiriman. Dina aplikasi wéb anjeun tiasa nganggo anu sapertos CPSpikeun meunangkeun pangaruh rutin dina dunya stateless tina sesi web. Ngagaduhan kontinuitas pasokan tiasa waé upami fiturna henteu mahal teuing.

4. Abstraksi anyar naon waé anu masih kénéh kapanggih?

Kaula teu yakin kumaha lumrah harepan éta, tapi sacara pribadi Abdi hoyong pisan manggihan hiji abstraksi anyar - hal anu bisa jadi bermakna salaku fungsi kelas munggaran atanapi recursion atawa sahenteuna parameter standar. Meureun ieu impian teu mungkin. Hal-hal sapertos kitu sering henteu kapendak. Tapi kuring teu leungit harepan.

Rahasia saeutik dipikawanoh

1. Anjeun tiasa nganggo basa naon waé anu anjeun pikahoyong

Saméméhna, nyiptakeun aplikasi hartosna nyiptakeun parangkat lunak desktop. Sareng dina parangkat lunak desktop aya bias anu ageung pikeun nyerat aplikasi dina basa anu sami sareng sistem operasi. Jadi sapuluh taun ka tukang, software nulis sacara umum hartina software nulis dina C. Antukna, tradisi mekar: aplikasi teu kudu ditulis dina basa mahiwal. Sarta tradisi ieu geus mekar pikeun jadi lila yén jalma non-teknis kawas manajer sarta kapitalis venture geus diajar eta teuing.

software server ngancurkeun model ieu sagemblengna. Kalayan parangkat lunak server anjeun tiasa nganggo basa naon waé anu anjeun pikahoyong. Ampir teu acan aya anu ngartos ieu (utamana manajer sareng kapitalis ventura). Tapi sababaraha hacker ngartos ieu, naha urang ngadangu ngeunaan basa indy sapertos Perl sareng Python. Kami henteu ngadangu ngeunaan Perl sareng Python sabab jalma-jalma ngagunakeunana pikeun nyerat aplikasi Windows.

Naon hartosna ieu pikeun urang, jalma anu resep kana desain basa program, yén aya poténsi panongton pikeun karya urang.

2. Speed ​​asalna tina profilers

Pamekar basa, atanapi sahenteuna palaksana basa, resep nyerat kompiler anu ngahasilkeun kode gancang. Tapi kuring pikir éta sanés anu ngajantenkeun basa gancang pikeun pangguna. Knuth nyatet lami pisan yén laju gumantung kana sababaraha bottlenecks. Sareng saha waé anu parantos nyobian ngagancangkeun program terang yén anjeun moal tiasa nebak dimana bottleneck na. Profiler nyaéta jawaban.

Pamekar basa keur ngarengsekeun masalah salah. Pamaké henteu peryogi tolok ukur pikeun ngajalankeun gancang. Éta peryogi basa anu tiasa nunjukkeun bagian mana tina programna anu kedah ditulis deui. Dina titik ieu, speed diperlukeun dina prakna. Janten meureun bakal langkung saé upami palaksana basa nyéépkeun satengah waktos aranjeunna nyéépkeun ngaoptimalkeun kompiler sareng nyéépkeunana pikeun nyerat profiler anu saé.

3. Anjeun peryogi hiji aplikasi nu ngajadikeun basa anjeun mekar

Ieu panginten sanés kabeneran pamungkas, tapi sigana yén basa anu pangsaéna mekar sareng aplikasi dimana aranjeunna dianggo. C ieu ditulis ku jalma anu diperlukeun programming sistem. Lisp dirarancang sabagian pikeun diferensiasi simbolis, sareng McCarthy hoyong pisan ngamimitian éta anjeunna malah ngamimitian nyerat program diferensiasi dina makalah Lisp munggaran di 1960.

Ieu hususna alus lamun aplikasi Anjeun solves sababaraha masalah anyar. Ieu ngadorong basa anjeun gaduh fitur anyar anu dipikahoyong ku programer. Sacara pribadi, kuring resep nulis basa anu hadé pikeun aplikasi server.

[Salila diskusi, Guy Steele ogé nyarioskeun hal ieu, sareng nambihan yén aplikasi éta henteu kedah diwangun ku nyerat kompiler pikeun basa anjeun, kecuali basa anjeun dirancang pikeun nyerat kompiler.]

4. Basana kudu merenah pikeun nulis program sakalian.

Anjeun terang naon hartosna program hiji-shot: éta nalika anjeun kedah gancang ngarengsekeun sababaraha masalah anu terbatas. Kuring yakin yén lamun kasampak sabudeureun, anjeun bakal manggihan loba program serius anu dimimitian kaluar salaku hiji-offs. Abdi teu bakal reuwas lamun paling program dimimitian kaluar salaku hiji-offs. Janten, upami anjeun hoyong nyiptakeun basa anu cocog pikeun nyerat parangkat lunak sacara umum, maka éta ogé kedah cocog pikeun nyerat program sakali, sabab ieu mangrupikeun tahap awal seueur program.

5. Sintaksis patalina jeung semantik

Sacara tradisional dipercaya yén sintaksis sareng semantik mangrupikeun hal anu béda pisan. Ieu sigana ngareureuwas, tapi henteu. Jigana naon anu anjeun hoyong capai dina program anjeun aya hubunganana sareng kumaha anjeun nganyatakeunana.

Kuring nembe ngobrol sareng Robert Morris, sareng anjeunna nyatakeun yén overloading operator mangrupikeun tambah ageung pikeun kameunangan basa sareng sintaksis infiks. Dina basa nganggo sintaksis awalan, fungsi naon waé anu anjeun tangtukeun saleresna mangrupikeun operator. Upami anjeun hoyong nambihan jinis nomer énggal anu anjeun damel, anjeun ngan saukur tiasa nangtukeun fungsi énggal pikeun nambihanana. Upami anjeun ngalakukeun ieu dina basa anu nganggo sintaksis infiks, anjeun bakal ningali yén aya bédana ageung antara ngagunakeun operator anu overloaded sareng nelepon fungsi.

Gagasan anu datang deui kana waktosna

1. basa programming anyar

Ningali deui ka taun 1970-an, éta modis pikeun ngembangkeun basa pamrograman énggal. Ieu henteu kasus ayeuna. Tapi kuring yakin yén software server deui bakal mawa deui fashion pikeun nyieun basa anyar. Kalayan parangkat lunak server anjeun tiasa nganggo basa naon waé anu anjeun pikahoyong, janten upami aya anu nyiptakeun basa anu sigana langkung saé tibatan anu sanés, bakal aya jalma anu bakal mutuskeun ngagunakeunana.

2. Babagi waktos

Richard Kelsey sumping sareng ide ieu anu waktosna parantos sumping deui sareng kuring ngadukung sapinuhna. Dugaan kuring (sareng Microsoft ogé) nyaéta seueur komputasi anu bakal ngalih tina desktop ka server jauh. Dina basa sejen, babagi waktos deui. Jigana ieu bakal butuh rojongan di tingkat basa. Salaku conto, Richard sareng Jonathan Reeves parantos ngalaksanakeun seueur padamelan pikeun ngalaksanakeun jadwal prosés dina Skéma 48.

3. Éfisiensi

Anyar-anyar ieu sigana yén komputer parantos cekap gancang. Urang nuju nguping langkung seueur ngeunaan bytecode, anu sahenteuna pikeun kuring hartosna urang gaduh kakuatan anu dicadangkeun. Tapi kuring nyangka yén kalayan parangkat lunak server, urang henteu gaduh éta. Aya anu kedah mayar kanggo server anu ngajalankeun parangkat lunak, sareng jumlah pangguna anu tiasa dirojong ku server per mesin bakal ngabagi biaya modalna.

Jigana efisiensi bakal masalah, sahenteuna dina bottlenecks komputasi. Ieu bakal penting pisan pikeun operasi I / O, sabab aplikasi server ngalakukeun seueur operasi sapertos kitu.

Tungtungna, éta tiasa tétéla yén bytecode sanés jawaban. Panonpoé sareng Microsoft sigana badé angkat dina widang bytecode ayeuna. Tapi maranéhna ngalakukeun ieu kusabab bytecode mangrupakeun tempat merenah pikeun embed sorangan kana hiji prosés, teu sabab bytecode sorangan mangrupakeun ide nu sae. Bisa jadi tétéla yén sakabéh perang ieu bakal balik unnoticed. Éta bakal pikaseurieun.

Jerat jeung jerat

1. Klién

Ieu ngan hiji tatarucingan, tapi éta hijina aplikasi nu bakal nguntungkeun nu maranéhanana anu sagemblengna server-sisi. Ngarancang parangkat lunak anu beroperasi dina asumsi yén sadayana bakal gaduh palanggan sapertos ngarancang masarakat dumasar kana anggapan yén sadayana bakal jujur. Pasti bakal merenah, tapi anjeun kudu nganggap yén éta moal lumangsung.

Jigana bakal aya kanaékan gancang dina alat web-diaktipkeun, sarta kami bisa nganggap yén maranéhna bakal ngarojong html dasar sarta formulir. Dupi anjeun gaduh browser dina telepon anjeun? Dupi PalmPilot anjeun gaduh telepon? Naha blackberry anjeun bakal ngagaduhan layar anu langkung ageung? Naha anjeun tiasa ngaksés Internét tina gameboy anjeun? Tina jam tangan anjeun? Abdi henteu terang. Sarta kuring moal kudu manggihan lamun kuring bet yén sagalana bakal on server. Éta langkung dipercaya pikeun gaduh sadayana otak dina server. .

2. programming obyék-berorientasi

Kuring sadar ieu mangrupikeun pernyataan kontroversial, tapi kuring henteu nyangka OOP éta penting. Jigana ieu paradigma cocog pikeun aplikasi husus nu peryogi struktur data husus, kawas sistem windowing, simulasi, sistem CAD. Tapi kuring henteu ngartos naha éta kedah cocog pikeun sadaya program.

Jigana jalma di pausahaan badag cinta OOP, sabagian, sabab ngajadikeun loba hal anu kasampak kawas karya. Naon anu sacara alami diwakilan salaku, sebutkeun, daptar integer, ayeuna tiasa diwakilan salaku kelas kalayan sagala jinis parancah, hustle sareng bustle.

Fitur pikaresepeun séjén tina OOP nyaéta yén métode masihan anjeun sababaraha pangaruh tina fungsi kelas munggaran. Tapi ieu sanés warta pikeun programer Lisp. Lamun anjeun boga fungsi-kelas munggaran leres, anjeun bisa kalayan gampang ngagunakeun aranjeunna dina sagala cara nu cocog tugas di leungeun, tinimbang ngadorong sagalana kana boilerplate sahiji kelas jeung métode.

Jigana naon hartina ieu pikeun desain basa nyaeta anjeun teu kudu embed OOP teuing deeply kana eta. Panginten jawabanna nyaéta nawiskeun hal-hal anu langkung umum, dasar, sareng ngantepkeun jalma mendesain sistem obyék salaku perpustakaan.

3. Desain ku panitia

Upami basa anjeun dirancang ku panitia, maka anjeun kajebak, sanés ngan ukur alesan anu terang sadayana. Sarerea terang yen panitia condong nyieun lumpy, desain basa inconsistent. Tapi kuring pikir bahaya anu ageung nyaéta aranjeunna henteu nyandak résiko. Nalika hiji jalma tanggung jawab, anjeunna nyandak resiko anu panitia moal pernah satuju.

Naha anjeun kedah nyandak resiko pikeun nyiptakeun basa anu saé? Seueur jalma anu nyangka yén desain basa mangrupikeun tempat anjeun kedah caket pisan kana hikmah tradisional. Atuh bet teu kitu. Dina sagala hal anu dilakukeun ku jalma, ganjaran sabanding sareng résiko. Janten naha desain basa kedah béda-béda?

sumber: www.habr.com

Tambahkeun komentar