nyelvek


Az utóbbi időben úgy tűnik, hogy mindenki akar hozzon létre egy szuperhalmazt a nyelveknek kik ők bonyolultabb, használatának megkönnyítése érdekében a funkcionalitás elvesztése nélkül. Elvileg nagyon dicséretes ötlet, és nehéz lenne megérteni, hogy valaki ellene van, de szeretnék bemutatni néhány okot, amiért például a Gépelt kontraproduktív lehet (és semmi köze a Microsoft-hoz, ne vegyen mániákusnak).

Alap és népszerű nyelv

Képzeletben gyakorlatot fogunk végezni. Kezdjük abból a feltételezésből, hogy bármilyen böngészőben van egy nyelvünk, amellyel felhívhatjuk, ami volt szabványként elfogadott és amelyekre olyan frissítéseket javasolnak, amelyek oly sok résztvevőt (az összes meglévő böngésző fejlesztőjét) érintve gyakorlatilag soha nem érkeznek meg, mivel nehéz megállapodásokra jutni.

Nyelvünk vonalvezetésen fog alapulni, ezért nevezzük LineaScript-nek. Ebben a vonal megrajzolása két lépésből áll: egy vektor megrajzolásából és a szín megadásából. Viszont a vektort két pontból generálják, a megfelelő x és y koordinátákkal.

Amint láthatja, nyelvünk bármit rajzolhat, mivel mindent vonalakban lehet ábrázolni. A nehézség akkor kezdődik, amikor geometriai alakzatot akarunk rajzolni, nem feltétlenül összetett. Például egy négyzet rajzolásához meg kell csinálni a hurkok segítségével:

És az emberek egyetértenének abban, hogy a LineaScript egy hatékony nyelv, és tudnia kell, mert minden böngészőben támogatott, de a tanulása nagyon nehéz, és használata unalmas.

Javítsuk ki egy új nyelvvel

Mivel nagyon nehéz hatékonyan programoznunk a LineaScript-szel, és a résztvevők konzorciuma nem ért egyet a nyelv frissítésével, úgy döntöttünk kap egy új nyelvet sokkal egyszerűbb, a FiguraScript, amely elfogadja a LineaScript összes szintaxisát, de lehetőségeket is ad az ábrák ábrázolásakor.

Vagyis A FiguraScript a LineaScript szuperhalmaza lenne, szóval senki ne panaszkodjon arra, hogy feltaláljuk a kereket. Éppen ellenkezőleg, ez sok embert, akik nem mernek programozni a LineaScript-szel, félelem nélkül közelítik meg a nyelvet.

Tehát új nyelvünkkel gyakorlatilag olyan egyszerű lenne pontot, vonalat vagy téglalapot rajzolni:

Senki sem tagadhatja, hogy nyelvünk teljesebb, mint az alap LineaScript. Lehetővé teszi a tapasztalt számára, hogy folytassa a programozást, mint korábban, és a kezdő egyenértékű módszereket használ, amelyek megkövetelik kódoljon kevesebb sort, hogy ugyanazt az eredményt kapja.

Könnyűséget, rövidséget, teljes kompatibilitást (ne felejtsük el, hogy nyelvünk szuperhalmaz), egyszerűséget biztosítunk ... Ugyan, ezek mind előnyök, igaz?

Az eredeti nyelv új verziója

Kezdeményezésünk nagy hibája, hogy a jelenben gondolkodunk, és nem a jövőben. Mi fog történni, amikor a LineaScript kiad egy új, teljesebb verziót? Nem számít, milyen lassan zajlik a nyelv bővítésének folyamata, nagyon sokan érdeklik a fejlesztése, a logikus dolog az, hogy egy bizonyos ponton megjelenik a LineaScript új verziója, amely új funkcionalitást nyújt, és valószínűleg ennek a funkcionalitásnak egy része ütközni fog azzal, amit a FiguraScript-ben tükröztünk.

Például a Téglalap osztály is létezhet, de más konstruktorral, amely csak egy pontot, a téglalap szélességét és magasságát veszi fel. Talán úgy gondolja, hogy ez nem a legrosszabb probléma, mivel ha túlterhelt a módszer, mindkét inicializálás kompatibilis lehet.

De az lehet, hogy a dolgok rosszabbak lehetnek, mivel talán az új verzióban egy új funkció jön létre ugyanazokkal a paraméterekkel, amelyeket a FiguraScript-ben használtunk, de más viselkedéssel. Például egy olyan vektor konstruktorának, amely megkapja a kiindulási pont koordinátáit, a vektor hosszát és az útvonal szélességét, ugyanaz a szintaxisa lesz, mint a konstruktornak, amelyet a FiguraScript-ben két pont koordinátáiból adtunk hozzá.

A FiguraScript 2.0 melyik viselkedését kell megvalósítania a konstruktor számára, amely paraméterként négy egész számot kap?

Szembesülve ezzel a helyzettel, kénytelenek leszünk elkészíteni nyelvünk egy új változatát, amelyben két gonoszság között kell döntenünk:

  • Fogadja el a kibővített LineaScript új szintaxisát, így a FiguraScript 2.0 már nem képes értelmezni az 1.0 verzióban írt programokat, mivel elveszíti a visszafelé kompatibilitást.
  • Támogassa továbbra is az 1.0 és az 1.0 alatt definiált módszereket elveszíti a szuperhalmaz minőségét és hogy az adott nyelv nem minden programozója használhatja a kódját közvetlenül a miénkben.

Mindenesetre nyelvünk elveszíti az egyik olyan tulajdonságot, amellyel eredetileg dicsekedhettünk, és apránként elveszíti létjogosultságát, és valószínűleg a feledésbe merül.

Mit tettünk rosszul?

Ha jóhiszeműen létrehoztunk egy nyelvet, amely megkönnyítette a hozzáférést egy népszerűbb, de összetettebb nyelvhez, mit tettünk rosszul? Miért kell kudarcra ítélnünk?

Aki ismeri John Nash játékelméletét, tudja, hogy a probléma az, hogy túl ambiciózusak voltunk, és a LineaScript fejlődésének figyelmen kívül hagyásával kerestük előnyünket. Felállítottunk egy forgatókönyvet, ahol az új nyelv sikeres lesz, sok fejlesztéssel, miközben a régi nyelv mozdulatlan maradt.

A legnagyobb közös hasznot kínáló stratégia azonban az volt aktívan együttműködnek a LineaScript fejlesztésében, annak érdekében, hogy új változata, amelyben a korábbi verziókban kifejlesztett összes program továbbra is kompatibilis lenne, több fejlesztést is tartalmazzon, mint amennyit az együttműködésünk nélkül képes kifejleszteni.

Most változtassa meg a "Vonal" szót "Java" -ra és az "Ábra" -ra "Típus" -ra, és megismerheti a véleményemet a Microsoft új kísérletéről, amely a cselekmény felé vezet.

Oszd meg a nyelvek csapdáját más nyelvek szuperhalmazaként