Bevertės programavimo kalbos?

pascal-code.jpg

Ar yra toks dalykas kaip bevertė programavimo kalba? Man toks klausimas iškilo diskutuojant su Tadu apie Pascal programavimo kalbos naudojimą mokyklose mokinant programavimo pagrindų.

Negi Pascal per daug bloga mokintis programavimo pradmenis? Sukurta dar 1970 kaip lengva programavimo kalba skatinanti struktūrinį programavimą iki mūsų dienų ji atkeliavo Objektinio Paskalio pavidalu, kurio geriausiai žinomas kompiliatorius yra CodeGear Delphi, naudojamas 1.75 milijono programuotojų visame pasaulyje. Beje, visi norintys pabandyti Delphi gali parsisiųsti ir kurti programas su visiškai legalia ir nemokama TurboDelphi versija.

Paskalis turi keletą svarbių savybių, itin aktualių pradedančiajam:

  1. Kintamieji privalo būti aprašomi procedūros ar funkcijos pradžioje, todėl niekada nepasimesi kur koks kintamasi galioja;
  2. Begin-End blogai išryškina ciklų ar sąlyginių sakinių pradžias ir pabaigas;
  3. Prieš paleidžiant programa turi būti sukompiliuota, kas sumažina programavimo klaidų skaičių;

Atrodytų smulkmenos ir patyrusiam programuotojui 1 ir 2 yra nepatogumas, o 3 tampa savaime suprantamu dalyku, pradedančiajam suteikia aiškumo: „A! Čia Begin, reiškias pradedam kažką, čia End – ciklo pabaiga.“ Man iki šiol C stiliaus programavimo kalbos atrodo tokios… retos, kur daugiau tuščių eilučių ir tarpo simbolių nei paties kodo.

Jei ne Pascal, tuomet ką pasirinkti mokinant programavimo pagrindus?

C++ ? Užmušite bet kokį domėjimąsi programavimu, jei pradėsite aiškinti apie pointerius, adresus, referencus ir tai, kad sukurtą pointerį reikia vėliau sunaikinti. Nepamirškime paminėti, kad String iš tiesų yra klasė ir jai operatorius + yra overloadintas

Ruby/Java/Python? Vien tam kad paleistum pirmąją „Hello World“ programą nieko nenutuokiančiams apie programavimą mokinukams pirmiausia reikės išaiškinti, kas yra klasė, kad kažkuri klasė gali būti statinė ir turėti Main metodą ir jau tada į tą metodą galima rašyti savo std.out(„Hello World!“). Oj, palaukite, o kaip tą programą paleisti?.. Kokia ten komandinė eilutė?

„c:\Program Files\Java\jdk1.6.0_03\bin\java.exe“ -cp src\;helloworld.jar com.MyFirstSample“

Čia be kompiliavimo komandinės eilutės, beje… Yep, pats tas humanitarui dešimtokui…

C#? Greitai galima pasiklysti tarp visų namespace ir ką jie daro, todėl prieš tai mokytojai turėtu pravesti metus trunkančia jų apžvalgą. Iš esmės, .NET su C# galėtų būti pakaitalas Pascal, bet negi dabar imsim perrašinėti visus vadovėlius vien dėl to kad norim tapti modernūs? Pradedančiajam  C# bus per daug sudėtinga vien dėl 100% objektiškumo.

PHP? Nebent mokinti programuoti webui, bet prieš tai dar reiks paaiškinti kas tai yra web serveris, Apache, virtualios direktorijos, POST ir GET metodai… Mokiniui apibendrintame programavimo kurse tikrai to reikia?

Tai visgi gal liekam prie Pascal?

program Labas;
begin
WriteLn("Labas pasauli!");
end.

Tada Ctrl + F9 Paskal’io redaktoriuje ir nuspaudę F5 iš karto matome norimą rezultatą.

Mokykloje ar universitete dar nei vienas neišmoko programuoti taip, kad daugiau niekada nereiktų mokintis papildomai. Mokymo įstaigoje galima gauti tik pradmenis ir jų pagalba atrandi susidomėjimą programavimu arba ne. Lygiai taip pat jei mokintumėtės fizikos ir imtumėte reikalauti kiekvienoje mokykloje naujausios laboratorinės įrangos, nes, mat, senoji dar iš 1960-ųjų jau visai atgyveno ir nebelygis su ja mokintis.

Programavimo kalbos atsiranda ir palengva išnyksta jas pakeičiant naujesnėmis, tobulesnėmis ir patogesnėmis. Kiekviena jų atspindi sukūrimo laikotarpiu naudotas technologijas, programavimo metodus, idėjas ir paskirtį. Jegu atsiranda naujų programavimo kalbų ar senosios tampa visiškai bevertės? Tik ne Pascal, nes ji iki šiol puikiai atlieka savo paskirtį: mokina programavimo.

Jeigu šis įrašas patiko, nepatingėkit pakomentuoti arba užsiprenumeruoti RSS srautą.

