JavaScript: Maailma Kõige Valesti Programmeerimise Keel

Algselt alates Douglas Crockford

http://javascript.crockford.com/javascript.html

JavaScript, teise nimega Mocha, teise nimega LiveScript, teise nimega JScript, teise nimega ECMAScript, on üks maailma kõige populaarsemad programmeerimiskeeled. Peaaegu iga personaalarvuti maailmas on vähemalt üks Javascripti interpretaator installitud ja aktiivne kasutamine. JavaScript on populaarsus on tingitud täielikult oma rolli skriptimise keel WWW.

Vaatamata oma populaarsust, vaid vähesed teavad, et JavaScript on väga kena dünaamiline objekt-orienteeritud üldotstarbeline programmeerimiskeel. Kuidas saab see olla saladus? Miks on see keel nii valesti?

Nimi

Java – eesliide näitab, et JavaScript on kuidagi seotud Java, et see on alamhulk või vähem võimelised Java versioon. Tundub, et nimi oli tahtlikult valitud arusaamatusi ja segadust tuleb arusaamatus. JavaScript ei ole tõlgendada Java. Java on tõlgendada Java. JavaScript on mõni muu keel.

JavaScript on süntaktilist sarnasus, Java, palju kui Java on C. Kuid see ei ole enam osa Java kui Java on alamhulk C. See on parem, kui Java-rakenduste, et Java (fka Tamm) oli algselt ette nähtud.

JavaScript ei ole arenenud Sun Microsystems, kodus Java. Javascripti oli arenenud Netscape. See oli algselt nimega LiveScript, aga nimi ei olnud piisavalt segane.

Näitavad sufiks -Script, et see ei ole reaalne programmeerimise keel, mis skriptikeelt on vähem kui programmeerimise keel. Kuid see on tõesti küsimus, spetsialiseerumine. Võrreldes C, JavaScript tehingute täitmise eest ekspressiivne jõud ja dünaamika.

Lisp C Riideis

JavaScript on C laadset süntaksit, sealhulgas lokkis traksid ja kohmakad puhul avalduse, teeb see olevat tavaline menetluskeelde. See on eksitav, kuna JavaScript on rohkem ühist funktsionaalsete keelte nagu Lisp või Kava kui C-või Java. See on massiivid asemel nimekirjad ja objektide asemel vara nimekirjad. Funktsioonid on esimese klassi. See on sulgemine. Sa saad lambdas, ilma, et tasakaalustada kõiki neid parens.

Tüüp Valu

Javascripti eesmärk oli joosta Netscape Navigator. Oma edu ei toonud see muutub standard varustus praktiliselt kõik brauserid. Selle tulemusena on typecasting. JavaScript on George Reeves programmeerimise keeles. JavaScript on hästi suured klassi mitte Web-rakendustes.

Liikuv Sihtmärk

Esimesed versioonid JavaScript olid üsna nõrk. Neil puudub välja arvatud käitlemine, sisemine funktsioone, ja pärandi. Oma praeguses vormis on nüüd täielik objekt-orienteeritud programmeerimiskeel. Kuid paljud arvamused keele aluseks on selle ebaküpsed vormid.

Kui ECMA komitee, mis on stewardship üle, et keel areneb laiendusi, mis, kuigi on öeldud heade kavatsustega, on süvendada üks keel suurimaid probleeme: Seal on juba liiga palju versioone. See tekitab segadust.

Disaini Vead

Nr programmeerimise keel on täiuslik. JavaScript on oma osa projekteerimise vead, nagu ülekoormus + tähendab nii peale ja ketistamine tüüp sundi, ja vigu väitega tuleks vältida. Reserveeritud sõna poliitika on liiga range. Semikooloni sisestamise oli suur viga, kuna oli märke on sõnasõnaline regulaaravaldisi. Need vead on viinud programmeerimise vigu, ja kutsus disain keel tervikuna kahtluse alla. Õnneks on palju neid probleeme saab leevendada koos hea lint programmi.

Disain keel tervikuna on üsna heli. Üllatav, et ECMAScript komitee ei ole huvitatud parandatakse need probleemid. Võib olla nad on rohkem huvitatud teha uusi.

Täitanud Realisatsioonid

Mõned varasemate variantidega JavaScript olid üsna lollakas. See kajastub kehvi keeles. Liitmine, et need versioonid olid põimitud kohutavalt lollakas brausereid.

Halb Raamatuid

Peaaegu kõiki raamatuid JavaScript on üsna kohutav. Need sisaldavad vigu, halvad näited, ja edendada halbu tavasid. Olulisi tunnuseid keel on sageli selgitas halvasti, või jätta täielikult. Olen vaadanud kümneid JavaScript raamatuid, ja ma võin ainult soovitada ühte: JavaScript: The Definitive Guide (Trükk 5) mille on esitanud David Flanagan. (Tähelepanu autorid: Kui teil on kirjutanud hea, palun saatke mulle review copy.)

Ebastandardsed Standard

Ametlik spetsifikatsioon keel on avaldatud ECMA. Spetsifikatsioon on väga halva kvaliteediga. See on raske lugeda ja väga raske aru saada. See on olnud toetaja Halb Raamat probleem, sest autorid on olnud võimalik kasutada tavalist dokumendiga, et parandada oma arusaamist keel. ECMA ja TC39 komitee peaks olema sügavalt piinlik.

Amatöörid

Enamik inimesi kirjalikult JavaScript ei ole programmeerijad. Neil puudub väljaõppe ja distsipliini, et kirjutada head programmid. JavaScript on nii palju ekspressiivne jõud, et nad suudavad teha kasulikke asju, niikuinii. See on andnud JavaScript maine on rangelt jaoks amatöörid, et see ei sobi professionaalne programmeerimine. See on lihtsalt nii ei ole.

Objekt-Orienteeritud

On JavaScript object-oriented? See on esemeid, mis võivad sisaldada andmeid ja meetodeid, et tegutseda, et andmeid. Objektid võivad sisaldada teisi objekte. See ei ole klassidesse, kuid see ei ole ehitajad, mida teha, mida klasside teha, sealhulgas tegutsemine konteinerid klassi muutujad ja meetodid. See ei ole klassi-orienteeritud pärisosa, kuid see on prototüüp orienteeritud pärandist.

Kaks peamist võimalust, kuidas luua objekti süsteemid on pärimise teel (is-a) ja liitmise teel (on-a). JavaScript ei mõlemat, kuid selle dünaamilise laadi võimaldab excel liitmise.

Mõned väidavad, et Javascripti ei ole tõeliselt objektorienteeritud, sest see ei anna teavet, mis on peidus. See on objektid ei ole on privaatsed muutujad ja erasektori meetodid: Kõik liikmed on avalik.

Kuid selgub, et JavaScript objektid on privaatsed muutujad ja erasektori meetodeid. (Kliki siia, et teada saada, kuidas.) Muidugi, mõned sellest aru, kuna JavaScript on maailma kõige valesti programmeerimise keel.

Mõned väidavad, et JavaScript ei ole tõeliselt objektorienteeritud, sest see ei anna pärandist. Kuid selgub, et JavaScript toetab mitte ainult klassikalise pärandi, kuid muud koodi korduvkasutuse mustrid samuti.

Tagasi esilehele