Programavimo kalbos pasirinkimas

Tęsiu savo rašinių ciklą apie programavimą šiandien noriu papasakoti apie programavimo kalbų pasirinkimą. Prisiminimui galite paskaityti mano ankstesnį rašinį pasakojantį nuo ko pradėti norint išmokti programuoti. Per 15 programavimo metų išmokau pagrindinio dalyko: atlikti užduotį programavimo kalba yra visiškai nesvarbi. Daug svarbiau – jau sukurtos kalbos pagalbinės priemonės palengvinančios programuotojo darbą.

Skaityti toliau

Muzikinis eksperimentas TrixPlayer

TrixPlayer 0.1

Kai man atsibosta kurti duomenų bazes ir web puslapius, susigalvoju sau kokį eksperimentą. Taip gimė programa TrixPlayer – 16×16 sequencer’is. Daug nepasakojant galite pasižiūrėti kaip jis veikia:

YouTube Preview Image

Parsisiuntimas

Linux vartotojams reikia prieš paleidžiant TrixPlayer.exe paleisti tokią komandą konsolėje (Ubuntu distribucijai):

sudo apt-get install gtk-sharp gtk-sharp2 libgdiplus libsdl1.2debian libsdl1.2debian-all libsdl-mixer1.2 libsdl-image1.2 libsdl-ttf2.0-0 libsdl-gfx1.2-4 libsmpeg0 timidity

Bandydamas Ubuntu 9.04 OS pastebėjau, kad garsas vėluoja, bet gal čia dėl to, kad leidau VirtualBox’e. Jokių šimtaprocentinių garantijų, kad pas jus veiks. :)

Veikimo principas

Kol kas nekreipkit dėmesio į dešinėje pusėje esančius L1-L5 mygtukus. Jie ten tik laikinai, ir bus pervadinti į F1-F5.

Muziką galite kurti su penkiais sluoksniais (layers), kurie yra pavadinti L1-L5 ir valdomi kairėje pusėje esančiais tap pat pavadintais mygtukais. Kiekvienam sluoksniui priskirtas vienas instrumentas. O kiekvienas instrumentas turi po 16 „natų“ išsidėsčiusių juostomis horizontaliai.  Kiekvienas sluoksnis turi po 16 patternų, kuriuos galite pasirinkti nuspaudę ir laikydami klaviatūros mygtukus 1-5 atitinkamai pasirinktam sluoksniui ir pasirinkę vieną iš horizontalių juostų su kairiuoju pelės klavišu. Su dešiniuoju pelės klavišu paspaudimu pasirinktas patternas nukopijuojamas į naująjį (maždaug ties video 1:06 galite pamatyti kaip aš tai darau).

Valdymas

  • Kairysis pelės klavišas – įjungia arba išjungia natos grojimą;
  • Klaviatūros mygtukai 1, 2, 3, 4, 5 – keičia sluoksnius
  • Laikant nuspaustą 1, 2, 3, 4, 5 + kairysis pelės klavišas keičia patterną;
  • Laikant nuspaustą 1, 2, 3, 4, 5 + dešinysis pelės klavišas kopijuoja paskutinį pasirinktą patterną į naują.
  • Space – išvalo patterną;
  • Laikant nuspaustą F1 + kairiuoju pelės klavišu galima keisti sluoksnio garsumo lygį.

Planai ir mintys

Jeigu bus noro ir laiko dar padarysiu

  1. Įrašyti normalius instrumentus ir padaryti jų pasirinkimą. Dabartiniai sucks, bet tai geriausia ką radau nemokamai internete.
  2. Padaryti software sintezatorių vietoj samplų grojimo;
  3. Išsaugoti/atidaryti muzikinį kūrinį;
  4. Keisti grojimo tempą
  5. Keisti sluoksnio grojimo tempą
  6. ir t.t.

Have fun! Pasiūlymai, paskatinimai ir idėjos visada laukiami. Prie progos paskelbsiu source ir kaip susikompiliuoti pačiam.

Techniniai duomenys kam įdomu

  • Sukurta su: Microsoft Visual Studio 2008/Mono Develop 2.1 beta
  • Programavimo kalba: C#
  • Platforma: Mono 2.0 arba Microsoft.NET 2.0
  • Grafikos/garso variklis: SDL.NET
  • OS: Windows ir Linux. Teoriškai turėtų veikti ir po Mac OSX, bet neturiu obuolio kompiuterio, todėl negaliu pratestuoti ir sukompiliuoti.