108 komentarai

  1. Visiškai su tavimi sutinku! Daug kam Paskalis atrodo atgyvena, bet iš tiesų tai vis dar yra pati geriausia programavimo kalba pradėti pažinčiai su jomis… O toliau jau kiekvieno pasirinkimas :)

    • Labai nesutiksciau, esu IT Engineer, susidomejau programavimu kaip pirmai programavimo kalbai pasirinkai C# nes ir taip esu Microsoft zmogus, taigi pradejau pradinuku pamokas Microsoft Virtualioje Akademijoje ten net pasakyta kad C# lengviausia mokintis nuo 0, nes seniems programuotojams ira sunku perlipti per save naujuose dalykuose kada priprates prie kazko kito.

  2. Keisti faktai:
    1. Paskalis buvo filosofas daug dėmesio skyręs matematikai ir pan. mokslams, kas yra neįprasta.
    2. Pascal yra pirmoji programavimo kalba.
    3. Iš pascal gimė visos kitos kalbos.

    Tai gi manau pascal yra pats geriausias variantas mokyklai, nes simple ir jos kokia nors dali bus kitose kalbose.

  3. Pilnai sutinku. Nesuprantu tu kurie rekia, kad Pascal atgyvenes. Atgyvenes kam? Hello worl? A+b ? Mokykloje nieko zymiai sudetingesnio ir nera, kam pascalis netik, kad neatgyvenes, bet ir idealiai tinkamas.

  4. Turbūt kad ir kaip, Arvydai, stengeisi sudirbti kitas kalba prieš Pascal, tavo argumentai atsisuko prieš tave patį.

    Jeigu C++ atima programavimo džiaugsmą, kai pradedi dėstyti pointerius, argi jau taip svarbu apie juos dėstyti mokykloje? Nuimk pointerius, trumpai paaiškink apie klases ir… Vualia, štai ir visas Pascal paprastumas.

    Niekas, išskyrus Java, man nedavė suprasti kas yra objektinis programavimas. Gal ji ir ne mokykloms skirta, bet mokytis su ja yra grynas malonumas. Apie Ruby ir Python kalbėk tyliau – tai juk beveik pseudokodas.

    Dar prieš metus visi klykė kokia ta PHP kalba paprasta ir kad ją moka kiekvienas nupiepęs dvylikametis. 12 metų – nepilnametystė, tad nematau sunkumo vaikams paaiškinti ką reiškia GET ir POST metodai.

    Jeigu kalbėsime apie kalbų paprastumą, Pascal’is vien dėl to neturėtų būti numatytoji programavimo kalba. Čia nėra fenomenas, o faktas – vaikiai (ypač merginos) stoja į informatiką ir sako „Aš mokiausi paskalio, kas tas namespace, pointeriai, templates, objektinis programavimas?“ Tegu iš karto gauna supratimą koks velnias yra tas programavimas. Matematikoje, dėstant integravimo pagrindus, obuoliai ir apelsinai kaip pavyzdys taip pat nenaudojami.

    Galų gale, tas 1.75 milijono atrodo skurdžiai juokingai prieš 99.55% kitų programavimo kalbų vartotojus.

  5. noTime: Aš nesudirbu, aš tiesiog aiškinu, kad Pascal yra paprasčiau ir aiškiau.

    C++? Bet tai kuom tada geriau už Pascal, jei kalbame apie paprastumą? C++ kad ir kaip norėsi pointerių nenuimsi, nes tai dalis programavimo. Viskas yra pointeris ir sukurtą reikia sunaikinti, net tą patį String.

    Taip, Java yra puiki mokintis objektinį programavimą, tai jei pats aiškini, kad ji ne mokykloms skirta, kodėl naudoji kaip argumentą? Aš savo įraše kalbu apie mokinimąsi, o ne advanced malonumų ieškojimą. Vėlgi, kas iš to, kad Ruby/Python pseudokodas? Savo žinias rodai? Na, aš irgi žinau, bet diskusijai tai nieko neduoda…

    Tai jei nori mokinti mokykloje PHP, reiškias visas kursas turi būti apie web programavimą? GET ir POST metodai tik dalis ką reiktų aiškinti be apskritai skirtingos Web ir Win32 programavimo koncepcijos. Norės mokytoja paaiškinti, kad prie kintamojo $a pridėjus $b pamatyti rezultatą reikia nuspausti Refresh naršyklėje, kokios mergičkos iš viso supanikuos nieko nesuprasdamos kas čia vyksta su ta naršykle be pačios sudėties.

    Vat kai jau vaikinai ar merginos stoja į informatiką, tegu tada ir gilinasi į visus namespace, pointer, template ir class. Iš visų pas tave klasėje besimokinančių kiek stos į programavimą? Vienas ar du įskaitant tave, o tada kam visiem kitiem būsimiem teisininkam, medikam ar literatūrininkam apkrauti galveles tuo, ko jiems daugiau gyvenime nereikės? Tu akimirką sustok ir pagalvok ne vien apie save kaip superduper-uber-krootą-visažinį programuotoją, o apie visus besimokančius ir gal tada suprasi, kad ne vien dėl tavęs mokomi dalykai ir kuriamos mokymo programos.

    Programuotojų skaičius milijonais tėra tik referencas, jau minėjau, kad programuojant didžiausią reikšmę turi ne programavimo kalbos sintaksė, o papildomi įrankiai, IDE ir daugybė jau sukurto kodo. Aš jau senai atsisakiau ambicijų ir ieškau greičiausio ir patogiausio būdo įvykdyti programavimo užduotį, net jei man tenka programuoti VB.NET.

  6. Įžanga: kalbu tik apie pagrindus.

    C++: visiškai sutinku. Tai svarbu vėliau, nes be pionterio, referenco suvokimo toli nenueisi.

    Ruby/Java/Python: na čia Arvydai surašydamas į vieną vietą šias kalbas labai stipriai suklydai :-) Ruby ir Python galima, Java ne. Java būtų tikrai per daug sudėtinga išaiškint, nes ji leidžia tik objektinį programavimą, tačiau jos yra nemažai IDE variantų. Kitos dvi kalbos neverčia kurti objektų, aiškintis kas tai per velnias, kas yra paveldėjimas ir taip toliau.

    Noriu tik priminti, kad Paskalis tėra kalba+kompiliatorius, o visas tas paplitęs interfeisas – kaip ir IDE. Galutinis variantas visų yra vykdomasis arba interpretuojamas failas, kurį galima vykdyti paspaudus du kartus su pele. Kur čia sudėtingumas?

    C# – kaip ir Java.

    PHP – kita paskirtis, yra kreivumų (na, visose jų pasitaiko).

    Jeigu akcentuoji paprastumą, tai Pascal tikrai nėra įrankis visų priekyje. Deja, jis verčia žiūrėti ir mokytis kaip reikia parašyti, negu KĄ reikia parašyti. O tai turėtų būti svarbiausia mokant programuoti – ugdyti loginį mąstymą, o ne sintaksės ypatybes ir ribotumą.

    P.S. nesu tikras, bet manau kad iš C daugiau kalbų išsirutuliojo, negu iš Pascal.

  7. Ir dar (atsiprašau, kad teršiu ;)) : Pascal „Hello world“ reikia aiškinti 4 eilutes, o pvz Ruby – vieną:

    puts „Hello world!“

    Kitų kalbų naudojimas leistų mokykloms rinktis operacines sistemas, o Linux nėra (kiek žinau?) Pascal IDE, kuriuo visi yra įpratę naudotis. C/C++, Java, Ruby, Python – tekstinės ir grafinės priemonės visose platformose.

    • Na yra linux’ui yra tas pascalis ;) MIFe prisimenu dar programas juo kompiliuodavau. Tačiau kaip tiksliai modulis vadinasi nežinau. Reikėtų po Ubuntu distribucijas pasiknaisiot.

  8. Vidmantai: tai sutinku, gilintis galima iki beprotybės, šiaip apjungdamas kalbas tiesiog bandau sutrumpinti komentarus :)

    Bet pamąstykim šiek tiek… Juk bet kurią programavimo kalbą mokinantis nuo nulio reikia „žiūrėti ir mokytis kaip reikia parašyti, negu KĄ reikia parašyti“ imtum Paskalį, C++, Ruby ir t.t.

    PHP prašyti „Hello World“ užtenka vienos eilutės :) Tik vat Paskalis panašus į logišką žmogaus mąstymą: programą pavadinu Labas, dabar pradedu darbą, išspausdinu eilutę ir darbą baigiu. Bet atkreipk dėmesį kur link veda diskusija: Paskalį reikia pakeisti vien dėl to, kad tai yra Paskalis ir nesvarbu, kad pilna sukurta metodinės literatūros, užduočių ir pavyzdžių :D

    Free Pascal sukasi and krūvos operacinių, o IDE labai panašus į Delphi pavadinimu Lazarus taip pat veikia Linux, FreeBSD ir bala dar žino kur. ;)

    • „Tik vat Paskalis panašus į logišką žmogaus mąstymą: programą pavadinu Labas, dabar pradedu darbą, išspausdinu eilutę ir darbą baigiu.“

      Arvydai- jei atsakyti humoristiskai, tai siaip jau galima visiskai nelogiskai kazka pradeti ir dar nelogiskiau- uzbaigti :-)
      O biski rimciau- nemanau, kad vien tik Paskalis yra labiausiai panasus i mastymo procesa. Man labiausiai zmogiskas mastymas asocijuojasi su Python kalba.
      Taip kad kiekvienam – savo. Arba reiketu kazkaip pravesti kazkokius objektyvius tyrimus, kurie ir parodytu kokia kalba labiausiai tinka pradedanciajam… Kol to nera- tai telieka tik musu subjektyvus pasapaliojimai. Kita vertus dristu uzduoti toki „sukta“ klausima kuris gali pasufleruoti atsakyma – kuri snekamoji kalba geriausiai tinkama vaikuti ismokinti kalbeti ? Matomai tai bus tiesiog ta kalba kuria sneka aplinkiniai, o vaikui ne tiek svarbu kuria ismokt,- perkas praktiskai bet kuria kalba kai ateis laikas susineketi :-)
      Manau si analogija panasiai tinka ir del programavimo kalbos pradedanciajam… Tai manau gal ir butu saunu, kad sakykim kazkaip mokiniai galetu patys pasirinkti kuria kalba jie noretu ismokti.
      Duokime jiem patiems nuspresti…

  9. Gal aš lūzeris, Lazarus man nepavyko paleisti savo laiku :-) Telika tikėtis, kad reikalai pasitaisė.

    Dėl „kaip“, o ne „ką“, tai sakyčiau yra aktualu tas eiliniam žmogui veltui skiriamas valandas [išmokyti sintaksės subtilybių] minimalizuoti.

    Ne, aš nesu iš tų, kurie prieš kažką tik dėl to, kad būti prieš kažką :-) Tiesiog matau, kad Paskalio kišimas į galvą ne tik kad nebuvo naudingas, bet netgi žalingas mokyklos laikais. IMHO, čia tik vieno mano nuomonė, kitiems tikiu, kad Pascalis = geri seni laikai. Daug literatūros, o ypač lietuvių kalba nereiškia kad ta literatūra yra gera. Kai pažiūri, kai knygose rašo pavyzdį: var a, b, c, d: integer, tai žinai, norisi miške išsišaukti :-) Nes vėliau šitam įpročiui išgyvendinti daug burnos išaušinti reikia.

    Dėllll „daug literatūros“: užtenka riboti save prastos kokybės lietuviškais vertalais. Pasaulinė knygų apie programavimą rinka rodo, kad knygų apie Pascal ar Delphi išvis nebematyti parduodamų knygų žemėlapiuose. Netikiu, kad tai nieko neparodo. (http://radar.oreilly.com/archi.....mar_4.html)

  10. Galbūt nežinojai, bet Lietuvoje yra profilinis mokymas, t.y. imi tai, kas tau įdomu ir ko reikės stojant.

    Egzą laikysiu aš ir mano draugas. Kiti ateina pažaisti konterio, pasėdėt One.lt arba išvis neina. Teisininkai, medikai, literatai… :D

  11. Vidmantai: Na, man asmeniškai dabar jau visiškai nesvarbu su kokia programavimo kalba programuoti. Viskas tėra tik sintaksės išmokimo ir pripratimo prie IDE laiko klausimas.

    Lietuviška programavimo literatūra niekada nespindėjo ir nespindės, nebent tai bus tiesioginis užsienio autoriaus vertimas, bet aš ir nesiskundžiu. Nuo tada kai pradėjau naudoti internetą išmokau susirasti informacijos pats. Literatūros kiekis neparodo technologijos patogumo ir efektyvumo.

    noTime: Yep, žinau apie profilinį mokymąsi, bet vis tiek reikia surinkti tam tikrą dalykų skaičių, todėl tie teisininkai, medikai ir literatai eina :). Įstosi į univerą ir labai linkiu, kad gautum mokintis tai kas tau patinka :) Šudas tik paskui darbe, kai tenka daryti tai kas patinka mažiau ir mažiau ir labiau tai į ką nenori net pažiūrėti.

  12. Daug jau čia prišnekėjot, bet pasisakysiu ir aš. Mokykloje mes turėjom žiauriai gerą (lyginant su dauguma) mokytoją. Iš pradžių mokėmės Pascal, poto žaidėm su Delphi, galiausiai supažindino su PHP.
    Ką aš galiu pasakyti šiandien? Paskalis reikalingas norint išlaikyti egzus, o poto? Viskas. Jei mokykloje praleisi 3 metus šlifuodamas kalbą, kurios gyvenime nebepanaudosi, baigęs mokyklą prakeiksi visą švietimo sistemą.
    Galima būtų skųstis ir Paskalio dokumentacija, bet nėra prasmės, juk po egzaminų tau jo nebereiks. Paskalis gal ir geras būtų, jei jis būtų naudojamas tik supažindinimui su programavimu (pirmus metus tarkim), bet poto jau drąsiai galima imti ką nors šiuolaikiškesnio.

  13. Um. Kiekvienas žmogus aišku skirtingas, bet programuotojai yra išvis ne žmonės (imho jie yra aukštesnės rasės gyvūnai, nei žmonės, bet čia kita tema). Visi, kurie rėkia, kad yra geresnių mokymui skirtų programavimo kalbų nei Pascal, tegul prisimena kaip jūsų klasiokės vargo su Pascal. Ir tada tegul pamasto, kaip jos būtų vargusios su C ar Python ar bet kuo kitu.

    Kita vertus jeigu kalbėti apie informatiką mokykloje tai būtų daug naudingiau ją išskirti į elementarią logiką (ką paprastai mokina tik universitetuose kažkodėl), kuri mokina mąstyti, kad „jei A, tai B“ tai dar nebūtinai „jei B, tai A“ ir turėti atskirą kompiuterinio raštingumo kursą – išmokti susirasti Google antivirusą ir jį įsidiegti daug svarbiau, negu paskaliu per kontrolinį parašyti mintinai išmoktą „writeln(‘Įvesk skaičių’); readln(n);“

  14. Armandai, suprask, Paskalis tėra viena iš daugybės algoritmavimo kalbų. Geras programuotojas ne tas, kuris moka programavimo kalbą, o tas, kuris moka algoritmuoti. Tada programavimo kalba tėra įrankis sukurti algoritmui.

    Dominykas: Visiškai sutinku ir tu puikiai apibendrinai tai, ką aš norėjau pasakyti. Jie jau keisti programavimo kalbą, tai geriau keisti iš esmės kursą apie programavimą. Hmm.. šulėj kiek pamenu mane mokino logiką, bet gal dabar gal jau nebe…

  15. Nesikabinekit prie mokykloj destomu dalyku lygio, gylio ir plocio.
    Svarbiau mokinio suvokimas, kad jei reiks – ismoksiu ir padarysiu, kaip kad ismokau ir padariau dabar.

    Todel paskalis tiesiog super. Neuzsiemu programavimu ir niekad neuzsimsiu, bet is paskalio pamoku ir paskaitu supratau, kad reikalui esant koki paprasta reikaliuka visad suprograminsiu, ar tai bus matiekos uzdavinio baigtinis atvejis, ar web puslapis, ar java appletas.

  16. Atgalinis pranešimas: elt.lt » Blog Archive » Apžvalga. Šiandien aš skaičiau… #24

  17. Atgalinis pranešimas: Blogorama #308 : nežinau.lt

  18. Na, as truputi nerandu rysio tarp bevertiskumo ir „programavimo mokykloje“. Paskui atsiranda „uzuojauta non-programuotojams“ ir IDE klausimas. Vekiau win32.. Istorija?.. Matyt ne mano galvai tokius dalykus susiet.

    Savo nuomone, antai, ikisiu vistiek. Kalbant is savo stovyklos – man pascal’io sintakse buvo kancia (t.y. vis dar yra kancia, iki egzu) kai pradejau ji mokytis. Aisku, pagrindai ir panasiai, sunkiai kazkaip ejos, labai jau lauztas tas Pascal’is.

    Nezinau kaip kam, bet man programavimas tapo daug lengvesnis, kai SAVARANKISKAI pradejau mokintis c/c++ (kodel Jus jas isskyret?). Kintamuju deklaravimas, sintakse daug ikandamesne, nei Pascal’io (cia mano stovyklos ismintis). Kas del f-ju – Pascalyje tai yra tragedija. Dar svarbiausiai f-jos padalintos i: F-jas ir Proceduras. Kur logika? Dar labai erzina tas BEGIN ir END. bent jau man { ir } yra zymiai patogiau. Pascalio didziausias minusas yra kabliataskiai loginiuose ir cikluose. Tai tikrai erzina.

    Nezinau kaip kas, bet as reikalausiu egzamina laikyti c/c++, java, kad ir perlu ar python’u, bet tik ne pascal..

  19. Kažkas pasirašęs Edgaru prie mano straipsnio (http://blog.sandbox.lt/page/in.....+mokyklose) pridėjo komentarą apie šį tavo straipsnį. Nesvarbu kas.

    Bet matau tu visiškai nesupranti python’o taip pat :) Kitą kartą prieš ką nors rašydamas bent jau paanalizuok arba gal geriau tiesiog patylėk apie tai ko nežinai. Ir python’as jau dabar daug labiau tinkamas teisininkams, medikams ir t.t. Vien dėl pointer’ių nebuvimo (taip paskalis pointer’ių nepadeda išvengti) ir bereikalingo statinio programavimo, kuris tau be priežasties taip patinka. O apie python OO ir paleidimą išvis nusišnekėjai (vien dėl to, kad suplakei su Java).

    Neįsižeisk, bet kaip galima diskutuoti su žmogumi, kuris net nesiteikia pasižiūrėti to ką analizuoja? Gal nenusileisk iki seimūnų lygio.

  20. Uhh kokią diskusiją praleidau ;-) Pilnai sutinku su noTime, kad tiesiog galima atmesti pointerius ir adresus iš C++ ir viskas bus ok. Nereikia nuo pradžių aiškinti visų kalbos galimybių, o vėliau palaipsniui galima ir prie jų prieiti. Be to, sakyk ką nori, bet pradedančiąjam kalbos sintaksė yra labai svarbi. Pamenu, kai pradėjau programuoti, perėjau nuo Q-Basic prie pascal, daug keikiaus dėl pačios sintaksės (taip, dabar tai atrodo juokinga). Tuo tarpu C/C++ sintaksė yra „universalesnė“ – realiai naudojama daugiau kalbų, kurių sintaksė panaši į šią. Apie Python irgi norėjau parašyti, bet matau Dalius tai atliko vietoj manes.

    Sakai „paskalio daugiau literatūros“. Bet ar čia ne švietimo problema, kad neleidžiama nauja literatūra? Kad mokytojai nesikelia kvalifikacijos, o gyvena praeitu tūkstantmečiu? Manau, tai ne rodiklis.

    Nepyk, Arvydai, bet atrodo, kad tu betkokiu atveju nori apginti savo nuomonę, visiškai nesigilindamas į kitų žmonių argumentus.

    P.S. Sakai visiškai nesvarbu kokia kalba programuoti. O kaip kalbos, besiremiančios predikatų logika? ;-)

  21. Aš labai nustebęs matydamas tiek daug nepatenkintų dėstoma Paskalio kalba mokyklose. Tikrai nėra jokio skirtumo, kokia kalba mokoma. Kalbą galima imti ir pakeisti bet kuria kita ir nemanau, kad iš esmės kažkas pasikeis. Ok, pakeiskime į kokį nors C# (čia tik pvz., nebūtinai C#). Žinoma ši kalba palaikymo gal ir daugiau susilauks iš moksleivių pusės, nes ji mat neatgyvenusi ir daugybė programuotojų ją naudoja. Na ir ką, o gi tą kad mokinys vis vien parašys tą patį, naudodamasis tomis pačiomis priemonėmis kaip ir paskalyje, t.y. panaudos sąlygos sakinius, panaudos ciklus, priskyrimo operatorius, sudėtį, atimtį, funkcijas/procedūras (C#’e jie bus vadinami metodais). Netgi jei įtrauktų į mokyklos kursą objektinio programavimo pagrindus, tai tam taip pat tinka paskalis (yra klasės, yra metodai ir t.t.). Kita vertus Paskalio kalba turi privalumų:
    – Sintaksė yra griežta, o tai padeda suvokti kas ir iš kur. Kaip ir matematikoje, jei neparašysi kad x priklauso natūraliųjų skaičių aibei, tai balą gausi mažesnį, ar ne?
    – Sintaksė yra aiški. Kaip sau norit, bet netikiu, kad „for(i=0; i < 100; i++)“ yra aiškiau už „for i := 1 to 100 do“. O ir palyginimo operatoriai daugelyje kalbų (skirtingai nei, kad paskalyje) yra įprasti „==“, o priskyrimo operatoriai „=“. Pradedantieji tikrai labai dažnai daro klaidas palygindami rašydami tik „=“. Paskalyje šios problemos nėra, nes „=“ yra palyginimas kaip ir matematikoje. Na ir taip toliau…
    -Pati Pascalio IDE (Turbo Pascal ar ką jūs ten dabar mokyklose naudojat) labai lengvai įdiegiama: copy/paste ir paleidi.

    O šiaip toks kursas yra skirtas suvokti, ką veiksi jei būsi programuotojas, kad suvoktum ar programavimas tau skirtas. O, kad ir kokią kalbą bepasirinksi, visvien veiksi tą patį ar ne? Rašysi JEI tas tada daryk taip nuo tiek iki tiek, tiek ir tiek kartų:) Juk taip?

  22. Dummas: Skaityk tarp eilučių. Aš klausiu ar Pascal yra bevertė programavimo kalba vien todėl kad ji „paseno“ ir „nebeatitinka industrijos standartų“. Jei vien begin-end tave erzina, tai dar mažai programavęs: pala, reiks DB lenteles kurti, duomenis atvaizduoti, juos redaguoti. Kai tai taps rutina, begin-end bus smulkmena palyginus su tuo kaip erzina pasikartojantis programavimas.

    Dalius: Įžeisti tavęs ir tavo mylimos programavimo kalbos nenorėjau. Čia galima labai daug gilintis į smulkmenas apie programavimo kalbų niuansus, bet vis tiek turėsi pripažinti, kad nesvarbu kokia programavimo kalbą mokinsies mokykloje, ten išmoksi tik programavimo pagrindų, o ne superduper advanced kodinimo. Jeez, ko visi taip asmeniškai priima kai paminiu kokią programavimo kalbą niekuo nepranašesnę už Paskalį mokintis programuoti? Kuom Paskalis blogai? Per daug begin-end reikia parašyti? Juk tai tik sintaksės dalis, taip pat kaip C/C++ {}. Sunku suvokti tik procedūrinį programavimą? Paskaitytkit Dominyko komentarą ir pagalvokit kaip kankinosi jūsų klasiokės bandydamos suprasti Pascal procedūrinį programavimą, o tada pabandykit man paaiškinti kuom bet kuri kita kalba būtų palengvinusi jų kančią.

    Pawka: O kam kurti naują literatūrą, jei dabartinė puikiai atlieka savo paskirtį mokinti programavimo pagrindų? Na tai kokie tie kitų žmonių argumentai? Nei vieno doro neišgirdau…

    Predikatų logika? O kam mano jos reikia? Jei reikės, išmoksiu ir kalbą, kuri ja naudojasi.

    ichmbch: Gražiai išdėstei pavyzdžius: labai patiko for ciklo palyginimas. Anybody would like to beat that?

    Atrodo, kad visi nepatenkinti Paskaliu vadovaujasi vien emocijomis. Pabandykit punktais išdėstyti savo argumentus, taip kaip padariau aš, o tada ir galėsime padiskutuoti kuom bet kuri kita programavimo kalba geresnė mokintis programavimo pagrindų visiems: nuo būsimo programuotojo iki būsimo mediko.

  23. Atsiprašau už dvigubą komentarą, bet norėčiau pridėti. Emocionalius atsakymus į tavo įrašą lemia ne kas kitas, o įrašo teksto suformulavimas ir autoriaus bendravimas su komentuojančiais.

  24. Pawka: tai jei nesunku išdėstyk tuos faktus. Aš niekada nesakau, kad konkretus faktas yra nieko vetas. Aš argumentuoju ką sakau.

    Įrašo tekstas tėra būdas sukurti diskusiją ir nesuprantu kodėl jis tau nepatinka. Rimtai, aš čia neįžeidinėti rašinėju, aš tiesiog bandau diskutuoti su nepatenkintais Pascal programavimo kalba.

    Įrodykit man prašau, kad bet kuri kita kalba yra geresnė ir patogesnė mokintis programavimo pagrindų mokykloje. Įrodinėdami atkreipkime dėmesį į kalbos sintaksę, programos paleidimą ir debuginimą, IDE buvimą/nebuvimą, ko reikia norint nuo nulio parašyti ir paleisti „Hello World“ programą.

    Huh, aš neesu kategoriškas, tik daugiau nei 10 metų pradirbęs su Object Pascal nesuprantu pykstančiųjų argumentų, kad programavimo kalba yra vaiduoklis, mirusi ir labiau kenkia mokinantis programuoti nei išmoko algoritmavimo pagrindų.

  25. OK.

    „kuom bet kuri kita kalba būtų palengvinusi jų kančią.“ – nes ji lengvesnė.

    Na tarkim python’as:

    * sintaksė – elementari. Skatinanti programuoti gražiai.

    * Programos paleidimas – python programa.py. Windows’uose tiesiog paspaudi ant py failo. Palyginam su pascal kompiliavimu ir t.t. Prisimename mes mokykloje.

    * Debuginimas – gyvenime neteko debuginti python’o programos. Manau, tai gali patvirtinti bet kuris python programuotojas. Jeigu jau reikia debuginti python’o programą, tai jau ne dėl python’o tiesiogiai.

    * IDE. O kam python’ui IDE? Bet kuris padoresnis tekstinis editorius tinka. Primenu, kad debuginti python programų paprastai nereikia. Išvis jeigu debuginate python’o programą darote kažką blogai iš esmės (jei esate pradedantis)

    * print „hello world!!!“ – galima ir sudėtingiau, bet tai jau mokymo dalis.

    * python’ą JAU DABAR galima sulietuvinti. Primenu mes esame mokykloje.

  26. Dėstau iš savo pusės. Jau minėjau, C/C++ sintaksė priimtinesnė ir plačiau naudojama. Galimybės didesnės (tačiau nebūtina visko naudot iš pat pradžių). IDE galima nesunkiai rasti. C++ naudojamas ir šiais laikais. Netgi yra ir literatūros gimtąja kalba. Aš šiaip asmeniškai būčiau norėjęs, kad mane būtų mokinę programuoti su C++, o ne su pascaliu. Žinoma, žvelgiu kaip programuotojas, galbūt kitiems sudėtinga būtų. Beje, kodėl pradėti nuo konsolinių aplikacijų? Mus universitete kaiptik pradėjo mokyt su GUI dirbt. Su fakin Borlandu tai tikrai nesudėtinga. Be to ir mokinams daug įdomiau būtų, nei juodas langas su baltom raidėm. Algoritmams mokintis iš esmės tinka bet kokia programavimo kalba, tad šis teiginys kaip ir neturi čia įtakos. Tačiau kalbam su kuo būtų patogiau. Paskalis anaiptol nekenkia sveikatai ir aš jo nekritikuoju. Tačiau norint sudominti mokinį (gi toks ir turėtų būti tikslas, ar ne?), reikėtų rodyti ne praeito tūkstantmečio technologijas.

  27. Daliau:

    > * sintaksė – elementari. Skatinanti programuoti gražiai.

    Kaip dėl kintamųjų tipų? Jie kiek žinau netipizuoti. Nepasiklys mokinys tarp 1 ir „1“?

    > * Programos paleidimas – python programa.py. Windows’uose tiesiog paspaudi ant py failo. Palyginam su pascal kompiliavimu ir t.t. Prisimename mes mokykloje.

    Tuomet „Hello world“ pavyzdyje akimirkai pasirodys konsolės langas ir dings, ar ne?

    > * Debuginimas – gyvenime neteko debuginti python’o programos. Manau, tai gali patvirtinti bet kuris python programuotojas. Jeigu jau reikia debuginti python’o programą, tai jau ne dėl python’o tiesiogiai.

    Hmm.. čia tai geras… Kokios sudėtingumo programos, ta prasme, eilučių skaičiumi? Bliamba, jei man nereiktų dėbuginti ohoho kiek sutaupyčiau laiko! Čia tikiuosi ne tas atvejis, kai debuginimui naudojamas outputas?

    > * IDE. O kam python’ui IDE? Bet kuris padoresnis tekstinis editorius tinka. Primenu, kad debuginti python programų paprastai nereikia. Išvis jeigu debuginate python’o programą darote kažką blogai iš esmės (jei esate pradedantis)

    Na o be debuginimo, kaip pagauti loginę klaidą nestebint kintamųjų reikšmių?

    > * print “hello world!!!” – galima ir sudėtingiau, bet tai jau mokymo dalis.

    1:0 pytono naudai :)

    > * python’ą JAU DABAR galima sulietuvinti. Primenu mes esame mokykloje.

    Skaičiau pas tave bloge, bet ar verta? Gal verčiau pasilikti prie angliškojo standarto be visų tų lietuviškų raidžių?

  28. Arvydai, vėl atrodo problemas susikuri pats. Jei mokinys atskirs int nuo string, tai kodėl neturėtų atskirti 1 nuo „1“? Konsolinės aplikacijso gale visada gali parašyt inputo nuskaitymą, tai ir langas nedings. Dėl lietuvinimo tai čia atskira tema, bet negi geriau kai nėra tokios galimybės negu kai ji yra? Manau ir pats būtum kuo puikiausiai atsakęs į šiuos tavo užduotus klausimus.

  29. Pawka: Nustebtum sužinojęs kad Delphi iki šiol labai plačiai naudojamas. Prasičekink su kuo sukurtas Skype ;)

    Ar C/C++ didesnes galimybes išnaudosi mokykloje?

    for (int i = 0; i < 10; i++)

    palygink su

    for i := 0 to 9 do

    Taip. C/C++ yra programavimo standartas pasaulyje, bet pripažink, kad mergučkei tai būtų per daug lyginant su paskaliu. Mintyse palygink for ciklus abiejų kalbų ir visiškai nenutuokiančiam pabandyk paaiškinti. Kas paprasčiau? C/C++ sintaksė priimtinesnė tau, bet come on (!) think about the others.

    „Algoritmams mokintis iš esmės tinka bet kokia programavimo kalba, tad šis teiginys kaip ir neturi čia įtakos.“ – va, dėl šito nors sutariam, tai ko iš viso čia ginčyjamės? Ėmei ir pats išmokai C++, bet mastyti programuotojo būdu ar paskalis pakenkė?

    Atmink, kad tokie elementarųs dalykai kaip for ciklo sudėtingumas, atskyrimas 1 nuo „1“, programos kodo redagavimas vienoj vietoj, o paleidimas kitoj, būtinybė užrašyti simbolio perskaitymo komandą susideda ir nors tau atrodo elementaru, pradedančiajam sudaro programavimo, kaip „atominės fizikos“ įspūdį.

    KISS – Keep It Simple Stupid. :)

  30. Skype Windows interfeisas sukurtas su Delphi, bet Linux – C++ + Qt GUI, o Mac OS X su Objective C. :-) Be to jei jau kalbam apie kalbų populiarumą: http://www.tiobe.com/tpci.htm

    Mokykloje nemanau, kad mokintų C++ klases, exceptionus ir templeitus (kas pagrinde ir skiria C++ nuo C), tad liktų tik pure C. :-)

  31. Nu gerai Pawka, dabar jau išsikasei duobę :), tai dabar man pateik palyginimą, kuo pure C yra tikrai lengviau už Paskalį. Ir be to sakei, jog labiau sudominti reikia reikia mokinį, tai kurioje vietoje pure C sudomina labiau už Paskalį:p

    O antra sakei, kad norint sudominti reikia rodyti ne praėjusio amžiaus technologijas. Bet tai, kad Delphi ir yra Paskalio IDE. O Delphi šiuolaikinė gi technologija. O pagal tavo reitingus stovi šalia paskutinio Microsoft mados klyksmo, t.y. C#.

  32. Ne taip supratai. Aš nesiūlau programuoti gryna C. Siūlau C++, tačiau mokiniams nekišant visų įmantrybių, kaip templeitai, exceptionai, gilinamis į objektinį programavimą ir t.t. Jei būtų naudojamas tarkim BCB, tai klasių naudojimo neišvengtum, tačiau minimaliems reikalavimams užtektų pačio IDE sukuriamų klasių. Be to komponentų klasių naudojimas irgi nebūtų sudėtingas.

  33. Pawka: negi tu tikrai manai, kad atmetus templeitus, exceptionus ir objektinį programavimą C++ bus kuom nors pranašesnis ir lengviau suprantamas už Pascal? Eeee… gal gali pavyzdžiais?.. Nes dabar siūlai naudoti BCB, kuris iš esmės yra Delphi klonas tik C++ sintaksė. BCB net Delphi sursus kompiliuoja ir galima naudoti kaip lygiavertį include bet kuriam .h failui.

    P.S. Prie ko čia Skype Linuxui? Vis tiek Skype daugiausia naudojama Windows OS ir čia tik vienas iš pavyzdžiu, kad Object Pascal toli gražu nėra mirus.

  34. Ai, pawka, kam dar ginčijiesi. Juk C++, Java, Python, Ruby, PHP yra šūdų kalnas, tu esi paskutinis neišmanėlis, o Arvydo nuomone stagnacija yra būtina mūsų švietimo sistemoje.

    Kurtumas argumentams man kelia klausimą, kodėl seimūnai (beje, irgi tokie pat Lietuviai kaip ir mes) dar neuždraudė bezdėti labai žemos tonacijos gaidomis. Gal ir uždraus, bet paskalis bus ir po 10 ir dar po 100 metų.

  35. Arvydai, tai tu nori kad būtų geriau ar lengviau? Jei nori lengviau, tai eik mokink piešti su logo ir varinėti vėžliuką. Bus lengviausia. Aš kalbu kas praktiškiau ir naudingiau. Buvo pasirodę pranešimų, kad norima panaikint 10 klasės egzaminus, arba iki 10 klasės nevertint mokinių pažymiais. Gi taip lengviau. Tačiau tokiu atveju tauta degraduos. Ar taip geriau?

    Taip, tikrai manau, kad atmetus viską, C++ bus pranašesnis, nes betkuriuo momentu galima atmestą dalį pradėti naudoti. Ir vienas teiginys tavo būdu: jei BCB yra delfis, tai kodėl nenaudot C++ Builderio, o būtent delphi?

    Prie ko čia skype Linux? Analogiškas klausimas: prie ko čia skype Windows? Pats pasakai teiginį, aš jį praplėčiau, o dabar jau aiškini „prie ko čia“. Aš apskritai už atviro kodo programinės įrangos diegimą mokslo įstaigose. Gal taip ir ne lengviau, bet naudingiau. Žinai kam Microsoftas nemokamai dalina mokykloms ir Afrikai OS?

  36. > Tuomet “Hello world” pavyzdyje akimirkai pasirodys konsolės langas ir dings, ar ne?

    Taip :) Čia irgi pamokos dalis.

    > Hmm.. čia tai geras… Kokios sudėtingumo programos, ta prasme, eilučių skaičiumi? Bliamba, jei man nereiktų dėbuginti ohoho kiek sutaupyčiau laiko! Čia tikiuosi ne tas atvejis, kai debuginimui naudojamas outputas?

    traceback’ai (kol programos paprastos) + unit-testing’as, kai programos pasidaro tikrai sudėtingos. Kintamųjų reikšmes beje yra matomos traceback’uose, kai labai norisi.

    > Na o be debuginimo, kaip pagauti loginę klaidą nestebint kintamųjų reikšmių?
    traceback’ai. Ir žinoma unit testai :)

    > Skaičiau pas tave bloge, bet ar verta? Gal verčiau pasilikti prie angliškojo standarto be visų tų lietuviškų raidžių?

    Jeigu pasiliekame prie angliško standarto tai neapsimetinėjame, kad mums rūpi literatai, teisininkai ir kiti :)

  37. noTime: Jei nemoki konstruktyviai diskutuoti, tai geriau nediskutuok. Aš tokio teiginio, kad kitos programavimo kalbos yra šūdų kalnas niekada nesakiau ir nepasakyčiau.

    Pawka: Aš apskritai noriu, kad mokykloje mažiau mokintų dalykų, kurių man gyvenime nereikės ir labiau specializuotų kursą. Mokinausi kaip išprotėjęs apie DNR grandines, RNR, mitochondrijas per biologiją, geografijos pamokose grūsdavo valstybių plotus ir gyventojų skaičių, kuruos jau senų senovėj pamiršau ir kurie jau seniausiai pasikeitė, lygiai taip pat aš užjausčiau mergučkes, kurioms mokykloje reiktų mokintis C… Aš jas užjaučiu, kad reikia mokintis ir Pascal, tik viliuosi, kad joms tas mokinimasis yra lengvesnis.

    BCB naudojamas dėl C++ sintaksė, Delphi – dėl Object Pascal sintaksės. Be abejo galima BCB naudoti kuriant vien paskalio programas, tik vat nepatogu – visas IDE pritaikytas C++.

    Skype windowsams tau pateikiau kaip pavyzdį, kad Delphi toli gražu nemiręs. Man tik įdomu kokia prasmė tavo teiginio praplėtimo.

    Aš irgi už atviro kodo diegimą mokslo įstaigose ir žinau Mircosofto tikslus, bet mes čia ne apie tai :)

  38. Daliau: žiaurus tu, jei siūlai mokykloje mokinti unit testingus ir traceback’us :) Gal turi kokios nors informacijos apie tokia klaidų gaudymo filosofiją? Čia rimtai. Debugindamas sugaištu labai daug laiko…

    Vienintelį matau rimtą pliusą – tai galimybę sintaksę išversti į lietuvių kalbą, kas padėtų mokinimąsi padaryti lengvesniu :)

  39. Arvydai,

    1. Nešnekėk apie kalbas, su kuriom nesi programavęs.
    2. Prieš šnekėdamas pasižiūrėk į kitų patirtį.

    http://hacketyhack.net/

    Hey, Wow, Real Kids are Learning!

    Our 8th grader reporting in: did Lesson Four in about 10 minutes but kept hacking for another 20 minutes. Today, video games lost the battle with Ruby. Unprecedented!

    Sakai Ruby netinka?

  40. Artūrai: programavęs visom kalbom apie kurias kalbu.

    Jeeeez, žmonės, dar kartą kartoju: aš niekada nesakiau, kad kitos kalbos yra netinkamos ar pan. Kiekviena turi savų pliusų ar minusų. Aš tik teigiu, kad mokintis programavimo pagrindų su Pascal nėra iškrypimas, kaip čia visiems super duper advanced programeriams atrodo.

    Hacketyhack atrodo linksmas dalykėlis, bet gal nepainiokim pažaidimui paruoštų interaktyvių skriptų ir programavimo, dėstomo mokyklose. Susidomėjimui tai, atrodo, super :)

    Dabar mąstau ar yra prasmė toliau diskutuoti?

    Dalius vis tiek teiks, kad viską galimą išmokinti mokinukus ir viskas yra bajkės including trackbackus ir unit testus;
    Pawka liks prie C++, nes atmetus visus advanced kalbos ypatybes turėsim lygiai tą patį kas ir Pascal, bet C++ reikia mokintis vien todėl, kad ji užima ~9%, o Paskalis „tik“ 4% rinkos.
    noTime prarado bet kokį norą ginčytis, nes mano, kad tai neverta – dėl visko kalti seimūnai.
    Dummas vis tiek liks susierzinęs begin-end bereikalingu taipinimu vietoj elegantiškų {}.

    O nekeisiu savo nuomonės, kad Paskalis vis tiek yra paprasta, griežtai strūktūrizuota ir mokinimuisi sukurta kalba, turinti vietoje naudojamą IDE ir nors kartais kitus užknisančią, bet lengvai skaitomą sintaksę. Atleiskit, bet turbūt mane sugadino tas bereikalingas programavimas Paskaliu daugiau nei 10 metų. :)

    Gyvenkime draugiškai, nes vis tiek turėsime mokintis tai ką mums kiša mokymo įstaigos ir lietuviška mokymo sistema ;)

  41. Nežinau Arvydai. Aš iš savo patirties šneku. Žmogus programuot nemoka. Mokykloje pascal’io neišmoko. Univere C keikėsi, Java keikėsi.

    Daviau knygą ‘Learn to program with Ruby’ – suprato.

    Tiesiog Ruby yra labiau orientuota į žmones, o ne į kompiuterius, kaip yra paskalyje. Na kur tu matei, kad žmonės rašytų x := 3 matematikoje?

    Arba ar yra labai lengva paaiškinti žmogui kuo skiriasi funkcija nuo procedūros nelendant į specifiką?

    Arba kodėl kompiuteris nėra pakankamai protingas, jog jam reikia surašyti viską kuo jis naudosis (kintamuosius)?

    Tie, kam aš rodžiau Ruby, (daugiausiai merginos) įvertino jį kaip paprastą ir elegantišką kalbą. Ir tikrai labiau patiko už visokius Paskalius, C ar Javas.

    Programuojant labai daug duoda ar tas dalykas tau patinka. Pascalis ir visi kiti.. Jis tiesiog nėra elegantiškas. Net python mane su savo __omgwtfmethod__ ir nenatūralia syntakse dabar nupurto. O kas yra tuple, kuo jis skiriasi nuo paprasto mąsyvo ir kam išvis juos naudot aš nesupratau iki šiol :)

  42. Artūrai: Matkėj niekur nemačiau kad kas nors rašytų == ar != palyginimui. Matkė ir programavimas nors ir artimi, visgi jų lyginti nereiktų :)

    Funkcija yra paprogramė gražinanti rezultatą, o procedūrą yra paprogramė negražinanti jokio rezultato.

    Kintamųjų apibrėžimas funkcijos/procedūros pradžioje aiškiai nurodo kur tie kintamieji egzistuoja.

    Manau, kad ne programavimo kalba dažniausiai būna kreiva, o jos mokinimo literatūra ir metodai… Geriausiais pavyzdys – tavo pateikta knyga.

  43. Artūrai nežinau, kur tu mokeis matematiką, bet universitete yra įprasta priskyrimą žymėti :=
    (Tiek matematinėje analizėje, tiek kituose matematiniuose dalykuose), tiek ir šiuolaikinėse aukštosios matematikos knygose.

  44. Šiaip nelabai čia išeina diskutuot, nes net nesusidaro bendrų nuomonių grupių, kitaip tariant kiekvienas turi savo skirtingą nuomonę: vienam patinka Ruby, todėl visos kitos kalbos nelabai tinkamos, kitam patinka C++, todėl būtent gina C++, trečiam patinka Java ir t.t. Vienžo čia gavosi, jog visi pradėjo vardinti būtent savo mėgstamos kalbos privalumus, todėl bendraminčių nei vienoje zonoje nesusidarė:))

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *