Archyvas

Įrašai, pažymėti ‘Java’

Pajutau hi-end programavimo reikalavimus

2009.11.01 Xamas Komentarų: 17

Anksčiau, išskyrus Asemblerio(assembler) užduotis, bei Disasemblerį(disassembler), kurio taip ir neparašiau, mokantis universitete, visad į pateiktas programavimo užduotis žiūrėdavau kaip į labai elementarius dalykus. Visų pirma dėl duodamų mėnesio terminų vien maksimaliam balui gauti, o visų antrą dėl nedidelių reikalavimo skirtumų.

Taip buvo ir su C, ir su C++ ir su Java pirmom užduotim. Tačiau dabar, praktiškai viskas pasikeitė. Faktiškai yra duodama viena savaitė naujai programai parašyti(terminai yra kas dvi savaitės, bet viena iš tų dviejų yra 95 proc. atveju esamos programos pataisymas pagal reikalautus pakeitimus).

O ir palyginus dviejų užduočių reikalavimus:

Užduotį reikia atsiskaityti iki 2009.10.26 imtinai

1. Kurios nors užduoties klasės vietoje sudaryti bent trijų klasių hierarchiją.
2. Aprašyti specifinį išvestinių klasių elgesį, perrašant reikiamus bazinės klasės metodus.
3. Bent vieną išvestinę klasę papildyti laukais ir metodais, kurių nėra bazinėje.
4. Pademonstruoti klasių polimorfinį elgesį vykdymui skirtoje klasėje.

Bei: 

Užduotį reikia atsiskaityti iki 2009.11.09 imtinai

1. Parengti parašytas klases klonavimui.
2. Vykdymui skirtoje klasėje pagaminti objektus su identiška būsena.
3. Išimtinių situacijų aprašymui sukurti savo išimčių klasių hierarchiją ir ją panaudoti.
4. Vykdymui skirtoje klasėje išimtis pagauti ir atspausdinti informatyvius pranešimus.
5. Prasmingai panaudoti static, final, static final specifikatorius kuriems nors klasių laukams ar/ir metodams.

Tikrai, kaip vienos savaitės darbui, reikalavimai tikrai gana progresyviai keliami. Ir jeigu visi universitetiniai dalykai būtų dėstomi tokiais tempais ir reikalavimais, manau nesunkiai būtų galima pamanyti besimokant ne VU MIF’e, o Kembridžo MIF’e :) . Ir mokslo kokybės nebūtų galima kritikuoti.

Taip, dauguma atveju tai priklauso nuo pačio dėstytojo. Šiuo atveju tikrai pasitaikė ‘programeris’ :) . Ir išties malonu tokiais atvejais rašyti programą, kuomet reikalavimai jai nebėra pirmoko lygmens :) .

Atsimenu vieno dėstytojo pretenzijas, kai parašiau programą per gudriai. Kadangi programos reikalavimas buvo rašytas Pascal programai, ir C++ buvo kaip alternatyvą, aš pasinaudojau ‘vector.h’ įrankiu ir labai lengvai realizavau programą. Tačiau visvien galiausiai teko perrašyti vector.h, t.y. pasirašyti savo ‘vector.h’ vien dėl to, kad realizuoti programos ‘tūpūmą’.

Beje, nusivyliau ir C++ universitetiniais reikalavimais. Niekas nereikavo panaudoti nei ‘template’ <T> tipo abstrakčių duomenų tipų, nei realizuoti grafinio interfeiso. T.y. bent jau primityvaus grafinio modeliavimo. Tai padariau tik savo noru ir nuožiūrą.

Ko pasekoje gaudavosi kuriozinė situacija, universitetinį pažymį ‘10′ galėjo gauti tie, kurie rašė elementarias programas.

Java programų atveju, kaip jau minėjau vienas dalykas tapo idealus – tai deadline’ai. Kas dvi savaitės, o praktiškai – kas viena. Reikalavimų progresija išties puiki. Neskaitant tūpų pirmųjų programų, kuomet atsiskaityt pirmas dvi pavyko per 30 minučių, o parašyt – tik pora dienų, nes reikalavimai joms buvo tarsi cheap-quality php tinklapio.

