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>< ></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,  <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ë  <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  <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 <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.  <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  <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 <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  <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 <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ë & GNU-së 539 dërgojini te <a href="mailto:gnu@gnu.org"><gnu@gnu.org></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"><webmasters@gnu.org></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 <web-translators@gnu.org></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"><web-translators@gnu.org></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 © 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>