Paskutinė WordPress saugumo spraga – programuotojų žioplumas

wordpress-vulnerability

Paskutinė didelė WordPress saugumo spraga, dėl kurios nukentėjo daug įžymių svetainių, yra rimtas programuotojų neapsižiūrėjimas: WordPress kūrėjai pamiršo patikrinti varototojų teises kai kuriuose administravimo puslapiuose. Jei senos versijos WordPress tinklaraštis yra atviras registracijoms, paprastas varototojas galėjo atlikti tinklaraščio administravimo veiksmus: keisti diskusijų, standartinius, pastoviųjų nuorodų, paveiksliukų, privatumo, skaitymo, rašymo nustatymus, temų šablonus ir jų failus, vartotojus ir tuo pačiu savo kaip vartotojo teises. Su tokiom įsilaužimo galimybėm nenuostabu, kad daug įžymių tinklaraščių buvo smarkiai išdarkyti. Jei neklystu pažiūrėjęs į kodą, tinklaraščiai, kurie neturi viešos registracijos nuo šios problemos yra apsaugoti.

Keista tik kaip tokia saugumo spraga buvo nepastebėta tokį ilgą laiko tarpą: visuose WordPress versijose iki 2.8.4! O WordPress kuo toliau tuo labiau pučias ir pučias funkcionalumo, atminties naudojimo ir tuo pačių dar neatrastų klaidų prasme. Ar nebus taip, kad galų gale paprasti vartotojai naudos vos 2% visų WordPress galimybių, kaip dabar yra su Microsoft Office? Man anksčiau labiau patiko, kai WordPress tebuvo tinklarašių rašymo karkasas, o visą reikalingą funkcionalumą parsiplėsdavai įskiepių pagalba.

Žiūriu dabar į tą WordPress PHP kodo košę ir džiaugiuosi, kad perėjau prie Ruby on Rails: paprasto, gražaus, elegantiško, lengvai suprantamo ir plečiamo framework.

Nuo ko pradėti norint išmokti programuoti?

Programavimas

Programavimas yra visko po truputį: matematika, fizika, geometrija, logika, abstraktus mąstymas, dizainas ir net filosofija. Kiekvienam pradedančiajam visada iškyla klausimas: nuo ko pradėti? To savęs klausiu ir po 14 programavimo metų kaskart pradėdamas naują projektą, mokindamasis naują technologiją ar šiaip ieškodamas programinio sprendimo.

Net ir turint programavimo pagrindus pradėjus mokintis naują technologiją jautiesi kaip visiškas naujokas atsimušęs į nežinios sieną: aš žinau kaip sukurti funkciją kitoje mano naudotoje programavimo kalboje, o kaip tai padaryti šioje? Kad ir kokią programavimo kalbą ar technologiją pasirinktum, dažnai viską tenka pradėti iš pradžių.

Skaityk tutorials

Pirmas susipažinimo su nauja programavimo kalba žingsnis yra tutorials. Net nežinau šiam žodžiui tinkamo lietuviško atitikmens. Tai yra trumpi straipsniai ar video įrašai (screencasts) pradedantys susipažinti su programavimo kalbos pradmenimis: kaip susikurti naują projektą, padaryti pirmą „Hello world“ programą, pamatyti rezultatus. Skaityti toliau

Ar pasauliui reikalingas dar vienas naujienų skaitytuvas?

rss.jpg

Ech… Keistas klausimas, kurį pastaruoju metu vis dažniau sau uždavinėju. Na, niekur nerandu normalaus RSS skaitytuvo, net ir tas kurį nusipirkau toli gražu nepateisina visų mano lūkesčių. O visgi, kokie tie lūkesčiai?

Paprastumas ir funkcionalumas viename

Mano RSS skaitytuvas turėtų būti paprastas ir aiškus naudoti be jokių instrukcijų. Valdymas ten kur ir turi būti, mygtukai su aiškiom ikonom ir užrašais, neperkrauta vartotojo sąsaja. Programa turi daryti tik tai ko ji yra prašoma daryti, o visos papildomos galimybės (naujienų grupių prenumeratos, paieška, filtrai ir kt.) plečiamos įskiepių pagalba. Tokiu būdu kiekvienas naudoja tik jam reikalingas funkcijas, o ne programą, kurios išnaudoja vos 10% funkcijų. Svarbiausias reikalavimas, kad būtų įgyvendinta tokia frazė: „It just works!“.

Galimybė prenumeruoti komentarus

