taler-merchant-demos

Python-based Frontends for the Demonstration Web site
Log | Files | Refs | Submodules | README | LICENSE

rms-lisp.html (38005B)


      1 <!--#set var="ENGLISH_PAGE" value="/gnu/rms-lisp.en.html" -->
      2 
      3 <!--#include virtual="/server/header.sq.html" -->
      4 <!-- Parent-Version: 1.96 -->
      5 <!-- This page is derived from /server/standards/boilerplate.html -->
      6 <!--#set var="TAGS" value="gnu-history" -->
      7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
      8 
      9 <!-- This file is automatically generated by GNUnited Nations! -->
     10 <title>Përvoja Ime Me Lisp dhe Zhvillimi i GNU Emacs - Projekti GNU - Free Software
     11 Foundation</title>
     12 <style type="text/css" media="print,screen"><!--
     13 a[href*='#foot-'] { font-size: .94em; }
     14 -->
     15 </style>
     16 
     17 <!--#include virtual="/gnu/po/rms-lisp.translist" -->
     18 <!--#include virtual="/server/banner.sq.html" -->
     19 <!--#include virtual="/gnu/gnu-breadcrumb.sq.html" -->
     20 <!--GNUN: OUT-OF-DATE NOTICE-->
     21 <!--#include virtual="/server/top-addendum.sq.html" -->
     22 <div class="article reduced-width">
     23 <h2>Përvoja ime me Lisp dhe Krijimi i GNU Emacs</h2>
     24 
     25 <div class="infobox">
     26 <p>Transkriptim i fjalës së Richard Stallman-it, 28 tetor 2002, në
     27 International Lisp Conference.</p>
     28 </div>
     29 <hr class="thin" />
     30 
     31 <p>Ngaqë asnjë nga fjalimet e mia të zakonshme nuk lidhet gjëkundi me Lisp-in,
     32 asnjë prej tyre nuk qe i përshtatshëm për sot. Ndaj do të më duhet të
     33 improvizoj.  Ngaqë gjatë karrierës time kam bërë boll gjëra që lidhen me
     34 Lisp-in, do të duhej të isha në gjendje të them diçka interesante.</p>
     35 
     36 <p>Përvoja ime e parë me Lisp-in qe leximi i doracakut të Lisp 1.5-s në
     37 shkollën e mesme. Kjo qe koha kur më iku mendja nga ideja që mund të kishte
     38 një gjuhë kompjuteri si kjo. Hera e parë që pata rastin të bëj diçka me
     39 Lisp-in qe kur isha riosh në Harvard dhe shkrova një interpretues Lisp për
     40 <abbr title="Programmed Data Processor">PDP</abbr>-11. Qe makinë shumë e
     41 vogël- kish a s’kish 8k kujtesë - dhe ia dola të shkruaj interpretuesin
     42 brenda një mijë udhëzimesh. Kjo më la pak vend për pakëz të dhëna. Kjo
     43 ndodhi përpara se të arrija të shihja se çfarë qe vërtet një
     44 <em>software</em>, ai që kryente punë të njëmendtë në sistem.</p>
     45 
     46 <p>Zura të punoj për një sendërtim të njëmendtë Lisp me JonL White-in, sapo
     47 fillova të punoj në <abbr title="Massachusetts Institute of
     48 Technology">MIT</abbr>. Më punësuan në Artificial Intelligence Lab, jo
     49 JonL-ja, por Russ Noftsker-i, çka qe më ironikja kur mendon se ç’do të vinte
     50 më pas - vërtet duhet të jetë penduar për atë ditë.</p>
     51 
     52 <p>Gjatë viteve ’70, përpara se jeta ime të politizohej nga ngjarje të
     53 tmerrshme, thjesht e shtyja duke bërë zgjerim pas zgjerimi për programe të
     54 ndryshme, dhe shumica e tyre nuk kishin të bënin aspak me Lisp-in. Por, në
     55 rrugë e sipër, shkrova një përpunues tekstesh, Emacs. Ideja interesante
     56 rreth Emacs-it qe që kish një gjuhë programimi brenda, dhe që urdhrat e
     57 përdoruesit për përpunime mund të shkruheshin në atë gjuhë të interpretuar
     58 programimesh, dhe kështu mund të ngarkonit urdhra të reja te përpunuesi juaj
     59 ndërkohë që punonit me të. Mund të përpunonit programet që po përdornit dhe
     60 të vazhdonit të përpunonit me ta. Pra, kishim një sistem që qe i dobishëm
     61 për gjëra të tjera veç programimit, dhe ndërkohë mund ta programonit, teksa
     62 e përdornit. Nuk e di nëse qe i pari ndër gjëra të tilla, por sigurisht qe
     63 përpunuesi i parë i tillë.</p>
     64 
     65 <p>Kjo frymë e krijimit të programeve gjigante, të ndërlikuara, për përdorim
     66 për përpunimin tuaj dhe mandej shkëmbimi i tyre me persona të tjerë, ndezi
     67 frymën e bashkëpunimit të lirë që shihnim atëherë në AI Lab. Ideja qe që
     68 mund t’ia jepnit kopjen e çfarëdo programi që kishit dikujt që donte një
     69 kopje të tij. I ndanim programet me këdo që donte t’i përdorte ato, përbënin
     70 dije njerëzore. Pra, edhe pse nuk kish mendim politik të kristalizuar që të
     71 lidhej me mënyrën sipas të cilës shkëmbenim <em>software</em> për hartimin e
     72 Emacs-it, jam i bindur që pat një lidhje mes tyre, ndoshta një lidhje jo të
     73 vetëdijshme. Mendoj se është natyra e mënyrës se si jetonim në AI Lab ajo që
     74 shpuri te Emacs dhe e bëri atë që është.</p>
     75 
     76 <p>Emacs-i origjinal s’përmbante Lisp. Gjuha e nivelit të ulët, gjuha e
     77 painterpretueshme - qe PDP-10 Assembler. Interpretuesi që shkruam, në fakt
     78 s’u shkrua për Emacs, u shkrua për <abbr title="Text Editor and
     79 COrrector">TECO</abbr>. Ky qe përpunuesi ynë i teksteve, dhe qe një gjuhë
     80 programimi tejet e shpifur, e shpifur sa më s’bëhej. Arsyeja qe se nuk qe
     81 hartuar për të qenë gjuhë programimi, qe hartuar për të qenë gjuhë
     82 përpunuesi dhe urdhrash. Kish urdhra të tilla si <code>5l</code>, për
     83 <code>zhvendosu pesë rreshta</code>, ose <code>i</code> dhe mandej një varg
     84 dhe mandej një ESC për ta futur atë varg diku. Mund të shkruanit një varg që
     85 mund të ishte një radhë urdhrash, dhe që quhej varg urdhrash. E përfundonit
     86 me ESC ESC, dhe kështu mund të ekzekutohej.</p>
     87 
     88 <p>Njerëzit donin ta zgjeronin këtë gjuhë me aftësi programimi, ndaj edhe
     89 shtuan ca syresh. Për shembull, nga të parat qe një mekanizëm përsëritjeje,
     90 që qe <code>&lt;&nbsp;&gt;</code>. Mund t’i vinit këto rreth një gjëje dhe
     91 kjo gjë do të përsëritej. Kish edhe të tjerë urdhra të mistershëm që mund të
     92 përdoreshin për të dalë nga përsëritja sipas një kushti.  Për të krijuar
     93 Emacs-in, &#8239;<a href="#foot-1">[1]</a> shtuam aftësinë për të pasur
     94 nënrutina të emërtuara. Para kësaj, qe pak a shumë si Basic dhe nënrutinat
     95 mund të kishin vetëm një shkronjë si emër. Me to, qe e vështirë të
     96 programoheshin programe të mëdha, ndaj shtuam kod që të mund të kiheshin
     97 emra të gjatë. Në fakt, kish edhe disa aftësi të tjera paksa të
     98 sofistikuara; kam përshtypjen se Lisp-i, aftësinë për “unwind-protect”, e
     99 mori nga TECO.</p>
    100 
    101 <p>Filluam duke shtuar aftësi pak a shumë të sofistikuara, krejt me sintaksën
    102 më të shpifur që mund të mendoni, dhe funksionoi - njerëzit prapëseprapë
    103 qenë të zotët të shkruanin programe të mëdhenj me të. Mësimi i qartë qe që
    104 një gjuhë si TECO, e cila s’qe hartuar për të qenë gjuhë programimi, ishte
    105 rruga e gabuar. Gjuha në të cilën ju do të krijonit zgjerimet tuaja, s’do të
    106 duhej konceptuar si gjuhë programimi pas të vjelës; do të duhej konceptuar
    107 si gjuhë programimi. Në fakt, zbuluam që gjuha më e mirë e programimit për
    108 këtë qëllim qe Lisp-i.</p>
    109 
    110 <p>Ai që e zbuloi këtë &#8239;<a href="#foot-2">[2]</a>, qe Bernie Greenberg.
    111 Ky shkroi një version të Emacs-it në Multics MacLisp, dhe i shkroi urdhrat e
    112 veta në MacLisp në mënyrë të drejtpërdrejtë. Përpunuesi në vetvete qe
    113 shkruar krejtësisht Lisp. Multics Emacs u shndërrua në sukses të madh -
    114 programimi i urdhrave të rinj për përpunimin qe kaq i përshtatshëm sa edhe
    115 sekretaret në zyrën e tij filluan të mësonin se si ta përdornin. Përdorën
    116 një doracak që e pat shkruar dikush dhe që tregonte se si të zgjerohej
    117 Emacs-i, por që nuk thoshte se bëhej fjalë për programim. Kështu që
    118 sekretaret, që besonin se nuk programonin dot, nuk patën frikë. Lexuan
    119 doracakun, zbuluan që mund të bënin gjëra të dobishme dhe mësuan të
    120 programonin.</p>
    121 
    122 <p>Pra, Bernie pa që një aplikacion - një program që bën diçka të dobishme për
    123 ju - që ka brenda Lisp dhe që mund ta zgjeroni duke rishkruar programe Lisp,
    124 është në fakt një mënyrë shumë e mirë që njerëzit të mësojnë programim. U
    125 jep atyre një mundësi të shkruajnë programe të vegjël që janë të dobishëm
    126 për ta, çka në shumicën e fushave ju ndoshta nuk mund ta kryeni dot. Mund të
    127 nxiten përmes përdorimit praktik - në fazën që është më e vështira - kur nuk
    128 besojnë se mund të programojnë, derisa arrijnë në pikën që janë programues.</p>
    129 
    130 <p>Në këtë pikë, njerëzit zunë të mendonin se si mund të kishin diçka të tillë
    131 edhe në një platformë tek e cila s’kishin sendërtim të plotë funksional të
    132 Lisp-it. Multics MacLisp kish një përpilues dhe një interpretues - qe sistem
    133 Lisp i kompletuar - por njerëzit donin të sendërtonin diçka të tillë në
    134 sisteme të tjera, ku s’kishin shkruar ende ndonjë përpilues Lisp. Pra, po të
    135 mos kishit përpiluesin Lisp, s’shkruanit dot plotësisht përpunuesin në Lisp
    136 - do të ishte shumë i ngadaltë, veçanërisht rishfaqja, po qe se bëhej fjalë
    137 të xhirohej Lisp i interpretuar.  Ndaj zhvilluam një teknikë hibride. Ideja
    138 qe të shkruanim në një të vetëm një interpretues Lisp dhe pjesët e nivelit
    139 të ulët tok, që kështu një pjesë e përpunuesit të qenë pjesë të brendshme të
    140 Lisp-it. Këto do të ishin çfarëdo pjesësh që ne mendonim se duheshin
    141 përsosur. Kjo qe një teknikë që e kishim praktikuar tashmë me vetëdije në
    142 Emacs-in origjinal, ngaqë kish disa veçori deri diku të nivelit të lartë, të
    143 cilat i risendërtuam në gjuhën e makinës, duke i shndërruar në primitivë
    144 TECO. For instance, there was a TECO primitive to fill a paragraph
    145 (actually, to do most of the work of filling a paragraph, because some of
    146 the less time-consuming parts of the job would be done at the higher level
    147 by a TECO program). Për shembull, kish një primitiv TECO për mbushjen e një
    148 paragrafi (në fakt, për kryerjen e shumicës së punës për mbushjen e një
    149 paragrafi, ngaqë disa nga pjesët më pak të lodhshme të punës i binte të
    150 kryheshin në një nivel më të lartë, nga një program TECO). Mund ta bënit
    151 krejt punën duke shkruar një program TECO, por kjo qe shumë e ngadaltë, ndaj
    152 e përsosëm duke hedhur pjesë të tij në gjuhën e makinës. Përdorëm këtu të
    153 njëjtën ide (atë te teknika hibride), që pjesa dërrmuese e përpunuesit të
    154 shkruhej në Lisp, por disa pjesë të tij, të cilat duhej të xhironin
    155 veçanërisht shpejt, të shkruheshin në nivel më të ulët.</p>
    156 
    157 <p>Kështu që, kur shkrova sendërtimin tim të dytë të Emacs-it, ndoqa të njëjtën
    158 lloj skeme. Gjuha e nivelit të ulët nuk qe më gjuha e makinës, qe C-ja. C-ja
    159 qe gjuhë e mirë, e efektshme për programe të kalueshëm, që të mund të
    160 xhironin në një sistem operativ të ngjashëm me Unix-in. Kishte një
    161 interpretues Lisp, por sendërtova aftësi për veprime specifike përpunimi
    162 drejt e në C - përdorim buffer-ash përpunuesi, futjeje teksti drejtues,
    163 lexim dhe shkrim kartelash, rishfaqje në ekran të përmbajtjes së një
    164 buffer-i, administrim dritaresh përpunuesi.</p>
    165 
    166 <p>Tani, ky s’qe Emacs-i i parë i shkruar në C dhe që xhironte nën Unix. I pari
    167 qe shkruar nga James Gosling, dhe i referoheshin si GosMacs. I ndodhi diçka
    168 e çuditshme. Në fillim, ngjante se ndikohej nga e njëjta frymë e shkëmbimit
    169 dhe bashkëpunimit me Emacs-in origjinal. Emacs-in e parë origjinal e pata
    170 hedhur në qarkullim për personat në MIT. Dikush dëshironte ta bënte të
    171 xhironte në Twenex - në fillim xhironte vetëm në Incompatible Timesharing
    172 System që përdornim në MIT. E kaluan në Twenex, që do të thoshte se kish
    173 ndoca qindra instalime nëpër botë që mundeshin ta përdornin. Zumë tua
    174 dërgonim atyre, me kusht që “duhet të na dërgoni krejt përmirësimet që i
    175 bëni” që të përfitonim të gjithë. Askush s’u përpoq ndonjëherë ta bënte këtë
    176 të detyrueshme, por, me aq sa di, njerëzit bashkëpunuan.</p>
    177 
    178 <p>Gosling dukej, në fillim, se do të bashkëpunonte në këtë frymë. Shkroi në
    179 një doracak se programin po e quante Emacs, duke shpresuar që edhe të tjerë
    180 nga bashkësia do ta përmirësonin, derisa t’ia vlente atë emër. Ky qe
    181 trajtimi i duhur kundrejt një bashkësie - t’u kërkohej të merrnin pjesë e ta
    182 bënin programin më të mirë. Por pas kësaj dukej se ndërroi mendje, dhe ia
    183 shiti një shoqërie.</p>
    184 
    185 <p>Në atë kohë po punoja për sistemin GNU (një sistem operativ
    186 <em>software</em> i lirë, i ngjashëm me Unix, që mjaft vetë gabimisht e
    187 quajnë “Linux”).  Nuk kish përpunues Emacs, si <em>software</em> të lirë, që
    188 xhironte nën Unix. Por kisha një shok që kish marrë pjesë në programimin e
    189 Emacs-it të Gosling-ut. Gosling-u i pat dhënë, përmes email-i, leje të
    190 përhapte versione të tijat. Më propozoi të përdorja atë version. Më tej
    191 pashë që Emacs-i Gosling-ut s’përmbante Lisp të vërtetë. Kish një gjuhë
    192 programimi që njihej si “mocklisp”, që nga sintaksa duket si Lisp, por që
    193 s’kish struktura të dhënash të Lisp-it.  Kështu që programet nuk qenë të
    194 dhëna dhe mungonin elemente jetike të Lisp-it.  Strukturat e të dhënave në
    195 të qenë vargje, numra dhe pak gjëra të tjera speciale.</p>
    196 
    197 <p>Dola në përfundimin se nuk e përdorja dot dhe më duhej ta zëvendësoja të
    198 tërin, hapi i parë për të cilin qe shkrimi i një interpretuesi të vërtetë
    199 Lisp. Dora-dorës përshtata çdo pjesë të përpunuesit duke e bazuar në
    200 struktura të dhënash Lisp faktike, në vend të strukturave <i>ad hoc</i> për
    201 të dhënat, duke i bërë strukturat e të dhënave të mekanizmave të brendshme
    202 të përpunuesit të ekspozueshme dhe të trajtueshme nga programet Lisp të
    203 përdoruesit.</p>
    204 
    205 <p>Përjashtim qe rishfaqja. Për shumë kohë, rishfaqja qe njëfarë bote
    206 tjetër. Përpunuesi mund të kalonte në botën e rishfaqjeve dhe gjërat do të
    207 vazhdonin me struktura të dhënash tejet speciale që nuk qenë pa dëm për
    208 grumbullim hedhurinash, as për ndërprerje, dhe nuk mund të xhironit ndonjë
    209 program Lisp gjatë kohës që ndodhte kjo. E ndryshuam ama - tani është e
    210 mundur të xhirohet kod Lisp gjatë rishfaqjes. Çka vjen jo pak ndoresh.</p>
    211 
    212 <p>Ky program i dytë Emacs qe “<em>software</em> i lirë” në kuptimin modern të
    213 fjalës - qe pjesë e një fushate të deklaruar politike për krijim software-i
    214 të lirë. Thelbi i kësaj fushate qe që kushdo duhet të jetë i lirë të bëjë
    215 gjërat që bënim ne dikur në MIT, të punohej tok mbi software-in dhe të
    216 punohej me këdo që donte të punonte me ne.  Kjo është baza e lëvizjes për
    217 <em>software</em> të lirë -  përvoja që pata, jeta që bëja në laboratorin
    218 MIT AI - të punohej për dijen njerëzore, dhe jo t’i zihej rruga cilitdo që
    219 përdorte dhe përhapte më tej dijen njerëzore.</p>
    220 
    221 <p>Në atë kohë, mund të krijonit një kompjuter që hynte në po atë segment
    222 çmimesh si kompjuterat e tjerë që nuk qenë menduar për Lisp, vetëm se ky
    223 mund të xhironte Lisp-in shumë më shpejt se ata, dhe, po ashtu, me kontroll
    224 të plotë të llojit të të dhënave në çdo veprim. Kompjuterat e zakonshëm ju
    225 shtrëngonin të zgjidhnit ose shpejtësinë e ekzekutimit, ose kontroll të mirë
    226 të llojit të të dhënave.  Pra, mund të kihej një përpilues Lisp dhe të
    227 xhiroheshin programet më shpejt, por kur provohej të merrej <code>car</code>
    228 i një targe, arrihej në përfundime pa kuptim dhe tek e fundit në vithisje.</p>
    229 
    230 <p>Makina Lisp qe e zonja të përmbushte udhëzimet gati po aq shpejt sa makinat
    231 e tjera, por çdo udhëzim - një udhëzim, të themi <code>automjet</code> do të
    232 shkaktonte kontroll lloji të dhënash - kështu që, po të provonit të kërkonit
    233 <code>automjet</code> për një numër, në një program të përpiluar, do t’ju
    234 paraqitej menjëherë një gabim. E ndërtuan makinën dhe kjo pati një sistem
    235 operativ Lisp. Qe shkruar krejtësisht në Lisp, me përjashtim vetëm të
    236 pjesëve të shkruara në mikrokod. Njerëzve filloi t’u interesojë prodhimi i
    237 tyre, që do të thoshte se mund të fillonin një biznes.</p>
    238 
    239 <p>Kish dy ide të ndryshme rreth se si mund të ishte shoqëria.  Greenblatt-i
    240 donte të fillonte atë çka e quante shoqëri “hacker”-ash. Kjo donte të
    241 thoshte një shoqëri e administruar nga hacker-a dhe do të funksiononte në
    242 një mënyrë nxitëse për hacker-at. Një synim tjetër që të vazhdohej kultura e
    243 laboratorit AI Lab &#8239;<a class="ftn" href="#foot-3">[3]</a>.  Për fat të
    244 keq, Greenblatt-i nuk kish ndonjë përvojë në punë biznesi, ndaj të tjerë
    245 persona në grupin e makinave Lisp thanë se dyshonin se mund t’ia dilte
    246 mbanë. Qenë të mendimit se plani i tij për të shmangur investime nga jashtë
    247 grupit s’kish për të funksionuar.</p>
    248 
    249 <p>Pse donte të shmangte investimet nga jashtë? Ngaqë kur një shoqëri ka
    250 investitorë jashtë vetes, këta shtien në dorë kontrollin dhe nuk ju lënë më
    251 të keni skrupuj. Dhe në fund, po patët skrupuj, ju heqin nga drejtimi.</p>
    252 
    253 <p>Ndaj Greenblatt-i pati idenë të gjente klientë që do të parapaguanin blerjen
    254 e pjesëve. Të montonin makinat dhe t’i shpërndanin te porositësit; me
    255 fitimin prej pjesëve, do të ishin në gjendje të blinin pjesë për ndoca
    256 makina të tjera, t’i shisnin këto dhe mandej të blinin pjesë për një numër
    257 më të madh makinash, e me radhë. Personat e tjerë në grup qenë të mendimit
    258 që kjo do të funksiononte.</p>
    259 
    260 <p>Greenblatt-i mandej mori në punë Russell Noftsker-in, njeriun që më pat
    261 punësuar mua, që më pas e pat lënë laboratorin AI Lab dhe kish krijuar një
    262 shoqëri të suksesshme.  Russell-i besohej se kish nuhatje për biznes. E
    263 shfaqi këtë nuhatje për biznes duke u thënë personave të tjerë të grupit,
    264 “Le ta heqim qafe Greenblatt-in, bashkë me idetë e tij, dhe do të ngremë një
    265 tjetër shoqëri”. Thikë pas shpine, biznesmen i vërtet sa më s’bëhet. Këta
    266 persona vendosën të krijonin një shoqëri të quajtur Symbolics. Me investime
    267 nga jashtë, pa skrupuj, dhe të gatshëm për gjithçka për fitoren.</p>
    268 
    269 <p>Por Greenblatt-i nuk u dorëzua. Ai dhe ata pak besnikë të tij vendosën të
    270 krijonin Lisp Machines Inc. sido që të ndodhte dhe të ecnin para me planet e
    271 tyre. Dhe siç e dini, ia dolën mbanë! Gjetën klientin e parë dhe patën
    272 parapagim. Montuan makina dhe i shitën, pastaj krijuan më shumë makina, dhe
    273 prapë të tjera. Ia dolën mbanë, edhe pse nuk patën ndihmën e shumicës së
    274 personave të grupit. Edhe Symbolics pati fillim të suksesshëm, pra kishit dy
    275 shoqëri konkurruese makinash Lisp. Kur Symbolics pa që LMI nuk do të
    276 shkërmoqej, filluan të kërkonin për mënyra se si ta shkatërronin.</p>
    277 
    278 <p>Kështu që, në laboratorin tonë, braktisja u pasua nga “lufta”.  Braktisja
    279 erdhi kur Symbolics punësoi krejt hacker-at, hiq mua dhe ndoca që punonin me
    280 kohë të pjesshme te LMI. Mandej nxorën nga pluhuri një rregullore dhe hoqën
    281 qafe personat që punonin me kohë të pjesshme për MIT-in, kështu që iu desh
    282 të iknin plotësisht, dhe prej kësaj mbeta vetëm unë. Laboratori AI tani qe i
    283 pashpresë.  Dhe MIT-i kish bërë një ujdi shumë të marrë me këto dy
    284 shoqëritë.  Qe një kontratë trikahëshe ku secila shoqëri lejonte përdorimin
    285 e kodit burim të sistemit të makinave Lisp. Këto shoqëri qenë të detyruara
    286 të lejonin MIT-in të përdorte ndryshimet e bëra prej tyre. Por në kontratë
    287 nuk thuhej se MIT-i gëzonte të drejtën t’i hidhte ato në sistemet e makinave
    288 Lisp të MIT-it që qenë licencuar nga të dyja shoqëritë. Askush nuk pati çuar
    289 në mendje që grupi i hacker-ave të laboratorit AI do të avullonte, por ja që
    290 ndodhi.</p>
    291 
    292 <p> Kështu që Symbolics hartoi një plan&#8239;<a href="#foot-4">[4]</a>.  I
    293 thanë laboratorit “Do të vazhdojmë t’ju lejojmë përdorimin e ndryshimeve
    294 tona, por nuk mund t’i hidhni në sistemin MIT të makinave Lisp. Në vend të
    295 kësaj, do t’ju lejojmë hyrje në sistemin e makinave Lisp të Symbolics-it dhe
    296 mund ta xhironi, por kjo është e gjitha çka mund të bëni”.</p>
    297 
    298 <p>Kjo, praktikisht, do të thoshte që na kërkuan të zgjidhnim me kë palë do të
    299 ishim, dhe të përdornim ose versionin MIT të sistemit, ose versionin
    300 Symbolics.  Cilëndo zgjedhje të bënim, do të përcaktonte se te cili sistem
    301 do të shkonin përmirësimet tona. Po të punonin me dhe të përmirësonin
    302 versionin e Symbolics-it, do të përkrahnim vetëm Symbolics-in. Po të
    303 përdornim dhe përmirësonim versionin MIT të sistemit, i binte ta jepnim
    304 punën te të dyja shoqëritë, por Symbolics pa që do të mbështesnim LMI-në,
    305 ngaqë do ta ndihmonim të ekzistonte. Kështu që s’na u lejua më të qëndronim
    306 asnjanës.</p>
    307 
    308 <p>Deri në atë pikë, nuk kisha mbajtur anën e asnjërës shoqëri, edhe pse
    309 ndihesha keq kur shihja se ç’i ndodhi bashkësisë sonë dhe software-it.  Por
    310 tashmë, Symbolics-i e kish bërë të detyruar këtë gjë.  Dhe kështu, në një
    311 përpjekje për ta mbajtur gjallë Lisp Machines Inc. &#8239;<a
    312 href="#foot-5">[5]</a> - zura të riprodhoj krejt përmirësimet që Symbolics
    313 kish bërë te sistemi i makinës Lisp.  I shkrova vetë nga e para përmirësimet
    314 e njëvlershme (dmth, kodi qe i imi).</p>
    315 
    316 <p>Pas ca kohësh &#8239;<a href="#foot-6">[6]</a>, mbërrita në përfundimin që e
    317 mira e të mirave do të ishte të mos shihja fare në kodin e tyre. Kur
    318 njoftonin paraprakisht për ndonjë version beta, që shoqërohej me shënime
    319 versioni, mund të shihja ç’qenë veçoritë e reja dhe mandej t’i
    320 sendërtoja. Në kohën që hidhnin faktikisht në qarkullim diçka, po atë bëja
    321 edhe unë.</p>
    322 
    323 <p>Në këtë mënyrë, për dy vite, ua pengova ta fshinin nga faqja e dheut Lisp
    324 Machines Incorporated, dhe të dy shoqëritë bënë përpara. Por nuk doja të
    325 shpenzoja vite të tëra duke ndëshkuar dikë, thjesht duke i vënë gjoksin një
    326 akti të lig. Kuptova që qenë ndëshkuar paq, ngaqë kishin ngecur në rrjetën e
    327 konkurrencës, e cila nuk do të largohej apo tretej&#8239;<a
    328 href="#foot-7">[7]</a>. Ndërkohë, kish ardhur koha të fillohej ndërtimi i
    329 një bashkësie të re, për të zëvendësuar atë që e zhdukën veprimet e tyre dhe
    330 të tjera.</p>
    331 
    332 <p>Bashkësia Lisp në vitet ’70 nuk kufizohej te MIT AI Lab, dhe hacker-at
    333 s’qenë vetëm në MIT. Lufta e nisur nga Symbolics qe ajo që asgjësoi MIT-in,
    334 por ndodhën dhe ngjarje të tjera. Pati persona që hoqën dorë nga
    335 bashkëpunimi, dhe kjo i vuri shkelmin bashkësisë dhe kështu nuk mbeti
    336 kushedi çë.</p>
    337 
    338 <p>Pasi reshta së ndëshkuari Symbolics-in, m’u desh të gjeja se ç’të bëja më
    339 tej. Duhej të bëja një sistem operativ të lirë, që të qe i kthjellët - e
    340 vetmja mënyrë që njerëzit të mund të punonin tok dhe të shkëmbenin qe përmes
    341 një sistemi operativ të lirë.</p>
    342 
    343 <p>Fillimisht, pata në mendje të bëja një sistem të bazuar në Lisp, por e
    344 kuptova që nuk do të ishte ide e mirë teknikisht. Për të pasur diçka të
    345 ngjashme me një sistem makine Lisp, ju duhet mikrokod për qëllime
    346 speciale. Ky qe ai që bënte të mundur xhirim po aq të shpejtë sa xhironin
    347 kompjuterët e tjerë programet e tyre dhe prapë të kish përparësinë e
    348 kontrollit mbi llojin e të dhënave. Pa këtë, do të përfundonit në diçka të
    349 ngjashme me një përpilues Lisp për makina të tjera. Programet do të bëheshin
    350 më të shpejta, por të paqëndrueshme. Me këtë nuk ka problem, nëse po xhironi
    351 një program në një sistem me ndarje kohe - nëse vithiset një program, nuk u
    352 bë hataja, është diçka që ndodh te programet, me raste. Por kjo nuk e bënte
    353 të mirë për shkrimin e një sistemi operativ, ndaj e hodha poshtë idenë e
    354 krijimit të një sistemi si një makinë Lisp.</p>
    355 
    356 <p>Vendosa më mirë të bëja një sistem operativ të ngjashëm me Unix-in, i cili
    357 do të kishte sendërtime Lisp që do të xhironin si programe
    358 përdoruesi. Kerneli nuk do të shkruhej në Lisp, por do të kishim Lisp. Dhe
    359 hartimi i këtij sistemi operativ, sistemit operativ GNU, qe ai që më shpuri
    360 te shkrimi i GNU Emacs-it. Duke bërë kështu, synoja të kryeja minimumin
    361 absolut të mundshëm të sendërtimeve Lisp. Madhësia e programeve qe shqetësim
    362 shumë i madh.</p>
    363 
    364 <p>Kish njerëz në ato kohë, më 1985, që kishin makina me 1Mb kujtesë, pa
    365 kujtesë virtuale. Këta donin të ishin në gjendje të përdornin GNU Emacs. Kjo
    366 do të thoshte ta mbaja programin sa më të vogël që mundej.</p>
    367 
    368 <p>Për shembull, në atë kohë e vetmja strukturë ripërsëritëse qe
    369 <code>while</code>, e cila qe fare e thjeshtë. Nuk kish mënyrë për të dalë
    370 nga deklarimi <code>while</code>, ju duhej të kryenit “a catch and a throw”,
    371 ose të testonit ndryshoren që xhironte ripërsëritjen. Kjo tregon se sa larg
    372 isha shtyrë për t’i mbajtur gjërat të vogla. Nuk kishte
    373 <code>automjeet</code> dhe as <code>atomjet</code> dhe me radhë; “ngjeshe sa
    374 të mundet” qe fryma e GNU Emacs-it, fryma e Lisp-it për Emacs, që në fillim.</p>
    375 
    376 <p>E qartë që sot makinat janë më të mëdha, dhe nuk veprojmë më kështu. Vëmë
    377 edhe <code>automjeet</code>, edhe <code>atomjet</code> dhe me radhë dhe sot
    378 mundemi të vendosim edhe strukturë tjetër ripërsëritëse. Duam ta zgjerojmë
    379 diçka, por s’duam ta zgjerojmë deri në shkallën e një Lisp-i të
    380 zakonshëm. Njëherë, sendërtova Common Lisp në makinën Lisp, dhe nuk më
    381 kënaqi kushedi. Diçka që nuk më pëlqen dhe aq shumë janë argumentet
    382 fjalëkyçe &#8239;<a href="#foot-8">[8]</a>.  Nuk më duken edhe aq të stilit
    383 Lisp; Do t’i ndërroj ndonjë ditë, por minimizoj kohët kur bëj kështu.</p>
    384 
    385 <p>Ky nuk qe fundi i projekteve GNU që kishin të bënin me Lisp-in. Më vonë,
    386 diku aty nga 1995, po shihnim mundësinë e fillimit të një projekti për një
    387 desktop grafik. Qe e qartë që, për programet në desktop, donim një gjuhë
    388 programimi me të cilën të shkruanim shumë dhe të qe lehtësisht e
    389 zgjerueshme, njësoj si përpunuesi. Çështja qe se cila duhej zgjedhur.</p>
    390 
    391 <p>Në atë kohë, <abbr title="Tool Command Language">TCL</abbr> po reklamohej
    392 rëndshëm për këtë qëllim. Kisha vlerësim shumë të ulët për TCL-në,
    393 pikësëpari ngaqë s’qe Lisp. Ngjante pakëz me Lisp-in, por semantikisht s’qe
    394 e tillë, dhe nuk është aq e qëruar.  Mandej dikush më tregoi një lajmërim me
    395 të cilin Sun-i po përpiqej të punësonte dikë për t’u marrë me TCL-në për ta
    396 bërë “de-facto gjuhën standard për zgjerime” në botë. Dhe mendova, “Duhet ta
    397 ndalim përmbushjen e kësaj”. Kështu filluam të ndërtojmë Scheme-n, gjuha
    398 standard e zgjerimeve për GNU-në. Jo Common Lisp, ngaqë ky qe shumë i
    399 madh. Ideja qe të kishim një interpretues Scheme të hartuar për t’u lidhur
    400 te aplikacionet në të njëjtën mënyrë si lidhej TCL-ja te
    401 aplikacionet. Mandej këtë ta këshillonim si paketën e parapëlqyer për
    402 zgjerime për krejt programet GNU.</p>
    403 
    404 <p>Ka një përfitim interesant që ju vjen nga përdorimi si gjuhë tuajën parësore
    405 për zgjerime i një gjuhe kaq të fuqishme siç do të ishte një version
    406 Lisp-i.  Mund të sendërtoni gjuhë të tjera, përmes përkthimit të tyre në
    407 gjuhën tuaj parësore. Nëse gjuha juaj parësore është TCL-ja, nuk sendërtoni
    408 dot lehtë Lisp-in duke e përkthyer në TCL. Por nëse gjuha juaj parësore
    409 është Lisp-i, s’është aq e zorshme të sendërtohen gjëra të tjera duke i
    410 përkthyer ato. Ideja jonë qe që, nëse çdo aplikacion i zgjerueshëm mbulonte
    411 Scheme-n, mund të shkruanit në Scheme një sendërtim të TCL-së, ose
    412 Python-it, ose Perl-it, i cili ta përkthente atë program në Scheme. Mandej
    413 mund ta ngarkonit këtë në çfarëdo aplikacioni dhe ta përshtatnit në gjuhën
    414 tuaj të parapëlqyer dhe do të funksiononte edhe me përshtatje të tjera.</p>
    415 
    416 <p>Për sa kohë që gjuhët e zgjerimeve janë të dobëta, përdoruesit i mbetet të
    417 përdorë vetëm gjuhën që i jepni. Që do të thotë se njerëzve që dashurojnë
    418 cilëndo gjuhë tjetër iu duhet të konkurrojnë për të qenë ajo zgjedhja e
    419 hartuesve të aplikacioneve - duke thënë “Ju lutemi, hartues i aplikacionit,
    420 vendoseni dhe gjuhën time te aplikacioni juaj, jo gjuhën e atij”. Kështu
    421 përdoruesve nuk u lihet shteg zgjedhje fare - cilido aplikacion që përdorin,
    422 vjen me një gjuhë dhe ngecin në të [atë gjuhë]. Por kur keni një gjuhë të
    423 fuqishme që mund të sendërtojë të tjerat përmes përkthimit të tyre në të, i
    424 jepni kështu përdoruesit një mundësi zgjedhje gjuhe dhe nuk ka pse të bëjmë
    425 më luftë gjuhësh. Kjo është ajo që shpresojmë të bëjë “Guile”, interpretuesi
    426 ynë Scheme. Kishim dikë që punoi verën e shkuar për të përfunduar një
    427 përkthyes nga Python në Scheme. Nuk e di nëse ka përfunduar krejtësisht, por
    428 cilido që interesohet për këtë projekt, ju lutemi, le të lidhet me ta. Pra
    429 ky është plani që kemi për të ardhmen.</p>
    430 
    431 <p>S’kam folur për software-in e lirë, por më lejoni shkurt t’ju tregoj paksa
    432 se çfarë don të thotë. <em>Software</em> i lirë nuk nënkupton çmimin; nuk do
    433 të thotë që e merrni falas. (Mundet edhe të paguani për një kopje, ose të
    434 siguroni një kopje falas.) Don të thotë që keni liri, si përdorues. Gjëja
    435 kyçe është fakti që jeni i lirë ta xhironi programin, i lirë të studioni se
    436 çfarë kryen, i lirë ta ndryshoni që të përputhet me nevojat tuaja, i lirë të
    437 rishpërndani kopje për të tjerët dhe i lirë për të bërë publike versione të
    438 ndryshuara, të zgjeruara. Ky është kuptimi i software-it të lirë. Nëse
    439 përdorni programe jo të lira, keni humbur liri kyçe, ndaj mos e bëni kurrë.</p>
    440 
    441 <p>Qëllimi i projektit GNU është t’ua bëjë më të lehtë njerëzve kundërshtimin e
    442 software-it jo të lirë, i cili shtyp lirinë, e sundon përdoruesin, duke u
    443 ofruar atyre <em>software</em> të lirë për zëvendësim. Për ata që nuk kanë
    444 kurajë morale të hedhin tej software-in jo të lirë, kur kjo sjell ca minuse
    445 në leverdinë praktike, ajo që përpiqemi të bëjmë është dhënia e
    446 alternativave të lira, që kështu të mund të shkoni drejt lirisë me më pak
    447 belara dhe me më pak sakrifica, për sa i takon anës praktike. Sa më pak
    448 sakrifica, aq më mirë. Duam t’ua bëjmë më të lehtë kalimin në liri, në
    449 bashkëpunim.</p>
    450 
    451 <p>Këtu bëhet fjalë për lirinë për të bashkëpunuar. Jemi mësuar t’i mendojmë
    452 lirinë dhe bashkëpunimin me shoqërinë si të jenë të kundërta. Por këtu janë
    453 në të njëjtin krah. Me software-in e lirë jeni i lirë të bashkëpunoni me të
    454 tjerët, si dhe i lirë të ndihmoni vetveten. Me software-in jo të lirë,
    455 dikush ju sundon dhe i mban njerëzit të përçarë. Nuk ju lejojnë të ndani
    456 gjëra mes jush, nuk jeni i lirë të bashkëpunoni ose të ndihmoni shoqërinë,
    457 dhe as të ndihmoni vetveten.  Të përçarë dhe të pashpresë është gjendja e
    458 përdoruesve që përdorin <em>software</em> jo të lirë.</p>
    459 
    460 <p>Kemi prodhuar një segment marramendës software-i të lirë. Kemi bërë ato që
    461 njerëzit thoshin se nuk do t’ia dilnim t’i bënim kurrë; kemi dy sisteme
    462 operativë software-i të lirë. Kemi mjaft aplikacione dhe, kuptohet, kemi
    463 ende plot rrugë për të bërë. Ndaj na duhet ndihma juaj. Do të doja t’ju
    464 kërkoja të merrni pjesë si vullnetar në projektin GNU; na ndihmoni që të
    465 hartojmë <em>software</em> të lirë për më shumë punë. Hidhini një sy <a
    466 href="/help/help.html">gnu.org/help</a> për të pasur një ide se si mund të
    467 ndihmohet. Nëse dëshironi të porosisni gjëra, ka një lidhje për këtë punë,
    468 te faqja hyrëse. Nëse doni të lexoni rreth çështjesh filozofike, shihni te
    469 ndarja /filozofi. Nëse po kërkoni software të lirë që mund ta përdorni,
    470 shihni te /directory, ku sot radhiten gati 1900 paketa (çka është vetëm një
    471 pjesë e software-it të lirë). Ju lutemi, na shkruani më tepër dhe
    472 kontribuoni për ne. Libri im me sprova, “Free Software and Free Society”,
    473 gjendet në shitje dhe mund të blihet te www.gnu.org&#8239;<a
    474 href="#foot-9">[9]</a>.  Happy hacking!</p>
    475 <div class="column-limit"></div>
    476 
    477 <h3 class="footnote">Poshtëshënime</h3>
    478 <ol>
    479 <li id="foot-1">Guy Steele hartoi grupin origjinal të komandave simetrike Emacs; mandej ai
    480 dhe unë zumë të vinim në jetë Emacs-in (përsipër TECO-s), por pas një
    481 sesioni të gjatë programimi të përbashkët, Steele-i zuri të rrëshqiste tej,
    482 kështu që Emacs-in e përfundova unë.  Të tjerë, përfshi veçanërisht Eugene
    483 C. Cicciarelli-n dhe Mike McMahon-in, dhanë ndihmesë thelbësore më vonë.</li>
    484 
    485 <li id="foot-2">Bernie Greenberg thotë se sendërtimi i Dan Weinreb-it për Emacs në Lisp
    486 Machine kish dal para sendërtimit të Greenberg-ut për Multics.  Kërkoj
    487 ndjesë për gabimin.</li>
    488 
    489 <li id="foot-3">Plani i Greenblatt-it, si e kuptoja unë, qe të punësoheshin me kohë të
    490 pjesshme njerëz të laboratorit, që kështu të mund të vazhdonin të punonin te
    491 AI Lab.  Në vend të kësaj, Symbolics i punësoi me kohë të plotë, kështu që
    492 këta reshtën së punuari në MIT.</li>
    493 
    494 <li id="foot-4">Rrethanat e këtij plani, të cilat nuk i deklarova shprehimisht gjatë fjalës
    495 sime, qenë që gjatë një periudhe fillestare hacker-at e ish-AI-Lab-it, ata
    496 në Symbolics ose ata në LMI, vazhduan t’i jepnin ndryshimet e tyre te
    497 sistemi MIT Lisp Machine - edhe pse kontrata nuk e detyronte këtë hap.
    498 Plani i Symbolics-it qe ta thyente në mënyrë të njëanshme këtë bashkëpunim.</li>
    499 
    500 <li id="foot-5">Jo se më dhimbsej veçanërisht fati i LMI-ë, më tepër ngaqë s’doja që të
    501 lejohej Symbolics të përfitonte në kurriz të AI Lab-it me agresionin e vet.</li>
    502 
    503 <li id="foot-6">Ky pohim është keqkuptuar sikur thotë që unë kurrë nuk kam parë te kodi i
    504 Symbolics-it.  Në fakt pohon që kisha parë në të, fillimisht.  Kodi burim
    505 nga Symbolics qe i passhëm në MIT, ku më lejohej ta shihja, dhe fillimisht
    506 kjo qe rruga se nga i mora vesh ndryshimet e tyre.
    507 
    508 <p>Por kjo do të thoshte që duhej të bëja përpjekje shtesë për ta zgjidhur
    509 ndryshe çdo problem, me qëllim që të shmangja kopjimin e kodit të
    510 Symbolics-it.  Pas ca kohësh, pashë se qe më mirë të mos shihje fare.  Në
    511 këtë mënyrë mund të shkruaja kod sipas rrugës më të mirë, pa vrarë mendjen
    512 se ç’përmbante kodi i Symbolics-it.</p></li>
    513 
    514 <li id="foot-7">Symbolics në një rast protestoi te MIT se puna ime, duke u prishur planin, i
    515 kish kushtuar Symbolics-it një milion dollarë.</li>
    516 
    517 <li id="foot-8">Nuk e kam problem që një funksion shumë kompleks dhe i rëndë të përdorë
    518 argumente fjalëkyçe.  Ajo që më bezdis është të bësh funksione të thjeshtë
    519 elementarë të tillë si “member” t’i përdorin ato.</li>
    520 
    521 <li id="foot-9">Më 2021, ly libër mund të blihet prej <a
    522 href="https://shop.fsf.org/books-docs/free-software-free-society-selected-essays-richard-m-stallman-3rd-edition">
    523 GNU Press</a>.</li>
    524 </ol>
    525 </div>
    526 
    527 <div class="translators-notes">
    528 
    529 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
    530   </div>
    531 </div>
    532 
    533 <!-- for id="content", starts in the include above -->
    534 <!--#include virtual="/server/footer.sq.html" -->
    535 <div id="footer" role="contentinfo">
    536 <div class="unprintable">
    537 
    538 <p>Ju lutemi, pyetjet dhe kërkesat e përgjithshme rreth FSF-së &amp; GNU-së
    539 dërgojini te <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.  Ka
    540 gjithashtu <a href="/contact/">mënyra të tjera për t’u lidhur me</a>
    541 FSF-në.  Njoftimet për lidhje të dëmtuara dhe ndreqje apo këshilla të tjera
    542 mund të dërgohen te <a
    543 href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>
    544 
    545 <p>
    546 <!-- TRANSLATORS: Ignore the original text in this paragraph,
    547         replace it with the translation of these two:
    548 
    549         We work hard and do our best to provide accurate, good quality
    550         translations.  However, we are not exempt from imperfection.
    551         Please send your comments and general suggestions in this regard
    552         to <a href="mailto:web-translators@gnu.org">
    553 
    554         &lt;web-translators@gnu.org&gt;</a>.</p>
    555 
    556         <p>For information on coordinating and contributing translations of
    557         our web pages, see <a
    558         href="/server/standards/README.translations.html">Translations
    559         README</a>. -->
    560 Përpiqemi fort dhe bëjmë sa mundemi për të ofruar përkthime me cilësi të
    561 mirë dhe të përpikta.  Megjithatë, nuk jemi të përjashtuar nga
    562 papërsosmëritë. Ju lutemi, komentet dhe këshillat e përgjithshme lidhur me
    563 këtë dërgojini te <a
    564 href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.</p><p>Për
    565 të dhëna mbi bashkërendimin dhe parashtrimin e përkthimeve të faqeve tona
    566 web, shihni <a href="/server/standards/README.translations.html">README për
    567 përkthimet</a>.</p>
    568 </div>
    569 
    570 <!-- Regarding copyright, in general, standalone pages (as opposed to
    571      files generated as part of manuals) on the GNU web server should
    572      be under CC BY-ND 4.0.  Please do NOT change or remove this
    573      without talking with the webmasters or licensing team first.
    574      Please make sure the copyright date is consistent with the
    575      document.  For web pages, it is ok to list just the latest year the
    576      document was modified, or published.
    577      
    578      If you wish to list earlier years, that is ok too.
    579      Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
    580      years, as long as each year in the range is in fact a copyrightable
    581      year, i.e., a year in which the document was published (including
    582      being publicly visible on the web or in a revision control system).
    583      
    584      There is more detail about copyright years in the GNU Maintainers
    585      Information document, www.gnu.org/prep/maintain. -->
    586 <p>Të drejta kopjimi &copy; 2003, 2007, 2013, 2021 Free Software Foundation,
    587 Inc.</p>
    588 
    589 <p>Kjo faqe mund të përdoret sipas një licence <a rel="license"
    590 href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons
    591 Attribution-NoDerivatives 4.0 International License</a>.</p>
    592 
    593 <!--#include virtual="/server/bottom-notes.sq.html" -->
    594 <div class="translators-credits">
    595 
    596 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
    597  </div>
    598 
    599 <p class="unprintable"><!-- timestamp start -->
    600 U përditësua më:
    601 
    602 $Date: 2021/12/01 21:30:08 $
    603 
    604 <!-- timestamp end -->
    605 </p>
    606 </div>
    607 </div>
    608 <!-- for class="inner", starts in the banner include -->
    609 </body>
    610 </html>