Autor |
Sõnum |
HoHo
Vana Pingviin
Vanus: 39
Liitunud: 08.07.2005
Postitused: 527
Asukoht: Tallinn/Paide
Distributsioon: Gentoo
|
|
Mis sest ikka arvata, nett on täis selliseid.
|
|
|
|
|
|
|
|
johnsmith
Vana Pingviin
Vanus: 50
Liitunud: 24.07.2006
Postitused: 714
Asukoht: Universum
Distributsioon: Ubuntu/Gentoo/FreeBSD
|
|
commodore kirjutas: | Ma ei soovitaks üldse alustada programmeerimise õppimist C-st ega C++ist.. |
Python ja Perl on tõlgitud keeled see tähendab, et C keeles on kirjutatud tõlk
mis tõlgib Perli käsklused masinakeelde. Sellevõrra on nad ka aeglasemad
nii, et C ja C++ proged jooksevad umbes 10 x kiiremini.
Samas on ka Java tõlgitud keel mis ei ole seganud teda saamast järjest
populaarsemaks. Tänapäeval pole enam ilmselt palju vahet kas on tõlgitud
keel või mitte kuna protsessorid on sedavõrd võimsamad.
C, C++ ja Java on tunduvalt rangema süntaksiga kui scriptikeeled ja võib olla
on hiljem raske õppida kirjutama rangemaid reegleid järgides.
Osates C++ või Javat on võib olla pärast kergem õppida kergemaid keeli......
|
|
|
|
|
|
|
|
sips
Pingviini aktivist
Liitunud: 20.05.2006
Postitused: 288
Distributsioon: Arch
|
|
hiljaaegu tegin oma esimese skripti..
lugu ise selline:
kasutan gaimil ise sätitud ikoone ( http://pingviin.org/album_showpage.php?pic_id=51 ),
kui aga gaimi uuendada saab ta tagasi oma originaal ikoonid
ning kuna nende ikoonide uuest üle kirjutamine on suht tülikas (ei mäleta ju peast kaustasid..) siis tuli mõte,
et võiks ona elu lihtsamaks muuta väikese skripti abil.
All oleva skripti koostamine võtis oma tunnikese ikka kül..
juba ainuüksi if lause ehtiamine oli suht keerukas (kust mina pidin teadma, et "if" ja "[" vahele käib tühik? esimene if'i näide mille netist leidsin oli if[.. mitte if [..),
failide copimise sain kah tööle aga nagu näha on tegemist vägagi kahtlase lahendusega.
"programm" ise tuli siis selline:
Kood: |
#!/bin/sh
# install.sh
# töötab suse linuxiga (pöhjus: gaimi ikoonide asukoht)
# todo oleks siis kontrollida kus kataloomas istuvad gaimi ikoonid
if [ $USER != "root" ]; then
echo "exiting..."
echo "you need to be root (# sudo ./install.sh)"
exit 1
fi
GAIM_PIX_DIR="/opt/gnome/share/pixmaps/gaim"
if [ ! -d $GAIM_PIX_DIR ]; then
echo "exiting..."
echo "directory $GAIM_PIX_DIR not found"
exit 1
fi
cp "$PWD/away.png" "$GAIM_PIX_DIR/icons/away.png"
cp "$PWD/connect.png" "$GAIM_PIX_DIR/icons/connect.png"
cp "$PWD/offline.png" "$GAIM_PIX_DIR/icons/offline.png"
cp "$PWD/online.png" "$GAIM_PIX_DIR/icons/online.png"
cp "$PWD/login.png" "$GAIM_PIX_DIR/status/default/login.png"
cp "$PWD/logout.png" "$GAIM_PIX_DIR/status/default/logout.png"
cp "$PWD/aim.png" "$GAIM_PIX_DIR/status/default/aim.png"
cp "$PWD/yahoo.png" "$GAIM_PIX_DIR/status/default/yahoo.png"
cp "$PWD/msn.png" "$GAIM_PIX_DIR/status/default/msn.png"
cp "$PWD/icq.png" "$GAIM_PIX_DIR/status/default/icq.png"
cp "$PWD/logo.png" "$GAIM_PIX_DIR/logo.png"
cp "$PWD/icon.png" "$GAIM_PIX_DIR/icon.png"
|
kokkuvõteks:
pooldan samuti pingviinis väikese programeerimisnurja olemasolu..
|
|
|
|
|
|
|
|
johnsmith
Vana Pingviin
Vanus: 50
Liitunud: 24.07.2006
Postitused: 714
Asukoht: Universum
Distributsioon: Ubuntu/Gentoo/FreeBSD
|
|
Mul oli vaja teha backup regulaarselt thunderbirdi mailidest.
Kuna maili directory on üle 130 mb suur oli vaja, et ainult viimased 4
koopiat säilitatakse ja vanem koopia kustutatakse.
Sellele lisaks ei tahtnud ma kuulda midagi ise manuaalselt skripti
käivitamisest shellist kõik peab toimuma automaatselt.
Koopia kopitakse ja pakitakse juure omanduses olevasse diectorysse.
Skript käivitub igal pühapäeval crontabist kell 14.30
sisestasin /etc/crontabi
30 14 * * 7 root backup.sh
Skript ise on selline
#!/bin/sh
#Purpose backing up thunderbird mails
FILE=backup.`date +%j`.tar #faili nimi backup.kuupäev
BACKUPDIR="/home/rainer/.mozilla-thunderbird/f5ub1a2u.default"
BACKUPID="/mnt/hdd5/vajalik/thunderbirdbackup"
VIIS=`ls -l $BACKUPID | wc -l` #mitu backupi juba on ?
TEMP=0
ARV=5
tar -cf $BACKUPID/$FILE $BACKUPDIR/Mail | >/dev/null
gzip $BACKUPID/$FILE
if [ $VIIS == $ARV ] #kui backuppe on 5 siseneme if lausesse
then
for DATA in `ls $BACKUPID`; # siseneme for loopi mis käib läbi failid
do
if [ $TEMP == 0 ] # tõsi esimene kord kui temp alustamatta
then
TEMP=$DATA # temp on nüüd failinimi
elif [ $BACKUPID/$TEMP -nt $BACKUPID/$DATA ] # kas fail on uuem ?
then
TEMP=$DATA # kui uuem siis temp=vanem
fi # sisemise if else lause lõpp
done # for loop lõpeb ja temp sisaldab vanemat faili
rm -f $BACKUPID/$TEMP # vanim backup eemaldatakse
fi # ifi lõpp
#end
|
|
|
|
|
|
|
|
commodore
Vana Pingviin
Vanus: 37
Liitunud: 02.10.2005
Postitused: 745
|
|
Viimati muutis commodore 16.08.2015, 15:42; muudetud 1 kord
|
|
|
|
johnsmith
Vana Pingviin
Vanus: 50
Liitunud: 24.07.2006
Postitused: 714
Asukoht: Universum
Distributsioon: Ubuntu/Gentoo/FreeBSD
|
|
commodore kirjutas: | Õppimisel ei ole ju erilist vahet, et on 10x aeglasem, sest niikuinii mingeid ressursinõudlikke asju kohe tegema ei hakka? |
Seda nüüd küll pealegi tõlgitavad programmid on platvormist sõltumatud.
Sama Java või Perli programm jookseb nii Linuxis kui windoozas.
Ega sellel pole tõesti palju tähtsust millisest keelest alustada
peaasi , et alustada
Ma ainult pole kindel kas on parem alustada kergemast või raskemast
keelest, C++ saab ka alustada kergemate progedega ja edenedes
luua omi objekte.....
Pärast on see effekt , et kergemad keeled tunduvad lihtsad.
|
|
|
|
|
|
|
|
vih
Moderaator
Liitunud: 10.08.2005
Postitused: 654
|
|
Pärast võib olla see efekt, et kergemate keelteni ei jõuagi. Õppeasutustes alustati, vanasti vähemalt, ikka BASICu ja Pascaliga. Kui inimene juba ühte keelt tunneb omandab ta teised nii või naa palju kergemini ja kiiremalt.
|
|
|
|
|
|
|
|
uniz
Vana Pingviin
Vanus: 45
Liitunud: 18.05.2006
Postitused: 764
Distributsioon: ubuntucare
|
|
Vajalik oleks: php, java, mysql, c, c++ ning ka html keele tundmised. Ning Inglise keel- ja Linuxi ja unixi tundmist. Siis v:ib midagi :ra teha.Kui m:nel on midagi head, siis laske tulla..
|
|
|
|
|
|
|
|
johnsmith
Vana Pingviin
Vanus: 50
Liitunud: 24.07.2006
Postitused: 714
Asukoht: Universum
Distributsioon: Ubuntu/Gentoo/FreeBSD
|
|
Vampire kirjutas: | Pärast võib olla see efekt, et kergemate keelteni ei jõuagi. Õppeasutustes alustati, vanasti vähemalt, ikka BASICu ja Pascaliga. Kui inimene juba ühte keelt tunneb omandab ta teised nii või naa palju kergemini ja kiiremalt. |
Ega ma selle koha pealt ei hakka vaidlema. Ma olen iseõppinud ega oma mingeid tiitleid ega paguneid.
Alustasin u 4 aastat tagasi C++ -ga täitsa tühjast.
Aasta tagasi hakkasin õppima Javat ja avastasin, et see meenutab
palju C++ -si. Peale selle olen õppinud Php -d ja Perli ja muidugi Bashi.
Ma oskan igast asjast natukene aga mitte midagi korralikult.
|
|
|
|
|
|
|
|
trepan
Uus kasutaja
Liitunud: 03.08.2006
Postitused: 8
|
|
Jõudsin veidike hilja vaidlema, aga minu tehtud loomkatsed näitavad, et skriptimiskeeled (perl, python, php) on kõigest 10%..15% aeglasemad, kui samaväärne C programm.
Java oli kuskil 25% aeglasem (vana versioon, uuega pole viitsinud testida), ning teine baitkoodil põhinev keel (C#) oli minu üllatuseks C programmidega võrreldes peaaegu sama kiire
|
|
|
|
|
|
|
|
uniz
Vana Pingviin
Vanus: 45
Liitunud: 18.05.2006
Postitused: 764
Distributsioon: ubuntucare
|
|
Aga näed: FreeBSD ja Mepis näitavad, et sul on õige valik. Millal on sinult oodata oma OS-i?
|
|
|
|
|
|
|
|
johnsmith
Vana Pingviin
Vanus: 50
Liitunud: 24.07.2006
Postitused: 714
Asukoht: Universum
Distributsioon: Ubuntu/Gentoo/FreeBSD
|
|
Trepan, ma arvan, et vahe on suurem vanema riistvara puhul.
See ei ole ilmselt enam praegusel ajal probleemiks.
Protsessorilt suurt jõudlust nõudvad proged nt "John the Ripper"
tuleks ikka kirjutada C -ga.
Tekstifailide käsitlemis progesid pole mingit mõtet hakata kirjutama C -ga
(kui ainult siis õppimiseks) selle jaoks on ikka Perl või siis Bash.
Uniz, ma pole veel piisavalt "vapper ja ilus"
Kuigi osalemine mõnes GNU või BSD projektis oleks kindlasti huvitav...
|
|
|
|
|
|
|
|
uniz
Vana Pingviin
Vanus: 45
Liitunud: 18.05.2006
Postitused: 764
Distributsioon: ubuntucare
|
|
|
|
HoHo
Vana Pingviin
Vanus: 39
Liitunud: 08.07.2005
Postitused: 527
Asukoht: Tallinn/Paide
Distributsioon: Gentoo
|
|
vih kirjutas: | Õppeasutustes alustati, vanasti vähemalt, ikka BASICu ja Pascaliga. | Basicu õpetamise mõttekusest ma parem ei räägi kuid viimasel ajal on esimese keelena üsna populaarseks saanud Java.
trepan kirjutas: | Jõudsin veidike hilja vaidlema, aga minu tehtud loomkatsed näitavad, et skriptimiskeeled (perl, python, php) on kõigest 10%..15% aeglasemad, kui samaväärne C programm. | Eks see oleneb mis on pudelikaelaks. Kui see pole prose siis pole eriti vahet. Kui on siis näiteks optimeeritud python vs optimeeritud C on kiirusevahe kuni 100x.
Java 1.5 ja MS'i C# on enam-vähem ühe kiirused, Mono on paraku mõlemast ~20-50% aeglasem. Võrreldes C'ga on kiirus olenevalt rakendusest 20-100% väiksem.
johnsmith kirjutas: | Trepan, ma arvan, et vahe on suurem vanema riistvara puhul. | Pigem vastupidi. Koodi väike optimeerimine mõjutab kiirust uuemate prosede peal tükk maad rohkem kui vanemate peal. Põhjuseks on see et teatud asjad võivad uute peal kiiruse põhja tõmmata. Kaks suurmimat "pahalast" on kehvad andmestruktuurid ja palju hargnemisi.
|
|
|
|
|
|
|
|
trepan
Uus kasutaja
Liitunud: 03.08.2006
Postitused: 8
|
|
HoHo kirjutas: | Eks see oleneb mis on pudelikaelaks. Kui see pole prose siis pole eriti vahet. Kui on siis näiteks optimeeritud python vs optimeeritud C on kiirusevahe kuni 100x.
|
Hmm... 100x on väga julm vahe. Mingit konkereetsemat infot?
Kui prose on pudelikaelaks, siis just ei tohiks suurt vahet olla (programm seisab arvutuste taga).
Ma kujutan ette, et kui programmis on väga palju if-else / case statemente, siis just jääb intepretaator alla.
|
|
|
|
|
|
|
|
HoHo
Vana Pingviin
Vanus: 39
Liitunud: 08.07.2005
Postitused: 527
Asukoht: Tallinn/Paide
Distributsioon: Gentoo
|
|
trepan kirjutas: | Hmm... 100x on väga julm vahe. Mingit konkereetsemat infot? | Ray tracer mis kasutab praktiliselt ainult SSE2't ning ülimalt optimeeritud mälu layouti, software prefetchi ja sadat muud asja
Ma usun et seal võib vahe olla ka tunduvalt suurem kui 100x.
Kel huvi võib ju proovida Pythonis midagi sarnast valmis teha
Loomulikult kui see osa teha C/C++'ga ning pythonis neid funktsoone välja kutsuda pole kiiruses suurt vahet, eeldusel et ka igat kiirt genereerib too native-koodis porgrammijupp.
|
|
|
|
|
|
|
|
laurivosandi
Moderaator
Vanus: 36
Liitunud: 08.07.2005
Postitused: 647
Asukoht: Tallinn
Distributsioon: Estobuntu, Debian
|
|
HoHo kirjutas: | Ray tracer mis kasutab praktiliselt ainult SSE2't ning ülimalt optimeeritud mälu layouti, software prefetchi ja sadat muud asja |
hah
|
|
|
|
|
|
|
|
trepan
Uus kasutaja
Liitunud: 03.08.2006
Postitused: 8
|
|
|
|
uniz
Vana Pingviin
Vanus: 45
Liitunud: 18.05.2006
Postitused: 764
Distributsioon: ubuntucare
|
|
Kood: |
//output näide--
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
char buffer[81];
ofstream out_file("andmed.dat");
cout << "Sisesta oma nimi: ";
cin.getline(buffer, 81);
out_file << buffer << endl;
cout << endl;
cout << "Sinu aadress: ";
cin.getline(buffer, 81);
out_file << buffer << endl;
out_file.close();
cout << endl;
cout << "Lopetatud." << endl;
return 0;
}
|
c++ on tõesti parem..
in_file.get ja out_file.put ,out_file.close -hakkab isegi meeldima..
|
|
|
|
|
|
|
|
HoHo
Vana Pingviin
Vanus: 39
Liitunud: 08.07.2005
Postitused: 527
Asukoht: Tallinn/Paide
Distributsioon: Gentoo
|
|
Sa seda programmi jooksutanud ka oled? Loogika ütleb et faili kirjutatakse sisestatud nimi ning ilma newline'ta ülejäänud puhvris olnud läbu mille otsa teisele reale lastakse sama moodi aadress. Palju lihtsam oleks nende getline'de ja puhvritega jamamise asemel olnud kasutada midagi sellist:
Kood: | //output näide--
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string buffer;
ofstream out_file("andmed.dat");
cout << "Sisesta oma nimi: ";
cin>>buffer;
out_file << buffer << endl;
cout << endl;
cout << "Sinu aadress: ";
cin>>buffer;
out_file << buffer << endl;
out_file.close();
cout << endl;
cout << "Lopetatud." << endl;
return 0;
} |
Proovi mõlemat programmi kompileerituna ilma debug flagideta ning võrdle failide sisu
PS!
Ma ei kontrollinud reaalselt kumbagi koodi kuid eeldan et minu oma on korrektne. Kui ei siis selgita miks
|
|
|
|
|
|
|
|
|