Įrašo komentarų prenumerata yra būtina savybė, kuri padeda sekti diskusijas tinklaraščiuose. Anksčiau naudojau prenumeratą el. paštu ir pats agitavau, bet pastebėjęs patogią komentarų srauto prenumeratą, kurią turi Omea ir mano NewzCrawler dabar jau nebeįsivaizduoju savo priklausomybės nuo jokių Commentfull tarnybų, kurios kartais streikuoja.

Galimybė redaguoti savo tinklaraštį

Argi nebūtų puiku, jeigu aptikus įdomų straipsnį galima būtų iš tos pačios programos prašyti rašinį savo tinklaraštyje? Automatiškai įterptų ir (via) nuorodą, todėl tektų tik surašyti savo tekstą ir paspausti „Skelbti!“. Dabar gi tenka „mėtytis“ tarp RSS skaitymo programos, tinklaraščio rašymo programos ir dar balažino kokių programų vien tam, kad susekti ir skelbti kasdienį informacijos srautą.

Sinchronizacija

Nors man asmeniškai ši funkcija nėra aktuali, visgi yra žmonių, kurie RSS skaito keliuose kompiuteriuose. RSS skaitytuvas turėtų turėti stabilią ir greitai atnaujinamą ryšį su serveriu, kuriame galima būtu susinchronizuoti perskaitytus ir pažymėtus srautus tarp kelių programų naudojamų to paties žmogaus.

Daugiaplatformiškumas

Baisus žodis programuotojams, kuris reiškia, kad reikia programos dirbančios skirtingose operacinėse sistemose tarp kurių Windows, Mac ir bent keletas labiausiai naudojamų Linux distribucijų.

Ar yra kas nors panašaus?

Nėra. Kuo labiau mąstau, tuo labiau noriu imti ir sukurti tokią programą pats. Tik kai pagalvoju kiek darbo, tai darosi šiek tiek baisu, bet aš mėgstu iššūkius. :o)

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.

Korektiška data tinklaraščio footer srityje

footer.jpg

Labai dažnai internetiniai projektai footer (liet. poraštė) srityje esančia data parodo savo gyvavimo laiką (kaip matote aš esu neišimtis). Pirmieji metai rodo įkūrimą, antrieji – šie metai, kurie paprastai redaguojami rankiniu būdų: pasikeitus metams įrašomas naujas skaičius. Ne visi prisimena, kad reikia atnaujinti poraštę iš karto po Naujųjų ir susizgrimba po kelių mėnesių, geriausiu atveju – savaičių.

Šį blogą pradėjau rašyti tik pernai, todėl poraštėje figūravo tik vienas skaičius – „2007„, kurį reikėjo pakeisti į „2007 – 2008„. Tam, kad 2009-aisiais man nereiktų vėl rankomis keisti į „2007 – 2009“ įsidiegiau pas save automatinį antrosios datos rodymą. Tai pasidaryti WordPress yra labai paprasta: tereikia atverti savo naudojamo šablono footer.php failą per FTP arba įeiti į WP administravimo meniu Išvaizda > Šablonų redagavimas ir pasirinkti „Poraštė“. Atsidariusiame faile susiraskite kur rodoma data ir, pavyzdžiui, vietoj „2007 – 2008“ įrašykite tokį kodą:

2007 - <?php echo date("Y") ?>

Pavyzdžiui, mano footer.php dabar atrodo taip (datos atvaizdavimą paryškinau raudonai):

</div>
<div id="footer"></div>
<div id="footerbox">
<div class="footer">
© <?php bloginfo('name'); ?> 2007 - <?php echo date("Y") ?>.
Naudojuos <a href="http://wordpress.org/">WordPress</a>.
Temą sukūrė <a href="http://www.blogohblog.com">Bobas</a>, o aš ją dar pakoregavau
<?php wp_footer(); ?>
</div>
</div>
</body>
</html>

Pakoreguoti užtruksite tik minutę ir jau kitais metais nebereikės rūpintis poraštėje esančia data, o 2009 vasarį akims netyčia užkliuvus už poraštės būsite maloniai nustebinti, kad viskas kuo puikiausiai veikia. :o)

CSS mygtukų dizaineris

css-button-designer.jpg

Beieškodamas kaip susikurti gražesnį savo tinklaraščio paieškos mygtuką užtikau tokį puslapį, kuriame galima tai padaryti vizualiai. Funkcionalumo prasme ten viskas super, bet mane labai sudomino lango valdymo mygtukai esantys viršuje. Galvoju, kokio velnio čia tie mygtukai viduryje internetinio puslapio?! Skaityti toliau