Olen yrittänyt opetella ohjelmointia pythonilla mutta en ymmärrä ohjelmoinnista vieläkään mitään paitsi { >>> print "hello." } ja pari muuta komentoa vaikka olen lukenut melkein kaikki opastukset sekä katsonut videoita muutaman tunnin edestä. Tiedän että ohjelmointi vaatii aikaa ja kärsivällisyyttä mutta luulisi että nyt parin viikon jälkeen olisi oppinut jotain. En edes tiedä mitä eroa on musta pohjaisella python työkalulla jos sitä edes sanotaan siksi ja valkoiselle pohjalle tehdylle "python shell" työkalulla. Kertokaa te viisaat miten kirjoitettu ohjelma muuntuu avattavaksi/käytettäväksi ohjelmaksi. Mistä löytäisin todella yksinkertaisen oppaan jossa olisi todellakin ymmärrettävää teksiä, ENKÄ OLE sanomassa että ohjelmointiputkan oppaat olisivat "kokeneille" mutta hieman ymmärrettävämpiä oppaita olisi helpompi lukea, esimerkitsi jossain oppaissa takerrun yksittäisiin sanoihin kuten "funktio, moduuli, tulostus" jne.
Anteeksi jos tein kirjoitus virheitä ja vastaathan pikaisesti jos osaisit auttaa.
Veikkaisin, ettet kovin helpolla löydä paljoa selkeämpää opasta python-ohjelmointiin, kuin mitä putkassa on tarjolla. Toki siellä on noita "sivistyssanoja", kuten funktio, tulostus yms. mutta sen verran tarvitaan kärsivällisyyttä, että yrittää sisäistää ne, (älä kuitenkaan liikaa takerru yksittäisiin sanoihin).
Jos jotkut sanat on vaikeita, niin ei muuta kuin googlettamaan. Myöskin esim. funktio-käsitettä voisi selventää tuo python oppaan "omat funktiot" -osuus.
Edit:
Tarkoittanet tuolla "mustapohjaisella työkalulla" komentoriviä? Komentorivissä voi tosiaan suorittaa pyhtonohjelmia, jos python on asennettu tietokoneelle. Älä kuitenkaan siitä välitä vielä, vaan käytä sitä "python shell" -työkalua. Olethan hoksannut, että pythonia voi koodata rivi kerrallaan tuohon shellille, tai sitten kokonaisina erillisinä tiedostoina? Eli kannattaa aina luoda uusi tiedosto, johon kirjoittaa koodinsa, ja suorittaa se sitten tuolla python shell työkalulla. Tähän on putkassa opas: https://www.ohjelmointiputka.net/oppaat/opas.
Opetteletko ohjelmointia, koska haluat osata koodata, vai siksi että sinua kiinnostaa ohjelmointi?
RE:vesikuusi -En edes tiedä mitä koodaaminen on? Mutta ohjelmointi kyllä kiinnostaa.
Lyö Googleen ne termit, joita et entuudestaan tunne. Eipä asia sen vaikeampaa ole. Suurin osa noista mainituista vieraista käsitteistä selviää kyllä jo Putkan python-oppaan ekalta sivulta.
Voisitko hieman tarkentaa asioita, joita et ole oppaasta ymmärtänyt?
Itselläkin menee osapuilleen noin, mutta kyllä minä olen jo pikkuista tekstiseikkailua väsäillyt. Ei siitä mitään suurta menestystä tule, kun ei sitä pelimoottoria siihen osaa tehdä joten vaihtoehtojen voimalla mennään.
Itse aloittelin vuosi sitten säheltämään ohjelmoinnin kanssa, mutta vasta nyt alan ymmärtää edes sen verran, että osaan tulostaa hieman muutakin "koodia" kuin "hello world". En kuitenkaan hirveämmin vielä ymmärrä miksi teen mitä teen tai miten teen ylipäänsä. Sählään, mokaan, sählään--> onnistun, kunnes joskus alan tosissaan hahmottaa meininkiä. Ehkä sitten koulussa;)
Itsellä alkoi hivenen avautumaan asiat kokeilemalla sekaisin muitakin kieliä, ei ehkä suositeltavaa kaikkien mielestä, mutta itsellä helpotti. Kurkkaa: http://www.dummies.com/how-to/computers-software/programming/cplusplus.html, mikäli et vielä käynyt. Väärä kieli esillä, mutta muutoin hyödyllisiä juttuja ylipäänsä sivustolla.
Minulle joku viisas neuvoi että yritä koodata:
- HTML5-runko
- Siihen HTML-lomake
- Tyylittely (CSS3)
- Tiedot tietokantaan (MySQL,SQL,PHP)
- Tiedon tulostaminen
tyhjästä
(Mod. siirsi tästä virinneen keskustelun erilleen.)
Mitä helkkaria nyt taas, late? Ajatuksesi auttaa on ehkä jalo, mutta ohjelmoinnilla ei ole mitään tekemistä CSS:n tai HTML:n kanssa.
Lisäksi PHP on yksi surkeimmista vaihtoehdoista aloittelijan kieleksi. Siinä ei tarvita edes funktiota koodin suorittamiseen! (edit. no ei toisaalta Pythonissakaan...) Puhumattakaan superglobaaleista taulukoista, merkkijonoista, järkyttävistä nimeämiskäytännöistä ja heikosta tyypityksestä. Viimeisenä mukaan tulisi sotkea CSS(3), HTML(5) ja tietokannat! Ei herran jumala late, nyt ihan oikeasti.
vesikuusi kirjoitti:
Lisäksi PHP on yksi surkeimmista vaihtoehdoista aloittelijan kieleksi. Siinä ei tarvita edes funktiota koodin suorittamiseen!
Mistä lähtien on hyvä asia, että täytyy tehdä funktio, ennen kuin koodin voi suorittaa?
Miksi C++:n
#include <iostream> using namespace std; int main() { cout << "aybabtu"; }
tai Javan
public class Aybabtu { public static void main(String[] args) { System.out.print("aybabtu"); } }
olisi aloittelijalle parempi kuin PHP:n
<?php echo "aybabtu"; ?>
Siksi, että aloittelijan on hyvä opetella modulaarisen koodin tekemistä heti alusta alkaen, ja tämä onnistuu paremmin funktioilla kuin globaalilla koodilla IMHO. Siinä sitä sitten ollaan, kun haluaisi jollain toisella kielellä koodata ja tajutaan, että enhän minä osaa tehdä muuta kuin globaalia PHP-purkkaa.
Lisäys: Funktio/proseduuri on kuitenkin muodostunut aika tärkeäksi jutuksi ohjelmoinnissa, minkä takia se on mielestäni ajettava aloittelijan päähän mahdollisimman nopeasti.
Yritin sanoa että kun tekee tyhjästä niin on suuri mahdollisuus oppia. Omalla kohdallani (html,css,js,php,mysql) koska web-sivujen teko kiinnostaa.
(Mod. siirsi tästä virinneen keskustelun erilleen.)
late kirjoitti:
Yritin sanoa että kun tekee tyhjästä niin on suuri mahdollisuus oppia. Omalla kohdallani (html,css,js,php,mysql) koska web-sivujen teko kiinnostaa.
Ootko tosissas ehdottamassa noinkin laajaa kieliviidakkoa/projektia helloworld-tasoiselle koodarille..?
Modulaarinen ohjelmointi ei oikein voi olla lähtökohta, jos ei osaa muutenkaan ohjelmoida. Pienet harjoitukset ja matalan tason koodaaminen auttaa alussa ja siitä voi sitten suunnata minne haluaa. Isoja suuntaviivoja ei ehkä kannata miettiä, eikä ulkoa opetella (johon Late ehkä viittasi), vaan miettiä mitä ja ennen kaikkea miten jokin asia kannattaa tehdä.
Esimerkkinä vaikka viitenumeron laskenta voisi olla hyvä aloitella. Siihen on olemassa valmis ratkaisu, mutta pelkän määritelmän pohjalta voi myös itse rakentaa toimivan ohjelman. Tämänkin voi hoitaa millä tahansa kielellä funktioilla tai ilman.
Seuraavaksi ehkä jokin peiliheijastus, jossa joutuu hiukan itsekin laskemaan. Yleisesti matematiikka ja looginen päättely ovat ehkä ohjelmoijan tärkeimpiä osaamisalueita.
Php on kyllä oikeasti sellaista paskaa, että kun mukaan laskee tutoriaalien yleisesti heikon tason, niin kunnollista ohjelmointia on sillä vaikea oppia. Toisaalta ei se ole pelkästään kielen vika, sillä täälläkin myös c++:n kanssa esiintyy jatkuvasti globaalien muuttujien raiskausta, kun porukka uskaltaa koodiaan näyttää.
Python on paljon parempi kieli ohjelmoinnin filosofian opetteluun, vaikkakin kieli on minusta aika järkyttävä omalta osaltaan.
Teuro kirjoitti:
Modulaarinen ohjelmointi ei oikein voi olla lähtökohta, jos ei osaa muutenkaan ohjelmoida. Pienet harjoitukset ja matalan tason koodaaminen auttaa alussa --
No totta tuokin.
Korkean tason kielillä oppii ehkä nykyaikaisia ja hyvinä pidettäviä ohjelmointitapoja. Silti ohjelmoinnin ymmärtämisessä voi olla hyödyllistä tutustua tietokoneen toimintaan ylipäänsä sekä opetella vaikka assemblyn eli symbolisen konekielen alkeet. Konekielen tunteminen saattaa karistaa haitallisia harhaluuloja siitä, miten tietokone ”ymmärtää” koodia tai ”osaa” laskea. Vastaavasti liikaa selittämättömiä asioita sisältävä ohjelmointikieli voi jonkun kohdalla hidastaa näitä oivalluksia.
Metabolix kirjoitti:
Konekielen tunteminen saattaa karistaa haitallisia harhaluuloja siitä, miten tietokone ”ymmärtää” koodia tai ”osaa” laskea.
Siis tietokonehan nimenomaan osaa laskea ja siinä se sitten suunnilleen onkin. Konekielestä löytyy suoraan operaatiot mm. yhteen-, vähennys-, kerto- ja jakolaskuille sekä loogisille operaattoreille. Kehittyneemmissä prosessoreissa on tyypillisesti käskyjä vielä kehittyneempiäkin laskutoimituksia kuten neliöjuuri varten.
Eli mielestäni on outoa kutsua tietokoneen kykyä laskea haitalliseksi harhaluuloksi. Ehkäpä tarkoitus oli sanoa esimerkiksi että tietokone itsessään ei ymmärrä matemaattisia kaavoja tai osaa ratkaista yhtälöitä yms.
Grez kirjoitti:
Siis tietokonehan nimenomaan osaa laskea ja siinä se sitten suunnilleen onkin. – – Ehkäpä tarkoitus oli sanoa esimerkiksi että tietokone itsessään ei ymmärrä matemaattisia kaavoja tai osaa ratkaista yhtälöitä yms.
Tätä(kin) tarkoitin. Sanavalintani johtui siitä, että mielestäni tietokoneen laskeminen ei ole osaamista (know-how) vaan samanlainen tekninen ominaisuus kuin vaikka se, että veitsi leikkaa tai matto lojuu lattialla. Eli tarkoitin, että tietokone on lähinnä lukujen käsittelyyn sopiva työkalu, moderni helmitaulu. Moni puhuu nykyään aivan liian vakavissaan koneesta ajattelevana olentona, joka valittaa, kiukuttelee ja kieltäytyy. Ohjelmoijan pitää tietää, että tietokone on vain kone ja ohjelmointi on rationaalista ja eksaktia.
No omasta mielestäni laskeminen nimenomaan on se mekaaninen suoritus. Matematiikka on sitten se osa-alue johon vaaditaan ajattelemista, jotta kyvystä laskea on merkittävämpää hyötyä. Mielestäni olisi aika tyhmää sanoa että "veitsi ei osaa leikata eikä matto lojua lattialla".
Olen tehnyt juttuja assemblyllä. x86 ja AVR ovat olleet käytössä. Assyllä tulee raja vastaan mitä pystyy itselleen abstraktoimaan fiksusti. Jo pelkän linkitetyn listan selaaminen muuttuu rumaksi. Ota osoite, lisää vakio (next kohta), hae osoitteesta ja siinä on seuraava molluka.
Vaatii todella kovaa päätä pystyä tekemään asia oikein ja kerralla. Kommentit ovat kuitenkin virheen löytyessä vanhentuneita ja rakenne on muuttunut käsittämättömäksi. Silti se on hyvää harjoitusta.
Löysin aikoinaan Forth-ohjelmointikielen, kun tarvitsin parserin ja skriptauksen.
Forth on todella yksinkertainen alusta ja puolessa tunnissa noin demo mielessä AVR:llä kaveri luki DS1820 lämpöanturia. Lähtötaso oli "Jaa tarkotatko Fortrania vai mikä forth?" Eli C ja tietokoneen toiminta oli hallussa.
Parasta siinä on laitteiston kosketeltavvus, käänteinen puolalainen logiikka matematiikassa ja sen täydellinen ymmärrettävyys. Esimerkiksi Jonesforth on kommentoitu assembly tiedosto jonka luettuaan ajatuksella ymmärtää millainen työkalu tuli käyttöön.
Pahinta on, että helposti sössii ohjelmansa nimeämällä asiat huonosti ja faktoroimalla kehnosti. Ja kun on nähnyt yhden forthin, on nähnyt yhden forthin. Openfirmware on aivan eri eläin kuin esimerkiksi gforth.
Leo Brodien kirja starting forth on hyvä alku ja antaa kuvaa miten voi Forthia käyttää. http://www.forth.com/starting-forth/ Se aloittelija ystävällinen forth on vain kadoksissa. Tosin kaikki ovat yhtä helppoja aloittaa kaiketi. Mutta forth.orgia lukemalla voi löytää jotain sopivaa. ANSitettu versio: http://home.iae.nl/users/mhx/sf.html
Ensimmäisenä kielenä Forth voi vaatia ponnisteluja, mutta uskoisin sen olevan käyttökelpoinen. En ole päässyt vielä tilanteeseen, jossa voisi tehdä lapsikokeita.
Niin ja if else then tulee ottaa vain sellaisenaan kuin ne nyt ovat ( tai sitten määrittelee endif sanan) ja yrittää ymmärtää mitä create does> tekee. Ne nyt ovat maailman mielestä hassuja. Eikä haikailla liukulukuja. Lisäksi pictured number output on tosi kelju jos on tottunut printähvään, mutta senkin voi vain opetella.
Lohkaistakoon tämä eri säikeeksi, jos juttua piisaa. Nyt vain hieman sörkein.
vuokkosetae kirjoitti:
Ensimmäisenä kielenä Forth voi vaatia ponnisteluja, mutta uskoisin sen olevan käyttökelpoinen. En ole päässyt vielä tilanteeseen, jossa voisi tehdä lapsikokeita.
Forth ei minusta sovi ensimmäiseksi kieleksi. Sen syntaksi on jo niin erikoinen verrattuna yleisempiin kieliin, että vaikka sen oppisi ei saisi mitään hyödyllistä "tuntumaa" muihin Forthia tärkeämpiin kieliin, joita ohjelmoijan on hyvä osata.
fergusq kirjoitti:
Forth ei minusta sovi ensimmäiseksi kieleksi. Sen syntaksi on jo niin erikoinen verrattuna yleisempiin kieliin, että vaikka sen oppisi ei saisi mitään hyödyllistä "tuntumaa" muihin Forthia tärkeämpiin kieliin, joita ohjelmoijan on hyvä osata.
Minusta taas olisi kiva, jos olisi enemmän ohjelmoijia, jotka aloittivat Forthilla. Forthin osaajat ovat kokemukseni mukaan harvoin sieltä kehnommasta päästä ohjelmointitaidoiltaan.
Tällä kommentilla oli nyt sellainen vaikutus, että se vei viimeisenkin ripauksen mielenkiinnostani PHL:ää kohtaan. – – (Mod. huom: tästä lisää PHL-projektin keskustelussa.)
Olet ehkä sen verran oikeassa, että monelle tavalliselle ohjelmoijalle Forth tai muut syntaksiltaan "erikoiset" kielet ovat liian vaikeita. Sellaista ainakin netissä joskus luen, jos eksyn vääriin keskusteluihin. Näille tavallisille ohjelmoijille sallin outojen ja pelottavien kielten dissaamisen puuttumatta siihen sanallakaan, koska mitäpä muutakaan ne poloiset toistaitoiset voivat tehdä. Odotan kuitenkin vähän parempaa sen tasoiselta ohjelmoijalta, joka ymmärtää jotakin kääntäjien päälle. Siksi olen hieman pettynyt, että kirjoitit tällaisen töräyksen Forthista, tai ylipäänsä mistään kielestä. Et toki ole ainoa, joka kokee vaikkapa Forthin uhkaavana kielenä, josta pitää varoittaa tietämättömiä aloittelijapoloisia.
Huvittava osa on se, että kuvittelet kaikkien ohjelmoijien ajattelevan ohjelmoinnista samalla tavalla ja tarvitsevan samoja kieliä. Joidenkin ohjelmoijien kun on minun tietojeni mukaan hyvä osata kaikenlaisia vaikeita asioita, joiden opettelu saattaa viedä paljonkin aikaa. Verrattuna näihin vaikeisiin asioihin jonkin kielen syntaksi ei varmaankaan ole mittava este kenellekään vähänkään lahjakkaammalle. En ainakaan voi kuvitella miten se olisi. Minusta vain ajatus ohjelmoijasta, jolle syntaksi olisi ylipääsemätön ongelma on yhtä hauska kuin ajatus televisionkatsojasta, jonka sohva on liian kaukana telkusta. "Kun ei näe noin kauas. Ei kukaan voi nähdä."
Kyse ei suinkaan ole siitä, että haluaisin jonkun opettelevan ja käyttävän Forthia tai muita katenatiivisia kieliä. Siitä voi jokainen itse päättää, jolla nyt taidot edes riittävät sellaisen opetteluun. Minua vain huvitti tällainen viesti ja siinä esiintyvä varsin tyypillinen logiikka, jos omien ennakkoluulojen esittämisen perusteetta faktoina nyt voi katsoa logiikaksi, ja se huvitti sen verran, että päätin kertoa mitä ajattelen asiasta nyt tämän yhden viestin verran.
Eiköhän nämä Putkassa tarjotut ideat sopivasta tavasta aloittaa ohjelmointi (ja oikeasta kielestä) voi arvioida ihan vain katsomalla minkälaisia onnistuneita projekteja Putkan projektisivuilta löytyy. Sehän se kertoo, miten à la mode Putka opitaan ohjelmointia, jos opitaan, ja millä kielillä saadaan tuloksia, jos saadaan. Tämä siis harrastusprojektien kannalta, eikä työelämän. Minua ainakin kiinnostavat vain tällaiset faktat, eivätkä perustelemattomat mielipiteet. (Oma vikani, että luen perustelemattomia mielipiteitä. Pitänee lopettaa.)
Pekka Karjalainen kirjoitti:
Tällä kommentilla oli nyt sellainen vaikutus, että se vei viimeisenkin ripauksen mielenkiinnostani PHL:ää kohtaan.
Minä petyin siihen että sinä henkilökohtaistat mielipiteitä. "Koska et pidä banaaneista, suunnittelemasi omenajaloste ei kiinnosta minua enää." Oletko muuten katsonu MOL:n sivuilta mikä on forth -osaajien tarve tänäpäivänä? Voisi jopa sanoa että kyseenalaistamasi mielipide voisi jopa pitää osittain paikkansa. Eri asia on tietysti omaksi ilokseen vääntää lottogeneraattoreita konsoliin.
Pekka Karjalainen kirjoitti:
...
Katsoin juuri eka kertaa Forth kielen syntaksia wikipediasta, niin olen kyllä ferqusqin kanssa samaa mieltä. Jos syntaksista ei suoraan ota sen jälkeen selvää kun olen koodannut php,js,java,c,c++,c#,lua,vb -kielillä niin eipä ole mielestäni järkevää aloittaa ohjelmointia tuommoisella kielellä. Ensimmäistä kertaa myös kuulin kyseisestä kielestä vasta putkan forumeilla. Muutenkin aloittelijan kieliksi sopivat kielet mihin löytyy paljon esimerkkejä ja kehitysympäristön saa kuntoon helposti asennusohjelmalla. Ohjelmointikielen ei tarvitse tuoda ylimäärästä haastetta ohjelmoinnin aloittamiseen. Muutenkaan en usko että kovin monessa työhaastattelussa aiheuttaa paljoa plussaa forth-kielen osaaminen, verrattuna esim c#-kielen osaamiseen.
Muutenkin Pekka Karjalaisen postista tulee mieleen, että ohjelmointi vaatisi jotain suurempaa lahjakkuutta, että olisi hyvä ja osaava ohjelmoija. Omasta mielestä riittää kun on kinnostunut, osaa perus matikkaa, jaksaa harjoitella paljon ja pysyy asioista perillä niiden muuttuessa.
Pekka Karjalainen,
tarkoitin kommentissani, että Forth saattaa tuntua vaikealta henkilöstä, joka ei ole ohjelmoinut ennen ja että se ei välttämättä ole yhtä hyödyllinen kuin eräät toiset kielet. Tarkoituksenani ei ollut moittia Forthia tai varoittaa koskemasta siihen koskaan.
Joka tapauksessa se on vain mielipiteeni ja sinulla ja kaikilla muilla on oikeus vapaasti kritisoida näkemystäni.
Aihe on jo aika vanha, joten et voi enää vastata siihen.