Lima patarosan ngeunaan desain basa programming

Lima patarosan ngeunaan desain basa programming

Pituduh Filsafat

1. Basa pemrograman pikeun manusa

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

Arsiték terang yén sababaraha masalah desain langkung biasa tibatan anu sanés. Salah sahiji masalah desain anu paling jelas sareng paling abstrak nyaéta desain sasak. Dina hal ieu, tugas anjeun pikeun bentang jarak diperlukeun kalawan salaku saeutik bahan mungkin. Di tungtung séjén spéktrum nyaéta desain korsi. Désainer korsi kedah nyéépkeun waktosna pikeun mikiran butts manusa.

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

Ieu hésé pikeun kalolobaan urang nampi. Ngarancang sistem matématika anu elegan sigana langkung narik ka sabagéan ageung urang tibatan ngaganggu kalemahan manusa. Peran kaanggunan matematik nyaéta yén tingkat kaanggunan anu tangtu ngajantenkeun program langkung gampang kahartos. Tapi elegance teu sagalana.

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. Kanyataanna, 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 anu digambarkeun ku hurup "x" kalawan indéks integer.

2. Desain keur diri jeung babaturan anjeun

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

Lamun basa dirancang pikeun jalma séjén, éta salawasna grup husus jalma: jalma anu teu pinter salaku panyipta basa urang. Janten anjeun kéngingkeun basa anu nyarioskeun ka anjeun. Cobol mangrupikeun conto anu paling narik, tapi seueur basa anu diimbuhan ku sumanget ieu.

Henteu aya hubunganana sareng kumaha tingkat luhur basa. C rada low-tingkat, tapi dijieun pikeun pangarang na ngagunakeun, 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é. Ieu bisa jadi bener. Tapi sajumlah leutik programer anu saé ieu nyerat langkung seueur parangkat lunak.

Abdi kabetot dina sual kumaha carana nyieun basa nu hacker pangalusna bakal resep. Jigana 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 dirarancang pikeun jalma sanés) sapertos nannies: aranjeunna nyobian nyegah anjeun ngalakukeun hal anu aranjeunna pikir moal aya gunana. Kuring nyokot tempoan sabalikna: masihan programmer salaku loba kontrol sabisa.

Nalika kuring mimiti diajar Lisp, anu paling kuring resep nyaéta yén kami nyarios sami. Dina basa-basa sanés anu ku kuring diajar harita, aya basa, sareng aya program kuring dina basa éta, sareng aranjeunna aya nyalira. Tapi dina Lisp, fungsi sareng makro anu kuring nyerat sami sareng basa anu ditulis. Éta ngagaduhan daya tarik anu sami sareng parangkat lunak open-source.

4. Brevity nyaeta jiwa wit

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

Kuring yakin yén ampir naon waé anu ngajantenkeun program langkung pondok mangrupikeun hal anu saé. Kedah aya nyatu fungsi perpustakaan, sagalana nu bisa implisit kedah kitu; sintaksis kudu singket-gancang; malah ngaran éntitas kedah pondok.

Sareng sanés ngan ukur program anu kedah pondok. Manual ogé kedah pondok. Bagian manual anu saé dieusi ku panjelasan, caveats, peringatan, sareng kasus khusus. Upami anjeun kedah pondokkeun manual, pilihan anu pangsaéna nyaéta ngabenerkeun basa anu peryogi seueur katerangan.

5. Ngakuan naon Hacking téh

Loba jalma hayang Hacking éta math atawa sahanteuna hal sarupa sains. Jigana Hacking leuwih kawas arsitéktur. Arsitéktur aya hubunganana sareng fisika, dina hartos yén arsiték kedah ngarancang wangunan anu moal runtuh, tapi tujuan nyata arsitek nyaéta nyiptakeun gedong anu saé, sanés pikeun mendakan dina statika.

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

Masalah kabuka

1. Kumaha carana ngatur perpustakaan badag?

