20

Aprill

Millest alustada?

Marek Tihkan 4 kommentaari

Paljud tarkvaraarenduse ettevõtted tegelevad mitme erineva arendussuunaga. Tüüpiliselt on PHP arendus ja lisaks ka mõni staatilise keelega suund nagu Java või C#. Töövestlustest on jäänud mulje, et uus arendaja pannakse algul PHP-d kirjutama ning kui seal piisavalt ennast tõestab, siis on võimalik tal enda karjääris edasiminek teha ning Javat või C# kirjutama hakata. Teile ei tundu see imelik?

PHP on tõesti kergesti omandatav keel, isegi õppisin sellega programmeerimist. Ülikoolis Javat õppides tundus kuidagi imelik, et pean massiivide pikkuse määrama ja ei saa sinna lisada teadmata hulk elemente. Java tundus rangem olevat võrreldes PHP-ga. Massiiv on kindla suurusega elementide hulk, mis asub mälus järjest, mistõttu lugemine käib viitadele struktuuri mahu juurde liitmisega. See teeb massiivide lugemise kiiremaks, kuid ka nende kasutamise rangemaks. PHP-s tundub olevat massiiv Linked List.

Lugedes Joel Spolsky esseed “The Perils of JavaSchools” kogumikteosest “More Joel on Software”, mõistsin enam, miks ei peaks alustama dünaamiliste keeltega. C/C++ võib küll olla vana keel, kuid see õpetab alustalasid. Java ja C# on juba veidi abstraktsemad, mistõttu ka Spolsky väitis, et C/C++ peaks õppima. Muidugi ajab see tudengite päid segamini, sest viitadega toimetamine pole kõige meeldivam. Loengutes kindlasti õppejõud mainivad, mida toredat nende vigadega juhtunud on ja palju see maksma on läinud.

Võrreldes C/C++ Java või C#-ga, siis suur vahe seisneb selles, et esimese puhul tuleb tegeleda ka ressursside vabastamise jms. Kuna sellega tegelemine on aja raiskamine (v.a süsteemides, mis ei tohi olla ressursinõudlikud), sest see viib arendusaja liiga pikaks. Lähemalt sellest mõttest võib lugeda eelnevast postitusest “IT pole oluline”.

PHP-d on lihtne omandada, kuid see ei õpeta programmeerimise alustalasid. Dünaamilised keeled kalduvad abstraktsiooniahelas küllaltki kõrgele, mistõttu arendamine kiireneb, kuid teadmised alustaladest vähenevad.

Dünaamiliste keeltega tegelemine nõuab tunduvalt rohkem distsipliini ja heade praktikate tundmist. Neid tihtipeale koolist ei saa ning tuleb juurde õppida. Seetõttu arvan, et uued inimesed võiksid alustada staatiliste keeltega või vähemalt õppida neid (see ei tähenda, et dünaamiliste keeltega ei saa neid õppida, kuid staatilised sunnivad ende õppimist rohkem).

Alternatiivne viis kuidas uusi õpetada oleks proovida Master Craftsman Teami kooslust, mis on Robert C. Martini edasiarendus The Surgical Teamist Frederick P. Brooks, Jr. teosest “The Mythical Man-Month”.

Millisest keelest peaks teie arust alustama või ei pole sellel mingit vahet? Kas ettevõtted peaksid nö tõestamist mingis keeles peale suruma või looma karjääriredeli keelte järgi?

  • Share/Bookmark

KATEGOORIAD » Arendus

SILDID » , , , , ,

4 kommentaari

1

Mina alustasin vanal ajal C-keelega ja ajasin kõik, kes seda mu tutvusringkonnas oskasid, oma küsimustega peast halliks. Spetsiifikat küll enam oluliselt ei mäleta, sest tulid peale VBA ja Visual Basic, kuid olen kindel, et ilma C-ta oleks järgmiste keelte omandamine oluliselt keerukam olnud.

Muideks, mida arvad käesoleva kande valgusel keeltest, mis .Net DLR-i peal jooksevad (F#, Iron Ruby jne)?

Gunnar
14:28, 20. aprill

2

F# on Microsofti enda poolt kirjutatud ning see on funktsionaalne keel. Ei arva, et sellest võiks alustada. Sama lugu oleks ka loogiliste keelte puhul. Nendega tänapäevaseid süsteeme ei tee kergelt, kuid need võivad abiks olla äriloogika lahendamisel.

IronRuby ja IronPython on mõlemad samad keeled. Neile on tehtud parser DLR-i jaoks. Peale Ruby või Pythoni saad kasutada nendes ka .NET maailma võlusid, kuid keel iseeneselt on sama.

Seega IronRuby puhul tuleb arvesse ikka võtta seda, et distsipliin peab tugev olema.

Ruby kohta on plaan mul veidi pikem jutt kirjutada, et seda tuleb veidi oodata.

Marek Tihkan
17:31, 20. aprill

3

soovitaks alustada C-st või mõnest muust sellisest keelest, kus mäluoperatsioonid ei ole arendaja jaoks “ette ära tehtud”, vaid igat mäluhulka tuleb allokeerida ning vabastada “käsitsi”. See õpetab programmeerijale mälu kasutust ning ka sellega optimeeritult ringikäimist.

Need keeled, kus mälukasutus on programmeerija eest “ära automatiseeritud”, soodustavad seda, et programmeerija eriti ei mõtle optimaalse koodi peale ning tulemuseks on suure mälukasutusega või “mälu-leketega” programmid, sest programmeerimisvea tõttu ei suuda runtime enam mälu vabastada.

Raoul
18:46, 21. aprill

4

Mõned mõtted, kui lugesin artikli ning kommentaarid läbi:

*) Programmeerimist õppivale inimesele annaksin C, sest saab alustalad selgeks. C ei ole tänapäeval väga seksikaks seega tuleb anda C mingi laheda seadmega ehk, mis võib võlu lisada. Kui ikkagi ei ole piisavalt seks siis mingi värskem funktsionaalne keel.

*) Mina soovitan küll funktsionaalse keelega alustada. Tihti juhtub see, et inimesed kaovad imperatiivsete maailma ära ja ei hakkagi kunagi teistmoodi mõtlema.

*) Ma annaks töö juures algajatele just sellise keele, milles neil palju vabadusi ei ole ning on väga hästi piiratud, mis raadiusega ta saab endale jalga lasta. Näiteks Java. Algaja käes PHP on ikka paras kahur.

*) Väike parandus, tegemist on ikkagi kas staatiliselt või dünaamiliselt tüübitud keeltega, mitte staatiliste või dünaamiliste keeltega.

tom_
15:18, 24. aprill

Lisa kommentaar

  • * Kuvatakse kommentaari juures
  • * Ei publitseerita