Ideja je nauciti ljude razbiti problem na manje dijelove i
napraviti temelj za kasnije programiranje u visim programskim
jezicima.
Takodjer, IMO, lakse je objasniti sto je pointer ljudima koji znaju
nesto assemblera nego uroniti ih u C jer je ideja pokazivaca na
memorijsku lokaciju mnogo prirodnija u assembleru. A i kada
programirate u assembleru naucite brzo da trebate komentirati svoj
kod, te kako npr. funkcije drzati kratkima.
Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
Unaprijed zahvaljujem na Vasem vremenu.
--
Uspjesne regije, tvrtke, muskarci i zene znaju da je uvijek bolje biti
prvorazredna verzija sebe nego drugorazredna verzija nekog drugog.
Kod visih jezika ne treba tako obilno komentirati.
> Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
Ne znam bas je li ti pojam stacka bitan u visem programskom jeziku.
Treba biti svjestan da varijabla imaju svoj "scope", stack je stvar
implementacije.
Mozda bi assembler pocetnika uplasio?
--
Milan Mimica
http://sparklet.sf.net
mislm da nacin na koji nekoga ucis programiranju dosta ovisi o tome
kakvog programera hoces... ovo sto si opisao mi se cini kao dobra
podloga za hc programere koji nikad nece ponjusiti nesto izvan konzole i
vim-a/emacs-a ;) ali je opet, imo, prekomplicirano za pocetnike. probaj
sa nekim jednostavnijim jezicima vise razine dok ih ne naucis nacinu
razmisljanja jer nakon toga konkretni jezik igra malu ulogu :)
--
I doubt, therefore I might be.
Mislim da je najbolje da krenu sa premetanjem kuglica po abacusu, tada ce
najvise nauciti cijeniti broj instrukcija koje koriste za program.
> Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
Doh.
--
NAME:Dinko.kreator.Korunic DISCLAIMER:Standard.disclaimer.applies
IRC:kre ICQ:16965294 JAB:kreat...@jabber.org PGP:0xea160d0b
HOME:http://dkorunic.net BLOG:http://dkorunic.wordpress.com
To je tocno, ali ovdje se radi o totalnom pocetniku koji bi se tek
kasnije odlucio hoce li pisati u cobolu, C++ -u i LISPu.
Znaci, opcenito, uvod u programiranje u assembleru za sve pocetnike.
> ovo sto si opisao mi se cini kao dobra
> podloga za hc programere koji nikad nece ponjusiti nesto izvan konzole i
> vim-a/emacs-a ;)
:)
> ali je opet, imo, prekomplicirano za pocetnike.
Moja ideja je poceti s assemblerom iz nekoliko razloga; jedan bi bio taj
sto je assembler za RISCove zapravo samo skup vrlo jednostavnih pravila.
Drugi rijecima, kada upises
in ax,dx
znas tocno sto se desi u procesoru. To je posebno vidljivo ako se
usput koristis didaktickim pomagalima poput vec spomenutog vizualnog
virtualnog stroja. A i za neke RISCove imas opkodova koliko i C kljucnih
rijeci :) Pa opet mozes napraviti neke vrlo privlacne stvari.
> probaj
> sa nekim jednostavnijim jezicima vise razine dok ih ne naucis nacinu
> razmisljanja jer nakon toga konkretni jezik igra malu ulogu :)
Da, vjerojatno sam zaboravio reci da sam dobio zadatak napisati seminar
koji bi se bavio programerima pocetnicima koji pocinju u assembleru.
Istina, ali stjeces naviku komentirati ga.
>> Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
>
> Ne znam bas je li ti pojam stacka bitan u visem programskom jeziku.
> Treba biti svjestan da varijabla imaju svoj "scope", stack je stvar
> implementacije.
Kako rekoh, cak i osnovnim uvodom u gotovo bilo koji assembler stjeces
konkretne temelje koji te mogu kasnije posvuda pratiti. Eto, recimo,
mozes objasniti kako se funkcije pozivaju, kako radi poziv syscallova,
kako se obraduju interrupti u osnovama OSova itd. A to je samo jedan
mali dio.
> Mozda bi assembler pocetnika uplasio?
Ovisi o pristupu. IMHO.
Ironiju na stranu, nekada su pocetnici ucili BASIC i Pascal. Danas
svugdje uce C. Na Tekstilno-tehnoloskom faksu prvi jezik im je C++.
Go figure.
Uglavnom, potrosis li na objasnjavanje ovoga sa vjezbama nekih
mjesec-dva hoce li biti koristi od toga? Ja mislim da hoce.
Nije da se ne moze. Na PMF-u (Fizika) na 1. godini se radi nesto vrlo
slicno, i to tijekom jednog jedinog termina vjezbi za primjenu racunala
(IIRC, 2 skolska sata). Ljudi su imali neki RISC-wannabe emulator pisan
u C-u i morali su napisati nekakav programcic u tom virtualnom
assembleru. Tri lista priprema i dva sata.
Svi su obavili vjezbu.
Danas se vise niti ne sjecaju da su to radili.
>> Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
>
> Doh.
Pa to i je poanta. Uklopiti sve to i pokazati ljudima kako sve radi.
Dakle dok jos nisu uopce uhvatili generalnu sliku i koncepte najbolje
talambasati po bitovima i registrima da im se ogadi? Super, podsjeca me
neodoljivo na par kolegija...
> Svi su obavili vjezbu.
> Danas se vise niti ne sjecaju da su to radili.
Dakle neizmjerno im je koristilo i to ce pricati i svojim unucima ;-)
Za nauciti voziti auto najbolje je prije toga biti automehanicar
--
Youth is wasted on the young
Imo bottom-up nije dobar način za učit nekog programirat.
Davorin Vlahovic je napisao/la:
On 2006-12-30, Davorin Vlahovic <nr...@ylf.krs.ref.rh> wrote:
>
> Ironiju na stranu, nekada su pocetnici ucili BASIC i Pascal. Danas
> svugdje uce C. Na Tekstilno-tehnoloskom faksu prvi jezik im je C++.
>
Pascal mislim da bi bio odlican pocetak. Dovoljno je rigidan jezik da ne
pusta programera da se upuca u nogu. Ima procedure, funkcije, goto - sve
sto treba da nauce strukturirano razmisljati. Ne treba puno vremena trosit
na Pascal, al da je dobar pocetak za objasnit koncepte top-down dizajna
i rabijanja problema na manje - jest.
Apropos ASM-a, ja sam poceo na C64 BASIC-u, pa 6502 ASM, pa Pascal pa C..
U C-u sam shvatio pointere (i mnogo drugih stvari opcenito) prateci ASM u
turbo debuggeru :)
Mislim da je ASM OK ako postoji "coolness factor" tako da vide da se nesto
kul da radit. Na C64 su taj "coolness factor" bili sprajtovi, boje (video
kontroler) i audio kontroler. Sa jako malo koda se dalo napravit puno
zgodnih efekata.. A usput se dosta nauci o 2nd komplementu itd.
Dakle, ako mozes slozit okolinu tipa C64 ili Orao - super, ili, malo
modernija varijanta robotici poput Lego mindstorms. Ali da idu u ASM-u
programirati algoritme tipa GCD, neki sort i blah - totalno besmisleno. Isto
tako smatram da ih je besmisleno ucit calling konvencijama, prijenosu
parametara, syscallovima.. Iako ih _je_ korisno upoznat konceptom HW
stacka.
Dakle, moze bit ili super (nesto sto ce ih zainteresirat za kompjutere) ili
katastrofa, ovisno STO ih mislis ucit.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFFlrXRFtofFpCIfhMRA+9DAKCA3x/VwOkYA7UXK7b8zGyyrwRlIwCcC5tl
LoyJUDnEyixB+W9rK/sVr/U=
=E4Ha
-----END PGP SIGNATURE-----
On 2006-12-30, Ivan S <ivan....@gmail.com> wrote:
> Hm, zasto uciti pointere (i sve muke vezane uz njih) programera koji ce
> programirati u C# ili Javi i koji ce baratati sa objektima? :)
>
Zato sto i Java i C# imaju pointere (= reference). Ono sto nemaju jest
pointer aritmetika. Dva razlicita pojma.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFFlrZLFtofFpCIfhMRAzriAJoDokyJAy7OR7Jagy+msh/bEKzhVwCbBi2B
4bKT2EcXh3advZIuzVku7mI=
=ZFXF
-----END PGP SIGNATURE-----
A bas. :)
Da, ali stvar je u tome da te na faksu ili u skoli ne uce programski jezik,
vec te uce nacinu na koji programiras. Za pocetnika nije vazno oces li ga
uciti C,C++,basic ili pascal ako ga naucis razmisljat. Osoba koja nauci
razmisljat, poslije ce sintaksu jednostavno nauciti.
Po mom misljenju, ako nekoga ucis asembler ili slicno, onda on nema
buducnost kao programer, vec je usmjeren ka arhitekturi mikroprocesora ili
racunala.
Pazi redosljed koji se obicno radi na informatici ili necemu sto se
ne zove primjena racunala (u p.r. ovakvo nesto je shvatljivo):
- uvodno predavanje
- binarni brojevni sustav i zasto je potreban
- osnovne logicke operacije
- osnovne matematicke operacije s binarnim brojevima
- bistabil se spomene, ponegdje crtaju shemu sa NI/NILI i
zahtjevaju da se zna nacrtati. Ne objasne (idejno) kako radi.
- registar
<RUPA>
- procesor je crna kutija - kakve veze imaju bistabil ili registar s
procesorom? Ne nacrta se cak ni nesto iznimno jednostavno za shvatiti
poput npr. MOS6502.
- maticna ploca sluzi za..., graficka sluzi za..., disk sluzi za...,
zvucna sluzi za..., monitor sluzi za..., tastatura i mis sluze za... .
<RUPA>
- mahanje misem po windowsima, word, excel, web, eventualno ftp.
Super, to se sve objasni za dva mjeseca. Rezultat su ljudi koji udaraju
*monitor* kada nesto zasteka (na nekom nivou udaranje kucista racunala
bi cak i bilo shvatljivo, ali ovdje se radi cak o fundamentalnom
(ne)razumijevanju sto ovdje zapravo radi sto). Za tri mjeseca vide da od
toga nemaju koristi i zaborave, a onda
- uce C
Ovo toliko dobro ide da veci dio cak ne zna uci li C ili C++ i postoji
li uopce razlika izmedu njih, a u nekoliko navrata sam cak cuo da misle
da se jezik actually zove "C/C++" :)
Naravno da treba napraviti razliku izmedu onih koji ce se racunalom kao
njihov krajnji domet sluziti kao pisacom masinom, ali programeri bi
trebali imati kakav-takav uvod i razumijevanje kako zapravo racunalo
radi.
Uciti C? Naravno da treba, on je osnova ogromne vecine drugih
programskih jezika.
Sintaksu je lako nauciti. Onima koji su odslusali semestar C-a cak nije
problem shvatiti sto radi neki kraci lijepo napisani C program. Ali da
takva prosjecna osoba nesto sama napise veci je problem.
Moje je misljenje da je uz jednostavan uvod u assembler lako nauciti
rastavljati takve probleme na dijelove koje racunalo shvaca, tj.
shvatiti princip rada i uci racunalu "u glavu". Ili je bar to
pretpostavka seminara.
Kada je sretan i zadovoljan sto zna osnovnim operacijama natjerati
procesor da radi sto zeli mozes takvoj osobi reci - a sada idemo malo
ispisivati rezultate. I pokazes mu kako pristupiti nekom jednostavnom
uredaju poput LCD-a ili podrucja u memoriji koji opisuje ono sto se
prikazuje na ekranu. Ili preuzeti podatke s jednostavne tastature itd.
Naravno, u nekoj iznimno jednostavnoj virtualnoj masini tipa spectrum,
ali sa nekim RISColikim procesorom i prikazom bitnih parametara (stanja
procesora, stanje na sabirnici, pregled memorije, I/O portova s
virtualnim periferijama itd)
>> Svi su obavili vjezbu.
>> Danas se vise niti ne sjecaju da su to radili.
>
> Dakle neizmjerno im je koristilo i to ce pricati i svojim unucima ;-)
Poanta je bila da nije tesko i nisu se prepali. Nije im koristilo (kao
ni ista drugo s tog kolegija) jer nisu imali s cime povezati to znanje.
BTW, ima li itko tko bi podrzao ovakvu tezu? Naravno, ideja je raditi
takve stvari u virtualnim masinama s primjerenim suceljem, a ne u crnoj
konzoli i moliti Boga da se stroj ne smrzne :)
A dobro, ako bas zelis cjepidlaciti...uglavnom, mislim da je jasno na
sta sam ciljao - kao sta si i sam, vidim, zakljucio. :)
> Da, ali stvar je u tome da te na faksu ili u skoli ne uce programski jezik,
> vec te uce nacinu na koji programiras.
Ma vraga te nauce, bas suprotno. Nauce te da budes rob jedne tehnologije,
nauce te neke osnove bez detalja. U 5 godina na faksu nemas tri cisto
programerska kolegija.
--
Igor Pozgaj | ipozgaj at fly.srk.fer.hr
ICQ: 126002505 | IRC: @thunder (#linux@IdolNet)
PGP: 0xEF36A092 | http://fly.srk.fer.hr/~ipozgaj
http://ipozgaj.blogspot.com (/atom.xml RSS feed)
ja mislim da je to losa ideja.
treba poceti od jednostavnih stvari koje su bliske nacinu na koji razmislja netko tko ne zna
programirati. asembler to nije.
razlog za to se krije u psihologiji iza pojmova napor, uspjeh, transfer postojecih znanja i
motivacije.
> Ideja je nauciti ljude razbiti problem na manje dijelove i
> napraviti temelj za kasnije programiranje u visim programskim
> jezicima.
>
asembler nema monopol na rjesavanje problema metodom "razbijanja na manje dijelove". ta strategija
se primjenjuje i kod pisanja SQL naredbi.
> Takodjer, IMO, lakse je objasniti sto je pointer ljudima koji znaju
> nesto assemblera nego uroniti ih u C jer je ideja pokazivaca na
> memorijsku lokaciju mnogo prirodnija u assembleru. A i kada
> programirate u assembleru naucite brzo da trebate komentirati svoj
> kod, te kako npr. funkcije drzati kratkima.
>
da bi netko shvatio sta je pointer treba imati predodzbu o arhitekturi racunala a ne nuzno o bilo
kojem konkretnom asemblerskom jeziku.
ono o komentiranju koda i pisanju kratkih prosedura takodjer nije privilegija asemblera. to isto
vrijedi i za druge jezike.
> Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
>
> Unaprijed zahvaljujem na Vasem vremenu.
tvoj nacin ramisljanja je mehanicki i ti mislis da je proces ucenja slican procesu punjenja boce. to
jednostavno nije tako.
ono sta je jaaaako bitno a o cemu nisi niti malo razmisljao je kako ucenika motivirati da nesto radi
i istrazuje, kako osigurati da mu ucenje ne bude tesko, kako ucenje organizirati u obliku manjih
zadataka koje moze rijesiti, kako zadovoljiti njegovu osobnu znatizelju i kako nove stvari
predstaviti na njemu blizak i lako razumljiv nacin.
kod ucenja imas slican problem kao i sa Glavasem - ako on ne zeli jest onda se mozes jebat. Trebas
ga prvo natjerati da otvori usta a onda razmisljati o nutricionistickoj vrijednosti.
Kao student 3. godine informatike se u potpunosti slazem s tobom. Prve
dvije godine studija su mi samo preletjele pred ocima, tocno tako
kakvima si ih opisao.
Pomijesao si par stvari - ovdje se ne radi o vozacima misa po cestama
Vistinog desktopa vec o ljudima koji ce pisati sw.
Sto ce mi programer koji ne zna sto se desi kada shiftas neki broj na
neku stranu, koji ne zna logicke operacije i koji ne zna logiku iza bar
jednog sortiranja?
Jedno je biti korisnik modularnih komponenti kao npr. u VB-u, a drugo je
napisati sw.
I sto ces jednog dana kada ti 5% tvojih studenata odluci da treba
isprogramirati boot loader za stroj na novoj arhitekturi ili
mikrokontroler?
Svi vole pricati kako se kod nas siroko rade predmeti, ali ispada da to
vrijedi samo za povijest, zemljopis i knjizevnost - jako bitne predmete
99% ljudi, zar ne? S druge strane jako se zanemaruju bitni predmeti
poput prirodnih znanosti i novijih tehnologija.
Ok. Zasto?
Pa ja i zelim da se upucaju u nogu na malim stvarima. Taktom na
korak-po-korak metodi mogu odmah vidjeti sto im je u programu krenulo
lose. Tako im se moze objasniti i sto se desava ako se memorija pokvari,
ako se neki kabel osteti i slicno.
> Ima procedure, funkcije, goto - sve
> sto treba da nauce strukturirano razmisljati.
Ima i Fortran pa ga nitko ne uci :)
> Apropos ASM-a, ja sam poceo na C64 BASIC-u, pa 6502 ASM, pa Pascal pa C..
> U C-u sam shvatio pointere (i mnogo drugih stvari opcenito) prateci ASM u
> turbo debuggeru :)
Ja sam ASM ucio na schneideru (z80) uz jednu odlicnu knjigu na
hrvatskom. Zaboravio sam kako se zove, otisla je kada sam prodao
schneidera. Sada mi je zao, bila je fenomenalna. Puna rutina za
zvukove, grafiku, a radio se neki elementarni space invaders (jedan
protivnik :) ).
> Mislim da je ASM OK ako postoji "coolness factor" tako da vide da se nesto
> kul da radit. Na C64 su taj "coolness factor" bili sprajtovi, boje (video
> kontroler) i audio kontroler. Sa jako malo koda se dalo napravit puno
> zgodnih efekata.. A usput se dosta nauci o 2nd komplementu itd.
E, to mi i je tocka s koje cu gledati u seminaru.
> Dakle, ako mozes slozit okolinu tipa C64 ili Orao - super, ili, malo
> modernija varijanta robotici poput Lego mindstorms. Ali da idu u ASM-u
> programirati algoritme tipa GCD, neki sort i blah - totalno besmisleno.
Ne, to mi nikada nije bila ideja. Za to bih se posluzio visim
programskim jezicima jednom kada shvate kako racunalo funkcionira s
gledista njihovih programa.
> Isto
> tako smatram da ih je besmisleno ucit calling konvencijama, prijenosu
> parametara, syscallovima..
To i tako moraju proci ako misle napraviti svoju funkciju u assembleru
:) Na tom nivou to i nije toliko komplicirano - pushnes argumente na
stack i call-as funkciju. Kojim redosljedom, kako poslati vlastiti tip
podatka kao argument koji ne stane u registar? Objasnis za par minuta,
oni shvate i mirni su s takvim stvarima cijelog zivota.
> Iako ih _je_ korisno upoznat konceptom HW stacka.
Naravno.
> Dakle, moze bit ili super (nesto sto ce ih zainteresirat za kompjutere) ili
> katastrofa, ovisno STO ih mislis ucit.
Naravno. Reci im da isprogramiraju duke nukem ili trgovackog putnika u
assembleru je ludost. Meni assembler treba samo da im pokazem kako procesor
"razmislja", kako komunicira s periferijama na neki jednostavan nacin i
to sve upakirati u nesto jednostavno tipa pong.
Usporiti cijelu masinu na 1HZ (ili sporije ili na pritisak tipke na misu)
i slicne prednosti su samo kap u oceanu stvari koje se mogu pokazati na
zgodan, zabavan i zanimljiv nacin.
Ja sam to prosao u osnovnoj, srednjoj, na dva faksa i mogu ti reci da te
nitko nikada nije ucio kako programirati vec su te samo ucili sintaksu
programskih jezika i zadavali ti zadatke da sam smislis rjesenje. Drugim
rijecima, dali su ti harpun i poslali u lov na vjeverice ali te nisu
naucili kako se love vjeverice.
> Za pocetnika nije vazno oces li ga
> uciti C,C++,basic ili pascal ako ga naucis razmisljat.
To je apsolutno tocno. Zato sam i potegao ovu temu jer mislim da je
jednostavnije nauciti nekoga razmisljati kako da kaze racunalu sto da
radi ako idejno zna kako racunalo "razmislja".
> Po mom misljenju, ako nekoga ucis asembler ili slicno, onda on nema
> buducnost kao programer, vec je usmjeren ka arhitekturi mikroprocesora ili
> racunala.
:) Nekako se nikako ne bih slozio s tom tvrdnjom. Vidis, poznavanje
kako procesor izgleda programeru i arhitektura samog procesora su dvije
vrlo razlicite stvari.
<snip>
> Moje je misljenje da je uz jednostavan uvod u assembler lako nauciti
> rastavljati takve probleme na dijelove koje racunalo shvaca, tj.
> shvatiti princip rada i uci racunalu "u glavu". Ili je bar to
> pretpostavka seminara.
<snip>
Krivo razmisljas..potpuno se slazem sa tvojim redosljedom ucenja
"informatike" jer sam se s njom susreo u vise navrata i skuzio da ljudi
imaju enormne rupe u shvacanju kako stvari funkcioniraju, te da bez
nekih osnova to jednostavno nije moguce nekom ugraditi u glavu. Al opet
s druge strane, to nije problem koji treba sad rjesavat jer se taj
problem formira godinama-> od prvih satova informatike pa do ucenja
programiranja u srednjoj. Nemozes gradit kucu bez temelja i stoga bi
tvoj pokusaj predavanja assemblera pao na "neplodno tlo".
Vecinu ljudi UOPCE ne interesira kako stvari funkcioniraju nego su
skuzili da ako naprave to i to da ce proc predmet i da im to vise nece
trebat, a oni koji zele naucit nesto ce to uglavnom sami napravit.
To je barem moje osobno iskustvo koje sam skupio dok sam predavao
programiranje/ drzao tecajeve o wordu/ofisu...
> BTW, ima li itko tko bi podrzao ovakvu tezu? Naravno, ideja je raditi
> takve stvari u virtualnim masinama s primjerenim suceljem, a ne u crnoj
> konzoli i moliti Boga da se stroj ne smrzne :)
IMHO programiranje u konzoli je stvar iz proslosti koju treba koristiti
SAMO za ucenje programiranja. Jer vecina ljudi(oni koji ne znaju
programirat) ce odustat od toga cim vidi bjela slova na crnom ekranu:)
Psihologija ljudi je vrlo jednostavna: slikice i lampice su fora,
crno/bijelo nije:)
My 2 cents..
--
Ivan/Rbrrneck
Pa nije to bas cjepidlacenje - zamisli sto bi bilo kada bi slao neki
array ili neku klasu sa gomilom informacija by value umjesto by
reference :)
zavisi sve to, ne znam kako se danas postaviti pocetnicima za ucenje..
zanimljiv problem svakako
imho
- uvod u assembley treba definitivno, ali je pitanje prije ili poslije nekog
higher level jezika npr C (zapravo definitivno C :D )
- pointer uopce nije problem objasniti ljudima koje upoznas sa osnovama kako
funkcionira racunalo - sjecas se prije sto godina CPU, ALU, Memorija... itd
:D
- prirodnije je svakako objasniti pointer nekome tko zna assembler, ali
sjeti se opet prije sto godina npr komandi tipa POKE 53280,0: POKE 53281, 0
.. da uvedes takvo nesto u C ucenje pocetnicima define BLABLA 0xFFFFFF,
naucis usput hex, i onda ih uvedes u assembler, malo po tome i onda dalje na
high level jezik.. to mi se nekako cini ispravan pocetni stupanj puta za
zaokruzenog programera (ne debelog)
Da, to jos nisam spomenuo; seminar ce slusati buduci profesori
informatike :)
Uglavnom, zanima me samo razrada teme, plusevi i minusi. Kada, gdje i
kome je isto tako predmet rasprave.
> Vecinu ljudi UOPCE ne interesira kako stvari funkcioniraju nego su
> skuzili da ako naprave to i to da ce proc predmet i da im to vise nece
> trebat, a oni koji zele naucit nesto ce to uglavnom sami napravit.
Vecina ljudi uopce nece u buducnosti biti programeri :) Recimo, ljudima
u gimnaziji to ponuditi kao izborni predmet pod uvod u programiranje
(obrada C/C++ i Pascal sintakse, kljucnih rijeci i API-a to nije), dok u
srednjim tehnickim skolama npr. tehnicarima za informatiku to bi bilo
obavezno.
Dakle, vec sam spomenuo kako bi se pazilo na to kome to predavati.
>> BTW, ima li itko tko bi podrzao ovakvu tezu? Naravno, ideja je raditi
>> takve stvari u virtualnim masinama s primjerenim suceljem, a ne u crnoj
>> konzoli i moliti Boga da se stroj ne smrzne :)
>
> IMHO programiranje u konzoli je stvar iz proslosti koju treba koristiti
> SAMO za ucenje programiranja. Jer vecina ljudi(oni koji ne znaju
> programirat) ce odustat od toga cim vidi bjela slova na crnom ekranu:)
> Psihologija ljudi je vrlo jednostavna: slikice i lampice su fora,
> crno/bijelo nije:)
Pa napraviti to kao neku java GUI aplikaciju a'la Igraonica nije problem :)
Oops, sada sam se odao :)
Koja odlična metafora :) :D
Pitanje:
Je li Davorin Vlahović asistent?
Čisto me zanima - naime čini mi se da jest :)
Je, simpaticno, ali propustio je da sam rekao da bi se to ucilo ucenike
kojima je to bitno znati. Njih nitko ne tjera da upisu taj predmet (u
gimnaziji) ili da upisu neki programerski tecaj/skolu/stovec.
> Pitanje:
>
> Je li Davorin Vlahovi? asistent?
>
> ?isto me zanima - naime ?ini mi se da jest :)
Davorin Vlahovic nije asistent :) Naime, on je student PMF-Fizika, smjer
prof. fizike i informatike, 4. godina :)
ovak... ak pod početnici misliš klince onda počni od loga... odnosno
basica... logo je za one koji baš ne žele programirat neg vole fency
stvarčice pa onda ih se polako navuče na programiranje :D ( učim klince
programirat pa je ovo donekle provjerena informacija )
ak želiš starije mangupe naučit programirat(teenagere) onda idi basic pa
c(osim ak vidiš da možeš odma c tj da su dovoljno stari(srednja škola
npr) ) e sad čovjek bi očekivao assembler prije programskog jezika da bi
mu objasnio sve, ali istina je da to moraš naletiti na nekog
klinca(mangupa koji je barem 7 razred) kojeg fakat to zanima (takvih je
1-2%) i onda to možeš... inače je bolje prvo počet od c-a jer je
"user-friendly" koliko god mi šutjeli o tome, odnosno gledaj c kao uvod
u programiranje a assemble kao advanced koji će sve pojasnit... isto kao
što matematiku klinci znaju da je 1+1=2, ali tek na faksu ti to
dokažu(recimo kao analogiju... :) )
a ako učić odrasle osobe početnike programiranju opet ćeš često naletiti
na, recimo, nezainteresiranost. ali opet puno veći postotak ljudi koji
to žele stvarno shvatiti pa je tu moguće držati paralelno predavanje
assembler i c s time da od c-a samo osnove osnova dok se assembler
obrađuje a kasnije onda malo napredniji c
Nisam
- ovdje se ne radi o vozacima misa po cestama
> Vistinog desktopa vec o ljudima koji ce pisati sw.
To je lijepo
> Sto ce mi programer koji ne zna sto se desi kada shiftas neki broj na
> neku stranu, koji ne zna logicke operacije i koji ne zna logiku iza bar
> jednog sortiranja?
Sto ce mi vozac koji ne zna popraviti anlaser
Za tih 5% postoji internet i odgovarajuca litetatura. Na faksu ionako
ne mozes sve nauciti i dosta toga sta ces u buducnosti raditi naucis
prakticki sam iz prirucne literature. :)
> Svi vole pricati kako se kod nas siroko rade predmeti, ali ispada da to
> vrijedi samo za povijest, zemljopis i knjizevnost - jako bitne predmete
> 99% ljudi, zar ne? S druge strane jako se zanemaruju bitni predmeti
> poput prirodnih znanosti i novijih tehnologija.
E sad...mislim da jako puno toga ovisi o tome cime se netko zeli baviti
u zivotu.
Ako se netko zeli baviti npr. web dizajnom, onda mu asemblersko
programiranje nije potrebno, dok s druge strane ako se netko zeli
baviti asemblerskim programiranjem onda nema smisla da uci HTML,
JavaScript, PHP, itd.
Meni osobno nije jasno zasto bi svi trebali znati sve.
Ok mozda nesto uciti cisto informativno i radi opce kulture, ali onda
mislim da bi se trebalo raditi cisto teorijski... :)
Ajde kada je već flame fest...
Sve ovisi o tome što bi taj kojeg učiš trebao raditi - ako je zadatak da
bude neki ajmoreći inženjer i/ili projektant onda je praktički nužno da
taj počne od niskog nivoa jer će inaće teže dobiti shvaćanje o čemu se
tu radi. Ako će osoba biti "samo" programer, možda web programer ili
isključivo za neke poslovne aplikacije onda mu ne treba način na koji to
radi na nižoj razini - u najboljem slučaju biti će mu dosadno. Ako je
pak cilj da osoba bude neki manager ili nešto slično gdje se mora baviti
organiziranjem projekta na višoj razini, postoji netrivijalna mogućnost
da će mu inzistiranje na niskoj razini pokvariti način razmišljanja jer
će ga ubiti micromanagement.
Za sva tri slučaja recimo da mogu naći primjer uživo. Slažem se da je
princip koji koriste jači fakulteti (bottom-up) dobar ali nije za
svakoga. Ako ljudi neće biti programeri od karijere (i k tome oni koji
neće cijeli život provesti zatvoreni negdje u nekoj banci) radije
odustani od assemblera.
Koliko ja vidim, klinci u 5. razredu uce Logo. U 8. razredu dio njih je
sposoban za ovakvo nesto (ja sam vrtio assembler s 9 godina - sam sam ga
naucio - tako da je moguce), do 1. srednje bi morali moci shvatiti
svi koji su upisali npr. srednju tehnicku s naglaskom na tehnicar za
racunalstvo.
No, opet, osnovna ideja je s malim brojem osnovnih komandi (mov, add,
sub, and, or, xor, not, jmp, call, jz, jnz) nauciti ljude razmisljati
kako razbiti problem na ono sto racunalo ocekuje, pa to mozda povezati
s ostalim na zabavan nacin.
Zainteresiranost je osigurana zanimljivim projektima naustrb dosadnog
strebanja svega i svacega. Ipak radis s mozda max 30 naredbi za sve
sto ces raditi. A zgodno im je natuknuti da ako to svladaju imaju osnove
za napraviti racunalo dok god mogu izvesti tri osnovne operacije (I,
ILI, NE) sa binarnim brojevima (0 i 1).
U 7. razredu rade se sinus i kosinus pa je zgodno to povezati tako da
npr. crtaju pacmana (luk+dvije linije od centra do tocke u kojoj
pocinje/zavrsava luk).
Takvi projekti su zanimljivi jer odjednom se uci vise stvari a da
ucenici/studenti to i ne primjete kao ucenje.
Nemam sada volje za ovakve stvari. Vozacu uglavnom nije posao slagati
motor, upravljanje i kocnice dok svi koji sastavljaju aute pocnu bar
slaganjem modela.
Thank you, good night.
Mislim da nisi shvatio. Meni, kao buducem profesoru informatike (po
zvanju) nije cilj doci u ucionicu i ispljunuti naslove par iznimno lose
napisanih prirucnika za informatiku nego nauciti ih necemu.
Ljudi koje zanima samo klikati po ekranu, igrati se, skidati filmice s
neta i itd. mogu se posvetiti necem drugome i upisati dodatan tecaj.
Oni me tu ne zanimaju.
Isto tako, nije mi ni poanta zavezati ljude za neki komad sw-a i
dopustiti da imaju neku tehnicku titulu a ne znaju kako racunalo
funkcionira.
>> Svi vole pricati kako se kod nas siroko rade predmeti, ali ispada da to
>> vrijedi samo za povijest, zemljopis i knjizevnost - jako bitne predmete
>> 99% ljudi, zar ne? S druge strane jako se zanemaruju bitni predmeti
>> poput prirodnih znanosti i novijih tehnologija.
>
> E sad...mislim da jako puno toga ovisi o tome cime se netko zeli baviti
> u zivotu.
> Ako se netko zeli baviti npr. web dizajnom, onda mu asemblersko
> programiranje nije potrebno,
Onda upise tecaj za web dizajn. Nema sto raditi u skoli s naglaskom na
programiranje.
> dok s druge strane ako se netko zeli
> baviti asemblerskim programiranjem onda nema smisla da uci HTML,
> JavaScript, PHP, itd.
Kaze tko? Najkvalitetniji programer je onaj koji ima iskustva s nekoliko
jezika s razlicitim paradigmama a specijalizirao se za jedan.
Previse ste poceli generalizirati, mene ne zanima zasto je javascript
bolji od assemblera, mene zanimaju prednosti i mane ucenja i shvacanja
assemblera.
> Meni osobno nije jasno zasto bi svi trebali znati sve.
Pa ne trebaju. Ali onaj tko ce biti programer mora znati kako racunalo
radi, kako procesor radi na nivou programerskog modela.
<aaargh! :) >
Krenite u raspravi s ovim pretpostavkama:
- ljudi su zainteresirani za programiranje (ako je to problem
za prihvatiti, onda zamislite da je sa svakim obavljen
razgovar i razvrstani su tako)
- dovoljno su inteligentni
- nece se programirati Windowse (kao OS), ovo je samo
uvod u programiranje da se pokazu principi
- bilo bi izvedeno na nacin slican ovome:
http://www.spasoft.co.uk/cpusim.html
samo na nivou cijelog jednostavnog racunala
Cilj je:
- nauciti razbijati problem na nacin koji racunalo direktno
razumije
- koristenje *do* 32 opkoda (jednostavnost)
- pokazati kako racunalo zbilja radi
- kroz primjere rjesavati zabavne jednostavne zadatke
- zabaviti se
Eh, da, i ako je netko od vas imao neko 8 bitno racunalo i programirao
ga u assembleru neka se sjeti sto ga je najvise privuklo.
Moram reci da primjecujem kako je dosta komentara na bazi assembler
ideje da je dosadan :) To samo znaci da je netko obavio los posao :)
Um...skoro. Znaci, ja bih kod onog registra rekao da ih ima brdo u
procesoru, da su u tom jednostavnom procesoru jos i ALU i jednostavni
dekoder, mux/demux te brojilo.
Na osnovu toga se slozi jednostavan model RISC-a i ispocetka malo
premjestas podatke iz registra u registar, iz memorije u registar i
natrag. Pokazes zbrajanje, oduzimanje. Objasnis kako se zbrajaju veci
brojevi koji ne stanu u registar, kako se mnoze i kako se dijele na
najgluplji moguci nacin (npr. uzastopnim zbrajanjem i oduzimanjem).
Pa pokazes posmak lijevo/desno i pokazes kako se njime moze mnoziti i
dijeliti s brojem dva.
Onda malo rostanja kroz memoriju manjim petljama, nesto I/O komunikacije
(ledica+tipka ili vise tipki pa se moze pokazati i maska sa AND i OR, onda
LCD i paralelna tastatura, mozda jos ponesto) cisto na programerskom
nivou i to bi bilo to sto bi se radilo u assembleru.
Nastavak - C do kraja godine. Iducu godinu C++, godinu iza toga neki
interpretirani jezik poput pythona, perla, LISPa ili neceg drugog, a
zadnju godinu uvod u ono sto bi trosili u stvarnom svijetu - po izboru
C++ (neki portabilni toolkit poput wxWidgetsa+boost), Javu ili mozda jos
necega.
> Ono sta mogu reci je
> da mi je asemblersko programiranje bilo poprilicno lagano kad sam ga
> ucila. Procitaj ovo, povecaj registar, spremi ga na neku lokaciju.
E, bas to. Problem je sto se vecina ljudi toga jednostavno preplasi pa
dobiju mentalnu blokadu. No, to je posljedica sto ih losi predavaci
isprepadaju stavom, nacinom i metodom rada.
> Ali
> mi je pokusaj objasnjavanja vezanih lista u asembleru bio apsolutno
> presmijesan.
Ne, to bi bio overkill, za to je ipak C najbolji i u njemu bi se i
radilo takvo nesto. U assembleru bi za takvo nesto jednostavno svi
trosili previse vremena i gubili bi se na nepotrebnim stvarima umjesto
da se bave problemom.
Da, da me netko ne potegne za jezik, detalji o ovome se uce na drugim
predmetima.
> Nemam sada volje za ovakve stvari. Vozacu uglavnom nije posao slagati
> motor, upravljanje i kocnice dok svi koji sastavljaju aute pocnu bar
> slaganjem modela.
Nije ni programerov posao preslagati registre
> Thank you, good night.
Laku noc
> Vecinu ljudi UOPCE ne interesira kako stvari funkcioniraju nego su skuzili
> da ako naprave to i to da ce proc predmet i da im to vise nece trebat, a
> oni koji zele naucit nesto ce to uglavnom sami napravit.
To je tako od pamtivijeka i to ce tako biti jos dugo
Pa, zapravo, vjerojatno i ne mora. Visi jezici cesto postavljaju
vlastiti model stroja tako da je programeru zapravo nebitno kako se taj
model konkretno preslikava na model stroja koji se stvarno koristi.
Sto se tice originalnog pitanja, i ja sam misljenja da bi trebalo poceti
s nekim jezikom visoke razine (C ne smatram takvim jezikom). Sve sto je
vrijedno da djeca nauce na primjeru assemblera, mogu nauciti i u visem
jeziku i to vjerojatno u univerzalnijem i apstraktnijem (dakle, boljem)
obliku.
> Moram reci da primjecujem kako je dosta komentara na bazi assembler
> ideje da je dosadan :) To samo znaci da je netko obavio los posao :)
Dosadan i naporan.
Npr, tutor. Za poludit. :)
Nisi ni ti mene shvatio. :)
Ja mislim da covjeku nije potrebno znati kako funkcionira npr. procesor
da bi znao programirati. :)
Rekao sam - karikirajuci...da se ne mora nauciti sva pozadina
programiranja da bi se zaista kvalitetno programiralo...pa zasto su
onda uopce nastajali visi programski jezici??
> Kaze tko? Najkvalitetniji programer je onaj koji ima iskustva s nekoliko
> jezika s razlicitim paradigmama a specijalizirao se za jedan.
U biti se svi ti 'visi programski jezici' svode na isto. :)
> Previse ste poceli generalizirati, mene ne zanima zasto je javascript
> bolji od assemblera, mene zanimaju prednosti i mane ucenja i shvacanja
> assemblera.
Pa kazem da su mane te da se asembler ne mora uciti da bi se shvatile
paradigme visih programskih jezika. :)
> Pa ne trebaju. Ali onaj tko ce biti programer mora znati kako racunalo
> radi, kako procesor radi na nivou programerskog modela.
Ja mislim da ne mora - isto kao sta kao npr. proizvodjac motora za
automobile ne mora znati u detalje kako funkcionira kocnica ili kako se
dobiva guma. :)
> Zanima me sto mislite o tome da programeri pocetnici zapocnu
> programirati u nekom jednostavnom assembleru (npr., MIPS, PIC,
> 8051) u simulatorima rjesavajuci jednostavne problemcice.
>
> Ideja je nauciti ljude razbiti problem na manje dijelove i
> napraviti temelj za kasnije programiranje u visim programskim
> jezicima.
>
> Takodjer, IMO, lakse je objasniti sto je pointer ljudima koji znaju
> nesto assemblera nego uroniti ih u C jer je ideja pokazivaca na
> memorijsku lokaciju mnogo prirodnija u assembleru. A i kada
> programirate u assembleru naucite brzo da trebate komentirati svoj
> kod, te kako npr. funkcije drzati kratkima.
>
> Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
>
> Unaprijed zahvaljujem na Vasem vremenu.
Slazem se s kolegom koji je spominjao coolness faktor :) Zgodna stvar
kod Pascala je sto uz relativnu jednostavnost ima i standardni graficki
unit, tako da se u njemu mogu jednostavno raditi i nekakve blesave
igrice i slicno (slicno je i s BASICom koji mi je bio prvi jezik, al to
se danas vise valjda ne uci :). Ono sto je vjerojatno prepreka ucenju
osnova u assembleru je vrlo brzi rast slozenosti programa (tj. kolicine
koda koji treba nakucati da bi se nesto dogodilo, a implementiranje
"blesavih" algoritama (tipa algoritam mnozenja uzastopnim zbrajanjemi i
slicno) jako brzo dosadi). Takodjer, ljudi ponekad iz assemblera ponesu
losu naviku prckanja po reprezentaciji objekta (objekta u C smislu) pa
dobijes one neke sheme tipa a ^= b ^= a ^= b i slicno :)
Mislim da osim toga pretpostavljas neku kolicinu poznavanja arhitekture
racunala i slicnih stvari, koje mozda nekom tko tek ulazi u to nije tako
lako objasniti (tj. dolazi do mjesanja koncepata - jedno je ucenje
arhitekture racunala, a drugo ucenje logike programiranja). Opet
prednost nekog od jednostavnih visih jezika koji u principu takvo znanje
ne trazi.
Inace, kolko sam pratio neke grupe, cini mi se da postoji neki trend da
ljudi predlazu Python kao prvi jezik. To mozda isto nije losa ideja, jer
opet imas libove za svakakve "cool stvari" :). Na MIT-u se programerski
kolegij temelji na Scheme-u, pa i to mozda nije lose za razmotriti.
--
Ivan Budiselic
#ICQ 104044323
Netko je spomenuo zgodan primjer: "da bi bio vozac ne moras biti
automehanicar" (tj. ne moras znati kako svaki dio u automobilu funkcionira).
Ja bih to prosirio: "... osim ako zelis biti vrhunski vozac." Mislim da je
M. Schumacher lijep primjer za tu tvrdnju.
Slicno vrijedi za programere: da bi bio (cak i sasvim dobar) programer, ne
trebas znati detalje rada racunala, no ako zelis izvuci maksimum tada je to
neophodno. Konkretan primjer: jedan moj prijatelj je "popravljao" program
pisan u Javi koji je alocirao hrpu objekata i strahovito opterecivao GC,
tako da se program doslovno "vukao". Rucnim optimizacijama koda uspio je
ubrzati kod oko 2000 puta. Osoba koja je izvorno pisala kod jednostavno nije
vodila racuna/znala o problemu alokacije/dealokacije objekata.
Moje osobno misljenje je da u danasnjem opcem trendu prema povrsnosti,
ucenje asemblera kao prvog koraka nema smisla. Onaj tko ce se ozbiljnije
baviti programiranjem ionako ce se prije ili kasnije sam suociti s
asemblerom i eventualno ga nauciti.
Pozdrav,
Julijan
Man's got a point.
Nisam shvatio govoris li o njemu ili o meni. Pretpostaviti cu da govoris
o njemu.
Uglavnom, mene zanima stvar sa stajalista sto ako ljudi pocinju s
assemblerom (hoce li biti u prednosti ili ne, hoce li kasnije pisati kod
tako da ce ipak razmisljati kako racunalo radi a ne zauzimati resurse
koji nisu potrebni itd), a ne treba li poceti s assemblerom :)
nije mi se bas dalo cijeli thread citati pa mozda puknem i malo
redundancije, ali...
Trebao bi prije svega vidjeti sto se uci na drugim kolegijima.
Druga stvar, mislim da je pocetnicima u programiranju najvaznije
shvatiti
logiku programskog koda pa tek onda neke strukture podataka koje bi u
assembleru po mom misljenju bile dominantnije. Dakle, osnovne petlje,
funkcije, procedure, uvjeti. Da polaznici razumiju pseudokod. Kako ce
netko
tko se nije prije susreo s programiranjem skuziti sto je for petlja u
asm-u? Moje misljenje je da se takve stvari moraju uciti od
najjednostavnijeg (dakle 'generalnijeg') dijela prema slozenijem, dakle
kompliciranijem.
Npr. objasnis while petlju u pseudokodu pa je jednostavno opises u c-u
pa
se tek onda zajebavas sa zastavicama u asm-u. While u pseudokodu
shvatis
bez predznanja (osim sto trebas znati hrvatski ili engleski... :)),
isto
tako i u c-u. sintaksa je jednostavna i predznanje je minimalno. u
asm-u s
druge strane moraz znati strukturu SR-a pa koje zastavice znace sto, pa
koje naredbe rade sto, kad se zastavice postavnjaju, a kad ne... IMHO,
dosta kompliciranije. I samim tim manje vjerojatno da ce svi skuziti.
Sjeti
se nacina na koji mozak radi. Ako citas recenicu i u njoj ne skuzis
jednu
rijec automatski se iskljuci pa drugi dio recenice uopce ne percipiras.
Tako je i sa ovim. Ako netko slucajno iz prve ne skuzi sto je zastavica
nema sanse da skuzi ni sto je petlja ni sto je grananje u asm-u...
Dakle, po mom misljenju neki (jednostavni) neobjektni jezik za pocetak.
I opet se vracam na pocetak, najvaznije je uskladiti se s drugim
kolegijima.
Ono sto si spomenuo za ucenje stvari na primjeni s rupama. To je vise
problem neuskladjenosti vise kolegija a ne samo problem loseg programa
jednog kolegija. S druge strane, kontam da i nije bas neki trud ulozen
u sastavljanje programa primjene racunala.
On to niti ne radi. Osim ako se ne bavi VHDL-om :)
E, ubij me sad, ja se sjecam da smo radili sin, cos, tg, ctg na
sukladnosti trokuta u 7. razredu (znas ono sinus kuta je omjer
suprotne str. i hipotenuze; to sam siguran da sam ucio puno prije
jedinicne kruznice).
Doduse, imas pravo. Pogledao po HNOS-ovom standardu i trigonometrijske
funkcije se ne spominju ni u 7. ni u 8. razredu.
Kako rekoh, netko nije obavio dobar posao :) Sad zamisli da si trebao
napraviti npr. pong, a na raspolaganju su ti
- procesor
- 4 tipke
- polje memorijskih lokacija koje predstavljaju video izlaz
Trebas samo provjeravati koja je tipka pritisnuta i zbrojis ili oduzmes
neku vrijednost registrima polozaja (imamo ih puno, ipak radimo na
RISC-u, ne? :) ), pozoves lokaciju koja ti iscrta plocicu na novim
koordinatama, pomaknes lopticu i to je to.
Sav hw ti je vrlo jednostavan, a kao rezultat imas igru koja im je
(barem isprva) zanimljiva. Nema ubacivanja u graficke modove, brige oko
linearnosti graficke memorije, cak ni kompiliranja posto se sve moze
izvesti direktno u sucelju/VM-u itd.
Uglavnom je najveci problem kod programera pocetnika to sto kod
odredenih jezika ne postoji nesto sto Ameri zovu "instant gratification"
(ima li tko dobar prijevod za taj izraz?). Assembler na vrlo
jednostavnoj virtualnoj masini to moze pruziti vrlo brzo.
ja sam početnik i htio bi naučit bar osnove assembera...
Sorry, ali izgleda da je tako kad studiras na fer-u :)). Recimo na PMF-u u
Splitu je sasvim druga priča. Ja sam na faksu naucija programirat u BASICU i
PASCALU, (kroz uvod u programiranje, strukture i algoritne podataka i
Objektno orj.). To me kasnije (tjekom studija) nije sprijecilo da radim u
delphiu, naucim C# i slicno. Za razliku od toga, na FESBu je sasvim druga
priča. Ali mislim da su se ovih par godina malo sredili otkad imaju smijer
računarstvo.
Uče, prijatelju, fizičari na PMF-u
.
OK, svatko ima pravo na misljenje. Daleko od toga da je asembler nepotreban,
ali je pitanje za koga.
Ja mislim da je asembler za pocetak programiranja preniska razina. Znam
nekoliko ljudi koji su slicno razmisljali, poceli sa asemblerom i zapetljali
se na toj razini. Dosle su nove tehnologije, dosa je C#, .net, a oni su jos
prckali po asembleru, pa su krenili na C, ali su izgubili volju, poceli se
bavit drugim stvarima.
Mislim da bi za ovo gore sta govoris pametnije bilo ucenike (studente ili
oni koje zelis obucavati) upoznati sa operacijskim sustavima. Meni je na
faksu taj kojegij dosta razjasnija stvari sta se tice koristenja resursa, te
kako treba programirati objektno orjentirano.
Eto, nadam se da pomazem :)
A zašto Davorin Vlahović priča o sebi u trećem licu :p :D
Hehe, ma činilo mi se, imaš onaj neki akademski pristup i tako, i
uvjerljive argumente u asertivnoj komunikaciji, pa pomislih. Ništa,
sretno onda s ovim :)
Ucimo na trecoj ali ne zelim ti reci kako to izgleda. Tu se ne uci
fortran nego numericke metode, npr. racunanje integrala, derivacija
(ok, lagano, ali to su samo dva primjera od brda stvari koje se trebaju
napraviti) itd.
Ne dobije se literatura, nema predavanja, nicega. Samo ti dodju i kazu
"rijesi ovaj zadatak u fortranu". Ne treba zaboraviti spomenuti kako ni
zadatak ne shvacam vec moram navlaciti nekog matematicara da mi objasni
sto se uopce trazi od mene.
NAJBOLJI NACIN DA POCNES PROGRAMIRAT
JE DA POCNES UCITI ASEMBLER
jednostavno toliko glupa da to i ne treba posebno dokazivati?
to je kao da nekome tko ne zna sta je sex pocnes pricati o analnom sexu :)))))
Gle, ona analogija sa autima jos moze proci, ali ova sa sexom nema
nikakvog smisla na ovim grupama.
--
Milan Mimica
http://sparklet.sf.net
>Zanima me sto mislite o tome da programeri pocetnici zapocnu
>programirati u nekom jednostavnom assembleru (npr., MIPS, PIC,
>8051) u simulatorima rjesavajuci jednostavne problemcice.
>
>Ideja je nauciti ljude razbiti problem na manje dijelove i
>napraviti temelj za kasnije programiranje u visim programskim
>jezicima.
>
>Takodjer, IMO, lakse je objasniti sto je pointer ljudima koji znaju
>nesto assemblera nego uroniti ih u C jer je ideja pokazivaca na
>memorijsku lokaciju mnogo prirodnija u assembleru. A i kada
>programirate u assembleru naucite brzo da trebate komentirati svoj
>kod, te kako npr. funkcije drzati kratkima.
>
>Dobro se objasni pojam stacka i ostalih fundamentalnih pojmova.
>
>Unaprijed zahvaljujem na Vasem vremenu.
Slazem se s tobom ako zelis nauciti covjeka da bude dobar programer
(znaci ne tipa ja znam c++ i to je to). Nego covjek koji se lako
prilagodava novim stvarima.
To uvelike ovisi o programeru te vrsti koda koji pise.
--
Denis Kasak
Bilo mi je cudno da netko tako navede ime i prezime na newsima
pa sam nastavio :)
> Hehe, ma ?inilo mi se, ima? onaj neki akademski pristup i tako, i
> uvjerljive argumente u asertivnoj komunikaciji, pa pomislih.
Ah. Hvala. Valjda :D
> Ni?ta, sretno onda s ovim :)
Javim kako je proslo. T-8 dana :) Valjda me nece gledati zbunjeno kao
zadnji puta kada sam objasnjavao principe operacijskih sustava :)
E, pa u dokazu i je fora :)
> to je kao da nekome tko ne zna sta je sex pocnes pricati o analnom sexu :)))))
Mislim da ti analogija bas ne stima. A ako je bas zelis "progurati",
bolje je to napraviti "low-level", tj. "get down'n'dirty" nego okolisati
kao u Cobolu ili citati po MSDN-u (valjda Playboy/Hustler/ne znam ih
vise) kako se to radi sa objektima, tj. traziti koji objekt ti treba
i koje im je javno sucelje :)
To je bas moja poanta. IMO, lakse im je razumjeti to u assembleru nego u
nekom visem programskom jeziku bas zbog jednostavnih pravila i malog
broja stvari koje ih mogu zbuniti (npr. cuo sam primjedbu kako ne znaju
gdje ide tocka-zarez, kako stavljati viticaste zagrade itd.)
> Kako ce
> netko
> tko se nije prije susreo s programiranjem skuziti sto je for petlja u
> asm-u?
U ASM-u nema for petlje? :)
Evo da ti dam primjer za x86 asm:
mov cx,10
start:
<nesto>
dec cx
repnz start
<dalje>
U pseudokodu to izgleda ovako:
U cx stavi 10
radi
<nesto>
smanji cx za jedan
dok cx nije 0
<dalje>
Shvacas sto zelim reci?
S druge strane, nece im se desiti da kada ih pitas koje su petlje u C-u
navedu if :) Vjeruj mi, ovoga sam se naslusao :)
> Moje misljenje je da se takve stvari moraju uciti od
> najjednostavnijeg (dakle 'generalnijeg') dijela prema slozenijem, dakle
> kompliciranijem.
> Npr. objasnis while petlju u pseudokodu pa je jednostavno opises u c-u
> pa
> se tek onda zajebavas sa zastavicama u asm-u. While u pseudokodu
> shvatis
> bez predznanja (osim sto trebas znati hrvatski ili engleski... :)),
> isto
> tako i u c-u. sintaksa je jednostavna i predznanje je minimalno. u
> asm-u s
> druge strane moraz znati strukturu SR-a pa koje zastavice znace sto, pa
Hm. While u assembleru:
start:
cmp ax,bx
jne kraj
<nesto>
jmp start
kraj:
<dalje>
Ovo je zapravo idealan primjer da se pokaze kako racunalo radi i kako
rastaviti problem na manje dijelove.
U pseudokodu obicno se kaze "dok ovo_i_ovo radi ono". Sto je, IMHO,
greska jer "dok" nije nesto sto racunalo razumije. To je samo
apstrakcija koja zapravo zvuci ovako:
radi
usporedi a i b (tj. provjeri uvjet)
ako nisu jednaki idi na kraj (tj. ne izvrsi ovo u petlji)
<nesto>
idi opet
Bas tu lezi onaj problem kojeg zelim iskorijeniti.
> koje naredbe rade sto, kad se zastavice postavnjaju, a kad ne... IMHO,
> dosta kompliciranije.
Je, kada bi se to radilo tako. Zato, zahvaljujuci dobrim deckima iz
SUN-a, mozes lako u Javi napisati svoj virtualni procesor u virtualnom
racunalu tako da se rijesis (na tom nivou) nepotrebnih stvari.
> I samim tim manje vjerojatno da ce svi skuziti.
> Sjeti se nacina na koji mozak radi. Ako citas recenicu i u njoj ne skuzis
> jednu rijec automatski se iskljuci pa drugi dio recenice uopce ne percipiras.
Ali racunala nisu mozak. Ne programira racunalo tebe nego ti njega. Bez
da znas sto mu treba reci da napravi nesto ono to nece ni napraviti.
> Tako je i sa ovim. Ako netko slucajno iz prve ne skuzi sto je zastavica
Kako ne bi shvatio? Pa naravno da bi se to obradilo da svi shvate. Nije
kao da bih isao okolo razbacujuci se naredbama i odjednom reci "znate,
ovo postavlja zastavicu, a za d.z. saznajte sto je zastavica".
> nema sanse da skuzi ni sto je petlja ni sto je grananje u asm-u...
A, bas suprotno. Oni bi do tada znali sto je RAM i sto je registar.
Znali bi i da svaka lokacija ima svoj broj (adresu) na koju se odaziva i
sto je to registar. I samo kazes "postoji jedan registar koji sadrzi
adresu" i "ako sa jmp upisete novu lokaciju u taj registar ide se dalje
od te adrese" (naravno, ovo je jako pojednostavljeno, ne planiram sada
ovdje drzati predavanje).
> Dakle, po mom misljenju neki (jednostavni) neobjektni jezik za pocetak.
Moj seminar se ne bavi odabirom jezika za pocetnike vec assemblerom kod
pocetnika :)
> Ono sto si spomenuo za ucenje stvari na primjeni s rupama. To je vise
> problem neuskladjenosti vise kolegija a ne samo problem loseg programa
> jednog kolegija.
Razmisli sam, jednog trena ucis o tome kako je bistabil elementarna
jedinica "pamcenja" u racunalu, da imas registar od vise bistabila i
onda vec vuces misa po windowsima. Nema tu interdisciplinarnosti, to
specificno je greska u programu tog predmeta.
> S druge strane, kontam da i nije bas neki trud ulozen
> u sastavljanje programa primjene racunala.
Tu i nemas sto raditi, ovo je vise za one koji pocinju programirati.
Pa ne ocekujem ja da bi ljudi isli programirati bilo sto a da ne znaju
da pedala ne ide na pod :)
Nisi shvatio. Npr. na mojem faksu se uci C, C++, Fortran, Mathematica,
a iduci semestar se radi i python.
No nitko ne pokaze kako _programirati_. Uci se sintaksa i API. Nista
vise. Na SPA/ASP se pokazuju algoritmi ali opet te ne uce kako doci do
njih.
Ako ti se ne da cekati dok ja zavrsim s faksom ( :) ) skini si
DOSBox, neki assembler poput MASM-a ili NASM-a i ovu
knjigu:
http://www.planetpdf.com/codecuts/pdfs/aoa.pdf
Mislim da je to to. Doduse, x86 real mode assembler je ruzan, a
protected mod moras sam slagati (sto je isto ruzno).
Brzi elementarni uvod na 6502 (8 bitni procesor ali pokaze ti osnove)
mozes pronaci ovdje:
http://www.obelisk.demon.co.uk/6502/
Inace, to je procesor iz legendarnog commodorea 64. Ima 56 opkodova i
iznimno jednostavnu arhitekturu (akumulator, dva indeksna registra,
zastavice i to je to). Tutorial je vrlo dobar da shvatis opcu ideju.
Mozes si skinuti i emulator commodorea i vjezbati.
Osobno, preporucio bih ti da pronades neki MIPS emulator i tutorial (to
rade sva veca sveucilista koja zele studente nauciti kvalitetno
programirati u assembleru) jer je MIPS zbilja fenomenalno zamisljen.
Ako zelis hands-on pristup (a vjerujem da zelis) ipak ces morati poceti
s suvisno iskompliciranim x86.
> /snip
ja mislim da, kad nema drugih tema, Davorin sam otvara nove teme da bi
mogao spemati :)
NHF
--
Always outnumbered, never outgunned
> Recimo na PMF-u u
>Splitu je sasvim druga pri? Ja sam na faksu naucija programirat u BASICU i
>PASCALU, (kroz uvod u programiranje, strukture i algoritne podataka i
>Objektno orj.). To me kasnije (tjekom studija) nije sprijecilo da radim u
>delphiu, naucim C# i slicno.
Pa i na FER-u ucis C (Programiranje, ASP), C++(OOP), C# (Programske
paradigme), Prolog (Inteligentni sustavi).
Na mnogim drugim predmetima mozes programirati u cemu god hoces.
Recimo na Teoriji grafova, OS2, APR, Automati1, Automat2 mozes sam
izabrati koji god hoces jezik.
To sto vecina programira u C#/C++/JAVA nije zato sto mora nego jer je
to njihov izbor.
to za if je stvarno elementarno. kontam da ti isti ne bi znali ni sto
je bne ako ih pitas. zapravo, mislim da ne bi znali ni sto je b, a sto
je ne. ni sto znaci branch.
uz uvjet da im je jednako 'dobro' objasnjen if i bne
shvacam sto hoces reci
ali to sto si ti napravio nije strogo for petlja
isto to u c-u moze raditi i for i while petlja
a mozes isto napraviti i sa goto naredbom, sto mi se cini najslicnije
ovome sto si ti napisao znas i sam da goto naredba nije
najpreporucljiviji nacin programiranja u visim jezicima? bas kao i
break, tj. nasilan izlazak iz petlje
ne mozes pocetnike odmah tlaciti sa sinicama a da ne znaju programerski
nacin razmisljanja, tj. da ne znaju sve sloziti u glavi.
da ides ljude na taj nacin uciti puno vise bi ih razmisljalo na 'goto'
i 'break' nacin
<cut>
>
> Ovo je zapravo idealan primjer da se pokaze kako racunalo radi i kako
> rastaviti problem na manje dijelove.
>
istina, samo sto ti govoris o kolegiju uvoda u programiranje, a ne o
kolegiju koji ce studentima pokazati kako racunalo radi na nizoj
razini. za to postoje kolegiji koji se bave arhitekturom racunala.
u stvari bi studentima trebao objasniti principe programiranja, bez
obzira kako se to dogadja u racunalu. dakle, puno vaznije bi moralo
biti razumjevanje samog algoritma, a ne arhitekture racunala. a to i je
bit visih programskih jezika. da razumljivije prikazu algoritam.
> U pseudokodu obicno se kaze "dok ovo_i_ovo radi ono". Sto je, IMHO,
> greska jer "dok" nije nesto sto racunalo razumije. To je samo
> apstrakcija koja zapravo zvuci ovako:
<cut>
> Bas tu lezi onaj problem kojeg zelim iskorijeniti.
>
pseudokod nije ni namjenjen racunalu niti ga racunalo mora moci
razumjeti. pseudokod je namjenjen covjeku i samo covjeku. u tom smislu
svaki pseudokog kojeg covjek razumije je regularan.
> > koje naredbe rade sto, kad se zastavice postavnjaju, a kad ne... IMHO,
> > dosta kompliciranije.
>
> Je, kada bi se to radilo tako. Zato, zahvaljujuci dobrim deckima iz
> SUN-a, mozes lako u Javi napisati svoj virtualni procesor u virtualnom
> racunalu tako da se rijesis (na tom nivou) nepotrebnih stvari.
>
> > I samim tim manje vjerojatno da ce svi skuziti.
> > Sjeti se nacina na koji mozak radi. Ako citas recenicu i u njoj ne skuzis
> > jednu rijec automatski se iskljuci pa drugi dio recenice uopce ne percipiras.
>
> Ali racunala nisu mozak. Ne programira racunalo tebe nego ti njega. Bez
> da znas sto mu treba reci da napravi nesto ono to nece ni napraviti.
>
samo sto ti ucis ljude a ne racunala. a ja govorim kako ljudi
funkcioniraju.
> Kako ne bi shvatio? Pa naravno da bi se to obradilo da svi shvate. Nije
> kao da bih isao okolo razbacujuci se naredbama i odjednom reci "znate,
> ovo postavlja zastavicu, a za d.z. saznajte sto je zastavica".
govorim o tome sto je bitno. sto vise nepotrebnih sitnica ubacis u neki
kolegij to ce ga manje ljudi nauciti. i naucit ce ga gore. iz razloga
koji sam naveo u prvom postu a ti si mislio da pricam o racunalima.
zasto radit (uciti) nepotrebne stvari?
> A, bas suprotno. Oni bi do tada znali sto je RAM i sto je registar.
> Znali bi i da svaka lokacija ima svoj broj (adresu) na koju se odaziva i
> sto je to registar. I samo kazes "postoji jedan registar koji sadrzi
> adresu" i "ako sa jmp upisete novu lokaciju u taj registar ide se dalje
> od te adrese" (naravno, ovo je jako pojednostavljeno, ne planiram sada
> ovdje drzati predavanje).
to nije programiranje. to je arhitektura racunala koja s programiranjem
nije bas usko povezana. programer to ne mora znati. samo mora imati
kompajler koji radi na odredjenoj arhitekturi. malo presiroko gradis
taj svoj kolegij.
> > Dakle, po mom misljenju neki (jednostavni) neobjektni jezik za pocetak.
>
> Moj seminar se ne bavi odabirom jezika za pocetnike vec assemblerom kod
> pocetnika :)
evo, prevest cu ti: asm bi kod pocetnika bio kontraproduktivan
eto, odgovorio sam samo na najsmislenije stvari :)
odo piti!
:)
Zanimalo me sto drugi misle i njihove predkoncepcije posto mnogi ne
znaju puno o assembleru ili ga nisu radili na pravi nacin.
> On 2006-12-31, lazy olive <zla...@KURACPALACgmail.com> wrote:
>> On Sat, 30 Dec 2006 18:11:55 +0100, Davorin Vlahovic wrote:
>>
>>> /snip
>>
>> ja mislim da, kad nema drugih tema, Davorin sam otvara nove teme da bi
>> mogao spemati :)
>
> :)
jao, još kad sam vidio da je cross :D ti tastaturu mijenjaš na mjesečnoj
bazi?
evil zlayo, over & out!
vidimo se na trgu, sve najbolje ljudi!
On 2006-12-31, Davorin Vlahovic <nr...@ylf.krs.ref.rh> wrote:
>
> U ASM-u nema for petlje? :)
>
> Evo da ti dam primjer za x86 asm:
>
> mov cx,10
> start:
> <nesto>
> dec cx
> repnz start
> <dalje>
>
Nadam se da te to, stogod ces im predavati, ide bolje od x86 assemblera.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFFl/voFtofFpCIfhMRA+WCAKCHgGvMPihXvR22NqwO2mR3uPAo1gCgh+Gn
coPG6TAJHtcEEWFf4ogjHl8=
=QzKY
-----END PGP SIGNATURE-----
Zapravo, evo za dva mjeseca tastatura ce mi biti stara deset godina :)
Vidis, dobra ideja, poslati cu sliku negdje :) (BTC 8110M)
Eh, da, ako netko ima takvu ili zna gdje se moze kupiti javite mi :)
> vidimo se na trgu, sve najbolje ljudi!
I ja idem jos malo, ali ne na trg :)
Ovo je bio samo primjer koji je trebao biti vrlo deskriptivan.
> I ja idem jos malo, ali ne na trg :)
evil zlayo not over & in!
np: Leut Magnetik - Vecchia Cola
in my glass: Vecchia Cola
Brain function:off
Liver function:increased
pazite svi da vas netko ne upuca i srećno!
pozdrav, sad stvarno idem!!!
Ajd, sretna Nova svima. Cujemo se iduce godine :)
On 2006-12-31, Davorin Vlahovic <nr...@ylf.krs.ref.rh> wrote:
>
> Ovo je bio samo primjer koji je trebao biti vrlo deskriptivan.
>
ASM ne dopusa "deskriptivnost" - za to imas "vise" programske jezike i/ili
pseudokod ili dijagrame toka. Ako nisi u stanju biti pedantan prilikom
pisanja ASM-a, bolje se pusti toga, inace ces svojim polaznicima napravit
medjvedju uslugu.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFFmAnUFtofFpCIfhMRA0CSAJoC+q0xEaxg/BwiskCAuw/h5a7CSQCggF77
35OSOw81+ZnJwLRv++Vqbtg=
=fu/S
-----END PGP SIGNATURE-----
Deskriptivan u rastavljanju zadataka na najmanje dijelove koje racunalo
razumije.
On 2007-01-01, Davorin Vlahovic <nr...@ylf.krs.ref.rh> wrote:
>
> Deskriptivan u rastavljanju zadataka na najmanje dijelove koje racunalo
> razumije.
>
Najmanji dijelovi koje racunalo razumije su upravo pojedinacne instrukcije.
Ti si pisao primjer za x86 arhitekturu i pri tome upotrijebio instrukcije koje
NE POSTOJE. Koliko je deskriptivno nesto sto nema apsolutno NIKAKVO znacenje
(osim mozda u tvojoj masti)?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFFmUENFtofFpCIfhMRA/tHAJwKWhBNTTWgpHcXFvgclZTZIgsOLwCeJGFv
v3kHUdB5rEwbf1VFU1gK4QI=
=cC6h
-----END PGP SIGNATURE-----
nemoj tako. Harry Potter se zasniva bas na tom principu :)))))
Opet si se zasrao, he he he
To je kod tebe postala konstanta.
Jebemu miąa opet su te naguzili :))
?
> Jebemu miša opet su te naguzili :))
Neciji wishful thinking izbija iz podsvijesti. Ili si nedavno dobio
nesto takvo ili zalis sto nisi.
Aha, repnz start. Da, takve stvari ti se dese ako radis s previse
assemblera :)
Uglavnom, naravno da bih provjerio sve primjere i izbacio bugove prije
predavanja. Inace bi to bilo neodgovorno, ne?
Da, jako dobra ideja. Na taj nacin se ljudi nauce na pravi nacin
razmisljati. Nakon takvog temeljnog znanja niti jedan visi programski jezik
takvim ljudima nece stvarati problem. Sa druge strane imas programere koji
su poceli od VB-a recimo i nakon dugo godina zele prijeci na neki alat koji
je na nizem nivou. Takvim ljudima u 90% situacija ne mozes naci nacin za
objasniti nesto, jer imaju "rupu" u temeljnom znanju. Postoje takodjer i
ljudi koji zastupaju teoriju kako asembler nije dobar kao nesto od cega bi
se pocelo. Ta teorija je kriva po meni.
zgodno... nije ti palo na pamet da bi nekomu uopce poceo objasnjavati
assembler, moras mu predociti nacin na koji funkcionira procesor... da
bi mu objasnio kako fercera sam procesor, moras mu ispricati ponesto i o
sklopovima... da bi mu objasnio stogod o sklopovima... kuzis, sta ide
dalje. sad recimo da hrpu toga izbacis, uspijes obraditi tu temu u nekom
razumnom vremenu i actually ljudima pocnes pricati o instrukcijama,
njihovim oblicima, primjenama, bla, bla... i kad treba nesto konkretno
napraviti, skuzis da ljudi zapravo ne znaju (pazi ovo) programirati jer
uopce nemaju blage veze sta programiranje nekog stroja predstavlja. and
back to square one... nego, jedno pitanje. sto je osnovna stvar kad
nekomu hoces nesto pokazati/prikazati/nauciti ga/bla/bla?
--
I doubt, therefore I might be.
dakle:
- ili si ti dobar programer koji je prvo naucio asembler pa tek onda neki posteni programski jezik
- ili ti nisi dobar programer
nagradno pitanje za 100 kn glasi:
U cemu si napisao svoj prvi program?
Da li je prva linija koda koju si napisao bila MOV AX, 10?
Neke osnove funkcioniranja procesora bi morao znati za bilo kakav oblik
programiranja racunala. No, sa naglaskom na "bi morao". Procitao sam zaista
gomilu knjiga o raznoraznim programskim jezicima, pa i asembleru. I ni jedna
nije bas posvetila paznju procesoru, sklopovima i inima stvarima vezanim uz
iste. Onoliko, koliko trebas znati o samom procesoru autor obicno objasni on
the fly ako je potrebno. A to su obicno registri, adresiranje, itd.. Osnovne
stvari. Sad, ako radis neke usko specijalizirane stvari tipa izrada nekakve
ploce i pisanja softvera u asembleru za istu, onda ce ti znanje o sklopovima
i ostale stvari biti neophodne. No, to su ekstremi. Cini mi se da to nije
tema ovdje.
Instrukcije i sve ostale stvari se mogu bez problema objasniti ljudima, bez
dubokog zadiranja u sklopove, elektroniku i drugo. Samo je problem sto
predavaci obicno prezentiraju to ljudima kao rocket science.
Isti registri, instrukcije i sve ostalo se koriste za izvrsavanje svakog
programa nevezano uz programski jezik, pa nitko ne forsira da se zna kako
fercera procesor za BASIC ili C recimo.
Onaj tko ne zna sto programiranje je, taj nece ni pokusavati programirati.
Kako u asm-u, tako ni u bilo cemu drugome.
Da, to je moja teza.
> Sa druge strane imas programere koji
> su poceli od VB-a recimo i nakon dugo godina zele prijeci na neki alat koji
> je na nizem nivou. Takvim ljudima u 90% situacija ne mozes naci nacin za
> objasniti nesto, jer imaju "rupu" u temeljnom znanju.
Dobro, to ovisi od slucaja do slucaja i koliko mu je to potrebno. No,
opet se vracas na objasnjavanje onoga s cime bi poceo u assembleru.
> Postoje takodjer i
> ljudi koji zastupaju teoriju kako asembler nije dobar kao nesto od cega bi
> se pocelo. Ta teorija je kriva po meni.
Eto, zato sam i potegao temu da cujem sva misljenja.
Impliciras li da asm nije posteni programski jezik?
> nagradno pitanje za 100 kn glasi:
> U cemu si napisao svoj prvi program?
> Da li je prva linija koda koju si napisao bila MOV AX, 10?
U mojem slucaju ucio sam sto mi je bilo najdostupnije. To je vjerojatno
slucaj sa svima. Gotovo svima je to bio neki oblik BASIC-a jer je bio
ucitan cim se racunalo upalilo (8 bitnici) ili QBasic u DOS-u.
Ako je netko ucio prvo Pascal to je bilo zato sto su ili morali raditi u
njemu u skoli ili im je bio blizu netko tko je radio u njemu u skoli :)
Za C vrijedi isto to, samo unatrag zadnjih 5-6 godina.
Naravno.
> da
> bi mu objasnio kako fercera sam procesor, moras mu ispricati ponesto i o
> sklopovima...
Tako je. I, ILI i NE i nisu tako komplicirani za objasniti. Objasne se
registri, memorija i za pocetno programiranje u asm-u to je dovoljno.
> da bi mu objasnio stogod o sklopovima...
Upise predmet analognu i digitalnu elektroniku. Za programiranje u
assembleru mu nije potrebno znati odrediti staticku i dinamicku tocku
tranzistora, koja je razlika izmedu (J/MOS)FETa i bipolarnog tranzistora
itd.
Mada, i ovo moram reci, sto tranzistor radi uci se u 8. razredu osnovne
skole (i u fizici i na tehnickom), a i ponovi se ugrubo na jednom od prvih
satova elektronike. Tj. kaze se ugrubo da se koristi kao sklopka.
> kuzis, sta ide
> dalje. sad recimo da hrpu toga izbacis, uspijes obraditi tu temu u nekom
> razumnom vremenu i actually ljudima pocnes pricati o instrukcijama,
> njihovim oblicima, primjenama, bla, bla... i kad treba nesto konkretno
> napraviti, skuzis da ljudi zapravo ne znaju (pazi ovo) programirati jer
> uopce nemaju blage veze sta programiranje nekog stroja predstavlja.
Naravno da ce znati jer si se potrudio nabaviti/napisati okolinu koja ce
im to zorno pokazati i potrudis se dobro objasniti sve sto im je
potrebno da shvate osnovne principe (sto zapravo racunalo razumije, sto
je memorija, sto je stack i kako vrlo jednostavno racunalo radi itd)
koji su im bitni da uspjesno programiraju u nekom visem programskom
jeziku.
> and
> back to square one... nego, jedno pitanje. sto je osnovna stvar kad
> nekomu hoces nesto pokazati/prikazati/nauciti ga/bla/bla?
Volja.
hmmm... kuzis da ovim razmisljanjem upravo stvaras rupe protiv kojih se
tako zustro boris?
> Onaj tko ne zna sto programiranje je, taj nece ni pokusavati programirati.
> Kako u asm-u, tako ni u bilo cemu drugome.
>
ajde... za ovo te necu napadati samo cu reci da ponovno procitas sto si
napisao ;)
razmisljas u okvirima fakulteta... to je ok ali onda vise ne
raspravljamo o pocetnicima jer ljudi koji upisu fer/pmf (ili negdje gdje
se uce srodne stvari) su se vecinom prije susretali sa raznim oblicima
programiranja i/ili nacina razmisljanja pa im se i pristupa iz druge
perspektive.
> Mada, i ovo moram reci, sto tranzistor radi uci se u 8. razredu osnovne
> skole (i u fizici i na tehnickom), a i ponovi se ugrubo na jednom od prvih
> satova elektronike. Tj. kaze se ugrubo da se koristi kao sklopka.
>
ono sto se kaze i ono sto klinci pohvataju/nauce su dvije potpuno
razlicite stvari.
> Naravno da ce znati jer si se potrudio nabaviti/napisati okolinu koja ce
> im to zorno pokazati i potrudis se dobro objasniti sve sto im je
> potrebno da shvate osnovne principe (sto zapravo racunalo razumije, sto
> je memorija, sto je stack i kako vrlo jednostavno racunalo radi itd)
> koji su im bitni da uspjesno programiraju u nekom visem programskom
> jeziku.
>
i stvaras sebi nepotreban i uzaludan posao jer ih opet ne ucis
razmisljati nego nekoj fiktivnoj tehnologiji.
>> and
>> back to square one... nego, jedno pitanje. sto je osnovna stvar kad
>> nekomu hoces nesto pokazati/prikazati/nauciti ga/bla/bla?
>
> Volja.
>
jock. jednom sam imao volje objasniti volu kako zbrajati brojeve...
nisam uspio ;)
skuzi koja mu je linija interesa i na koji nacin razmislja te mu probaj
to sto mu hoces objasniti pribliziti preko neke, njemu dobro znane,
analogije, tj. pretoci svoj nacin razmisljanja u njegov da bi taj netko
uopce shvatio o cemu pricas.
p.s. sad vidim da nisi dovoljno dobro definirao o kojem se profilu ljudi
radi jer je to prilicno bitna stvar kod ovakvih planiranja ;)