Perpustakaan janten bagian anu penting dina basa pamrograman. Aranjeunna nuju janten ageung dugi ka bahaya. Upami peryogi langkung lami pikeun milarian fungsi perpustakaan anu ngalakukeun naon anu anjeun peryogikeun tibatan nyerat fungsi éta nyalira, maka sadaya kode anu dilakukeun nyaéta ngambekan manual anjeun. (The Symbolics manuals éta kasus di titik.) Ku kituna urang kudu ngajawab masalah organisasi perpustakaan. Ideally, urang kudu ngarancang aranjeunna ambéh programmer bisa nebak mana fungsi perpustakaan bakal jalan.

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

Ieu masalah kabuka dina harti yén kuring geus mikir ngeunaan eta pikeun sababaraha taun sarta masih teu nyaho jawaban. Sintaksis awalan sigana alami pisan pikeun kuring, sigana iwal pikeun dianggo dina matematika. Tapi meureun loba unpopularity Lisp urang téh saukur alatan sintaksis unfamiliar na ... Naha nanaon kudu dipigawé ngeunaan eta, lamun leres, nyaeta masalah sejen.

3. Naon nu peryogi pikeun software server?

Jigana lolobana aplikasi nu ditulis dina dua puluh taun hareup bakal aplikasi wéb, hartina program bakal hosted dina server jeung komunikasi sareng anjeun ngaliwatan web browser. Sareng pikeun nyerat aplikasi sapertos kitu, urang peryogi hal-hal énggal.

Salah sahiji hal ieu nyaéta ngarojong cara anyar ngaleupaskeun aplikasi server. Gantina hiji atawa dua release utama per taun, kawas software desktop, software server bakal dileupaskeun dina runtuyan parobahan leutik. Anjeun tiasa gaduh lima atanapi sapuluh siaran per dinten. Jeung dulur bakal salawasna mibanda versi panganyarna.

Naha anjeun terang kumaha mendesain program pikeun dijaga? Parangkat lunak server kedah dirarancang supados tiasa dirobih. Anjeun kudu bisa ngarobah éta gampang, atawa sahenteuna nyaho naon constitutes parobahan minor sarta naon constitutes hiji utama.

Hal séjén anu tiasa mangpaat dina parangkat lunak sisi-server nyaéta, heran, pangiriman kontinyu. Dina aplikasi wéb, anjeun tiasa nganggo anu sapertos CPSPikeun kéngingkeun pangaruh rutinitas dina dunya sési wéb anu teu aya kaayaan, panginten kedah aya pangiriman anu terus-terusan upami fitur ieu henteu mahal teuing.

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

Kuring henteu yakin kumaha akalna harepan sapertos kitu, tapi sacara pribadi, kuring resep pisan mendakan abstraksi énggal-hal anu tiasa janten bermakna sapertos fungsi kelas munggaran atanapi rekursi, atanapi sahenteuna parameter standar. Meureun éta impian nu teu mungkin. Hal-hal sapertos kitu sering teu kapendak. Tapi kuring henteu putus harepan.

Rahasia saeutik-dipikawanoh

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

Saméméhna, nyieun aplikasi hartina nyieun software desktop. Sareng dina parangkat lunak desktop, aya bias anu kuat pikeun nyerat aplikasi dina basa anu sami sareng sistem operasi. Janten, sapuluh taun ka pengker, parangkat lunak nyerat sacara umum hartosna parangkat lunak nyerat dina C. Antukna, tradisi mekar: aplikasi henteu kedah ditulis dina basa anu teu biasa. Sareng tradisi ieu parantos mekar pisan sahingga jalma non-teknis, sapertos manajer sareng kapitalis usaha, ogé diajar ieu.

Parangkat lunak sisi server ngancurkeun modél ieu sagemblengna. Ku parangkat lunak sisi server, anjeun tiasa nganggo basa naon waé anu anjeun pikahoyong. Ampir teu acan aya anu ngartos ieu (utamina manajer sareng kapitalis ventura). Tapi sababaraha hacker ngartos, éta sababna urang ngadangu ngeunaan basa indy sapertos Perl sareng Python. Urang henteu ngadangu ngeunaan Perl sareng Python sabab jalma-jalma nganggo éta pikeun nyerat aplikasi pikeun Windows.

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

2. Speed ​​asalna tina profilers

Désainer basa, atanapi sahenteuna palaksanana, resep nyerat kompiler anu ngahasilkeun kode gancang. Tapi kuring henteu nyangka éta anu ngajantenkeun basa gancang pikeun pangguna. Knuth lila pisan nyatet yén speed gumantung kana ngan sababaraha bottlenecks. Sareng saha waé anu nyobian ngagancangkeun program terang yén anjeun moal tiasa nebak dimana hambatan na. A profiler mangrupa 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 téh naon penting dina prakna. Janten panginten langkung saé upami palaksana basa nyéépkeun satengah waktos aranjeunna nyéépkeun optimasi kompiler dina nyerat profiler anu saé.

3. Anjeun peryogi hiji aplikasi nu ngajadikeun basa Anjeun ngamekarkeun

Panginten éta sanés kabeneran pamungkas, tapi sigana basa anu pangsaéna mekar barengan aplikasi anu ngagunakeunana. C ieu ditulis ku jalma anu diperlukeun programming sistem. Lisp dirarancang sabagian pikeun diferensiasi simbolis; McCarthy pisan hayang pisan ngamimitian yén anjeunna malah kaasup program diferensiasi dina kertas Lisp kahijina dina 1960.

Ieu hususna saé upami aplikasi anjeun ngabéréskeun masalah énggal. Ieu nyorong basa anjeun gaduh fitur anyar anu diperyogikeun ku programer. Pribadi, kuring resep nyerat basa anu saé pikeun aplikasi sisi server.

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

4. Basana kudu cocog pikeun nulis program hiji-hijina.

Anjeun terang naon hartosna program throwaway: nalika anjeun kedah gancang ngabéréskeun masalah anu terbatas. Kuring yakin yén lamun kasampak sabudeureun, anjeun bakal manggihan loba program serius anu dimimitian kaluar salaku throwaways. Abdi teu bakal reuwas lamun paling program dimimitian kaluar salaku throwaways. Janten, upami anjeun hoyong nyiptakeun basa anu cocog pikeun nyerat parangkat lunak sacara umum, éta ogé kedah cocog pikeun nyerat program buang, sabab éta tahap awal tina seueur program.

5. Sintaksis patalina jeung semantik

Kawijaksanaan konvensional nyepeng yén sintaksis sareng semantik mangrupikeun dua hal anu béda pisan. Ieu sigana ngareureuwas, tapi henteu. Jigana naon rék ngahontal dina program anjeun dihijikeun jeung kumaha anjeun nganyatakeun eta.

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

Gagasan anu datang deui kana waktosna

1. basa programming anyar

Ningali deui taun 1970-an, éta modis pikeun ngembangkeun basa pamrograman énggal. Geus teu kitu deui. Tapi kuring yakin software server-sisi bakal mawa deui fashion pikeun nyieun basa anyar. Kalayan parangkat lunak sisi server, anjeun tiasa nganggo basa naon waé anu anjeun pikahoyong, janten upami aya anu nyiptakeun basa anu sigana langkung saé tibatan anu sanés, jalma-jalma bakal daék ngagunakeun éta.

2. Babagi waktos

Richard Kelsey ngajukeun ide ieu, anu waktosna parantos sumping deui, sareng kuring ngadukung sapinuhna. Dugaan kuring (sareng Microsoft ogé) nyaéta seueur komputasi bakal ngalih tina desktop ka server jauh. Dina basa sejen, timesharing deui. Panginten urang peryogi dukungan tingkat basa pikeun éta. 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 komputer téh geus cukup gancang. Urang beuki loba ngadéngé ngeunaan bytecode, anu sahenteuna pikeun kuring, hartina urang boga kakuatan pikeun nyisihkeun. Tapi kuring pikir ku parangkat lunak server, urang teu boga. Bakal aya nu mayar pikeun éta. serverJumlah server anu dijalankeun ku parangkat lunak sareng jumlah pangguna anu tiasa diurus ku server per mesin bakal janten pembagi biaya modalna.