Mano supratimu, jeigu jau mokaisi VU, ir neva hi-end specialybėje, tai apskritai joje neturėtų būti žmonių gaunančių aukštus įvertinimus rašant žemo lygio programas. Ir reikalavimai turėtų būti ne hi-end, o labiau super-hi-end.

Nes priešingu atveju universitetas neteikia jokios naudos – gi universitetas siekia išugdyti kvalifikuotus specialistus. Bet kaip jis tokius gali išugdyti, kai ’sunkiausiai’ semestro programa ‘tenkinanti’ reikalavimus teužima vos 700 eilučių ir parašoma per dieną-dvi. Ir tokia programa gerų geriausiai teišnaudoja vos pusę programavimo kalbos galimybių.

Ir po to tokie specialistai eina dirbti į įmones. :) Nieko stebėtina, kad pačios įmonės po to turi inverstuoti tūkstančius į darbuotojų kvalifikacijos kėlimą.

——-

Kitas aspektas – tikrai neturėtų būti taip, kad visus semestro laboratorinius programavimo darbus pavyktų atsiskaityt vos per pirmas 4-5 semestro savaites kiekvienai programai skiriant vos viena-dvi dienas darbo.

O to esmė vėlgi, kaip jau ir minėjau – tiesiog programų sudėtingumo kilimo kreivė yra kone horizontali, nors pagal Kembridžo dėsnius ji turėtų būti bent jau geometrinės progresijos arba netgi eksponentinė.

Galbūt ir tokiu atveju būtų įmanoma atsiskaityti darbus per 7-8 semestro savaites, bet tokiu atveju vienai programai mažiausiai 4 pilnų dienų gilinimosi į prog. kalbos galimybes ir jos realizacija prireiktų, ir bent jau gavęs diplomą studentas galėtų sakyti kad jis kažko vertas.

Dabar gi gaunasi taip, kad ir tas, kuris rašo 3000+ eilučių programas realizuodamas paskutine ’sunkiausia’ semestro užduotimi 90+ proc.  prog. kalbos esminių galimybių, ir tas, kuris rašo 600-700 eilučių programas, realizuodamas vos 40-50 proc. prog. kalbos savybių, gauna lygiai tokius pačius diplomus. Negana to, jeigu pastarąjam geriau sekąsi antriniai specialybės dalykai, jis gali būti netgi aukščiau už pirmąjį žmogų.

Taigi ar tame yra logikos? Manau, kad ne.

Žinoma, visada atsiras prieštaraujančių, kad reikalavimai programoms yra ‘kosminiai’.

Bet tada kyla natūralus klausimas tokiems žmonėms – ko Jūs einate į tuos universitetus?

Kitas kuriozinis dalykas – universitetuose praktiškai nedėstomas Php. O C# dėstomas minimaliai. Kas dar kurioziškiau – realybėje realūs darbo užsakymai būtent sudaro 90 proc. būtent šioms programavimo kalboms. :)

Tačiau itin uoliai išdėstomas ‘pascal’is’. Ir turbūt būtų išdėstytas dar uoliau, jeigu ne galimybės pakeisti pascal į C++ leidimas antrame ir tolimesniuose semestruose universitete. Tačiau visgi visi dėstytojai ‘pasikaustę paskalyje’, ir kartais gana juokinga būdavo žiūrėti kaip jie vertina ‘C++ kodą’ :) . O supratę, kad C++ tai padaryti be galo paprasta ir lengva atsidurdavo keblioje situacijoje – universitetiniai reikalavimai tiesiog nėra ruošiami aukštesnio lygio programavimo kalboms.

Tai tiek minčių apie mokslo kokybę Lietuvos universitetuose. Šiuo atveju, bene geriausiu laikomame ‘VU’. Skirtumas tas, kad nuo šių metų fux’ai už tai dar moka ir kelioliką tūkstančių litų kasmet :) . Argi ne kurioziška :) .

Java, C++, C#, Php, Pascal redaktoriai ir kompiliatoriai

2009.09.12 Xamas Komentarų: 2

Pamaniau, pasidalinsiu mintimis ir atradimais, padarytus per tuos studijų ir iki studijinius metus.

Yra daugybė programavimo kalbų ir daugybė jų redaktorių.

Šiaip dažnai esu gana alergiškas ‘viskas viename’, bei ‘milžiniškos apimties’ programoms. Todėl renkuosi alternatyvas.

Šį kartą skip’insime, terminal’ą, ir Kubuntu, Linux 5 ir pan. pingvinus, nes visgi namuose dirbu XP langais(Windows XP SP2)

Taigi nuosekliai:

Pascal(programavimo kalba nuo kurios mane pykina).

Kompiliatorius: Free Pascal

Redaktorius(Source): Free Pascal (LT versija)

Beje LT versija yra tikrai puikiai paruošta, ir EN varianto tikrai nereikia

Alternatyvos: Senutėlis Turbo Pascal, ir dar keletas nereikšmingų

C/C++ :

Unversitete ir pan. bandys siūlyti visad matyt “Dev C++” programą, kuri mano nuomone po mėnesio darbo ja, yra tikras nieko vertas šlamštas. Ja nebent ‘makefile’ patogiau pasiredaguoti, t.y. dalyką kuris taip pat yra atgyvena(turiu omeny redagavimą pačiam)

Na arba iškart bus siūlomas maksimalizmas – Microsoft Visual Studio. 5 GB instaliuotas gigantas.

Aš asmeniškai pasirinkau: Code::Blocks (CodeBlocks) . Ši programa nėra didelė – užima vos ~100MB, tačiau tikrai yra tas ko bent jau man ir reikia. Ir tvarkinga, ir funkcionalu, ir kur kas geriau/patogiau už “Dev C++”, bei nėra tokia griozdiškai kaip Visual Studio. Be to jos kompiliatorių ir derinimo terpė labai interaktyvi, taip kad galima sakyti jog galima pasirinkti beveik bet ką.

Code::Blocks yra ir kompiliatorius ir puikus redaktorius.

C# (Microsoft’o Java arba ‘užturbintas’ Pascal’is):

Nesu didelis šios kalbos mėgėjas, bet čia be abejonės lyderis yra M$ tools’as “Microsoft Visual Studio”.

Java:

Pagrindiniai įrankiai: NetBeans, JBuilder bei Eclipse. Kol kas labiausiai sužavėjęs yra “NetBeans”, jeigu tiksliau, tai “JDK with NetBeans IDE Java SE bundle” (JDK – Java Developer Kit). Beje JDK įmanoma atsisiųsti tik iš Sun tinklapio :D . Download’as pilnos Java yra ~135MB, o instaliuota ~430MB, kas gal ir nėra labai mažai, bet programa tikrai gana puikiai susitvarko su mano poreikiais.

Php grupė(HTML, CSS, Php, JavaScript,MySQL DB):

Mano mėgstamiausia :) . Redaktorius Php sąsajai be abejonės Notepad++. Gana aiškus lyderis šioje srityje. Nors teoriškai galima būtų užleisti ir kompiliatorių, bet tai nėra prasminga.

Kompiliatorius šiuo atveju yra – serveris kompiuteryje EasyPhp . Turi puikią lietuvybę ir yra labai paprastas naudoti. Tai tarsi patobulintas WAMP atskirų dalių serverio instaliacijos procesas.

 

———

O dabar trumpai:

  • Pascal redaktorius: Free Pascal (LT)
  • Pascal kompiliatorius: Free Pascal (LT)

 

  • C++ redaktorius: CodeBlocks (Code::Blocks)
  • C++ kompiliatorius: CodeBlocks (Code::Blocks)

 

  • Java redaktorius: NetBeans
  • Java kompiliatorius: JKD with NetBeans

 

  • C# redaktorius: Microsoft Visual Studio
  • C# kompiliatorius: Microsoft Visual Studio

 

  • Php redaktorius(+CSS, JavaScript,HTML,MySQL DB): Notepad++
  • Php kompiliatorius: EasyPhp (LT)