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?
Loe veel sarnastel teemadel:
- Modernselt tarkvara loomine I: Sissejuhatus, 28. oktoober
- Maailm on liiga sarnane, 13. mai
- Modernne tarkvara loomine IV: Andmete kühveldamine, 16. november
- Maailmad on erinevad: Model-View-Controller, 15. oktoober
- Vestlus Patrick Smacchiaga NDependist, 14. juuli
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
KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (23)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