Jigana efisiensi bakal masalah, sahenteuna dina bottlenecks komputasi. Ieu bakal penting pisan pikeun operasi I / O, saprak aplikasi server ngalakukeun loba di antarana.

Pamustunganana, sigana yén bytecode sanés jawabanna. Sun sareng Microsoft ayeuna sigana dikonci dina perang sirah-to-sirah dina bytecode. Tapi aranjeunna nuju ngalakukeun eta sabab bytecode mangrupakeun tempat merenah pikeun nyelapkeun diri kana hiji prosés, teu sabab bytecode sorangan mangrupakeun ide nu sae. Ieu malah bisa tétéla yén sakabéh perang ieu mana unnoticed. Éta bakal lucu.

Perangkap jeung pitfalls

1. Klién

Ieu ngan hiji asumsi, tapi titik éta ngan maranéhanana aplikasi anu sagemblengna server-sisi bakal meunang. Ngarancang parangkat lunak anu beroperasi dina anggapan yén sadayana bakal ngagaduhan klien anjeun sapertos ngawangun masarakat dumasar kana anggapan yén sadayana bakal jujur. Pasti bakal merenah, tapi anjeun kudu narima yén éta moal lumangsung.

Jigana bakal aya kanaékan gancang dina alat web-diaktipkeun, tur éta aman nganggap maranéhna bakal ngarojong HTML dasar sarta formulir. Dupi anjeun gaduh browser dina telepon anjeun? Naha Pilot Palm anjeun gaduh telepon? Naha Blackberry anjeun bakal ngagaduhan layar anu langkung ageung? Naha anjeun tiasa ngaksés wéb tina Game Boy anjeun? Tina jam tangan anjeun? Abdi henteu terang. Sarta kuring moal kudu manggihan lamun kuring bet 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 penting pisan. Jigana éta paradigma cocog pikeun aplikasi husus anu merlukeun struktur data husus, kawas sistem windowing, simulasi, sarta sistem CAD. Tapi kuring henteu ningali naha éta kedah cocog pikeun sadaya program.

Jigana jalma di pausahaan badag resep OOP sabagean sabab ngajadikeun loba hal kasampak kawas karya. Naon anu sacara alami tiasa diwakilan salaku, sebutkeun, daptar integer ayeuna tiasa diwakilan salaku kelas, kalayan sagala jinis Parancah, sadaya bising sareng ribut.

Fitur anu pikaresepeun pikeun OOP nyaéta yén metodeu masihan anjeun pangaruh kelas munggaran. Tapi ieu sanés énggal pikeun programer Lisp. Lamun anjeun boga fungsi kelas munggaran leres, anjeun bisa kalayan gampang ngagunakeun éta dina sagala cara nu cocog tugas di leungeun, tinimbang maksa sagalana kana citakan tina kelas jeung métode.

Jigana ieu hartina keur desain basa nu teu kudu Lebetkeun OOP teuing deeply kana eta. Panginten jawabanna nyaéta nawiskeun fitur anu langkung umum, dasar sareng ngamungkinkeun jalma pikeun mendesain sistem obyék salaku perpustakaan.

3. Desain ku panitia

Upami basa anjeun dirarancang ku panitia, anjeun aya dina bubu, sanés ngan ukur alesan anu urang terang. Pengetahuan umum yén panitia condong ngahasilkeun desain basa anu lumpy, teu konsisten. Tapi kuring pikir bahaya anu langkung ageung nyaéta aranjeunna henteu nyandak résiko. Nalika hiji jalma anu tanggung jawab, aranjeunna nyandak resiko anu panitia moal pernah satuju.

Naha kedah nyandak resiko pikeun nyiptakeun basa anu saé? Seueur jalma tiasa nyangka yén desain basa mangrupikeun hal anu anjeun kedah caket sareng hikmah konvensional. Abdi ngajawab yén éta henteu leres. 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

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster