Moi kaikki,
Ajattelin aloittaa ohjelmoinnin. Oikean kielen valinta on kuitenkin vaikeaa. Kielen pitäisi olla 100% Linux yhteensopivaa, helppoa oppia ja sellaista, että siitä olisi hyötyä. Olisin kiinnostunut joku päivä osallistumaan vapaan lähdekoodin projekteihin. Olisiko kenelläkään suosituksia kielen valintaan? Entä miten kannattaisi aloittaa? Aikainen on kokemus on HTML (joka ei ihan ohjelmointia ole). HTML:n osaan mielestäni hyvin. PHP:tä olen koittanut opetella, mutta se ei oikein ole luonnistunut. Lieneekö liian vaikea pala aloitettavaksi vaiko huono kirja.
Ohjelmointi sinänsä ei varsinaisesti ole helpompaa tai vaikeampaa millään tietyllä kielellä. Jos PHP kiinnostaa, voisit kokeilla lukea vaikkapa Ohjelmointiputkan PHP-opasta. Sen ei ainakaan pitäisi olla mitenkään vaikeaselkoinen.
Näistä aloituskielistä on keskusteltu lukuisasti. Haku on oivallinen työkalu ->
Mutta OS:n kannalta oivallinen "100% Linux yhteensopiva" kieli on C (tai C++). Eräs guruileva herrasmies sanoi kerran (tai ehkä useamminkin) C:n olevan miltein välttämätön C++:n opettelemiseen, joten aloita C:stä.
C(++) ei taida olla parhain aloituskieli. Javalla voisi olla hyvä aloittaa, tai jollakin skripti-kielellä.
Jos kiinnostaa selkokielinen helppo syntaksi, perinteinen lähestymistapa, mahdollisuus modernien temppujen käyttöön ja jatkuvasti kehittyvä kääntäjä, niin FreeBASIC on hyvä vaihtoehto.
Heikko puoli on siinä, että kääntäjä ei ole vielä ammattitason käyttöön soveltuva, joten piiri rajoittuu lähinnä harrastelijoihin.
Sillä ensimmäisellä kielellä ei ole omasta mielestäni niin väliä. Tärkeintä on, että et heti anna periksi jos joku ei onnistu. Kun opit ohjelmoinnin perusteet jollain kielellä, ei muihin kieliin siirtyminen ole niin vaikeaa.
Itse en suosittele C:llä aloittamista. Se on syntaksiltaan aloitelijalle ehkä vähän turhan monimutkainen ja kielenä nykyohjelmointiin puutteellinen. Joo, opettaahan se tuntemaan muistin hallinnan yms. mutta sitten kun ne tajuaa niin C:n hyöty loppuukin siihen.
Minulla on lähinnä vaan kuulohavaintoja C++:sta, mutta jos minulta kysytään niin aloita, noin muutamasta viikosta muutamaan kuukauteen, jollain basic-kielellä että opit ymmärtämään mistä ohjelmoinnissa on kyse, tai sitten C:llä jos haluat oppia tietokoneen sielunelämää. Sitten hyppäät C++:aan, tai Javaan. Java on nykyään muuten aika pop C:n lisäksi ammattipiireissä.
Kuten muut jo sanoivat, aloituskielellä ei ole niin väliä. Kunhan vain valitsee sen, mikä itseä miellyttää parhaiten. Kunhan pitää projektien koot aluksi tarpeeksi pieninä ja muistaa, että virheistä oppii. Siitä se sitten lähtee.
Janezki kirjoitti:
Itse en suosittele C:llä aloittamista. Se on syntaksiltaan aloitelijalle ehkä vähän turhan monimutkainen ja kielenä nykyohjelmointiin puutteellinen.
Ei se syntaksi minusta mitenkään mutkikas ole. C:n, C++:n, PHP:n ja Javan syntaksithan ovat muuten kaikki hyvin lähellä toisiaan, joten kun yhden osaa, on varsin helppo siirtyä toiseen. C on syytä opetella ennen C++:aa, koska C++ lähinnä täydentää C:tä asioilla, joista aloittelijan ei ole pakko välittää. Javaa pidetään tietyssä mielessä "nykyaikaisena" ja sitä opetetaan monissa oppilaitoksissa pääasiallisena kielenä. Javan opiskeluun tosin liittyy vahvasti olio-ohjelmointiparadigma, joka ei välttämättä ole se, mistä ohjelmoinnin opettelu kannattaa aloittaa.
Ohjelmointiputkastakin löytyy tämmöinen lukemisen arvoinen opas: Näin pääset alkuun ohjelmoinnissa.
Itse aloitin ohjelmoinnin C++:lla ja olen tyytyväinen etten aloittanut millään Basicilla tai muulla heikosti tyypitetyllä kielellä. Ei tietenkään sillä, ettei niillä kannattaisikaan aloittaa. Omasta mielestäni C++ ei ole aloituskielenä mahdottoman vaikea, vaikka näin usein annetaan käsittää. Realistiset tavoitteet, halu oppia ja kärsivällisyys ovat kaiken 0 ja 1.
Yhtä oikeaa vastausta kysymykseen, millä ohjelmointikiellelä kannattaa aloittaa, ei ole. Eikä sillä kielellä niin suurta merkitystä ole, ohjelmoinnin ajattelutavan oppiminen on tärkeämpää kuin tietyn kielen syntaksin oppiminen.
PHP on ihan hyvä vaihtoehto, jos nettisivujen tekeminen kiinnostaa. C/C++ taasen on minusta joissain asioissa turhan hankala aloittelijoille. Päätyisin kuitenkin suosittelemaan Pythonia. Hyvää materiaalia (myös suomeksi) on linkitetty Wikipedian Python-artikkelissa ja putkastakin löytyy eräs opas.
alota c++:lla, sen jälkeen opit helposti minkä vaan kielen(paitsi ehkä assemblerin(lieneekö oikein kirjoitettu..))
Visual basic on hyvä aloituskieli..
Tiedän, että asiasta on ollut paljon keskustelua, mutta mitään en ole Linuxista löytänyt.
Basic taitaa olla M$ kieli? Olen kokeillut Kieli X:ää joka on ilmeisesti Basicin suomenkielinen versio. "Äxän" opin kuitenkin yhdessä illassa ja ei innoistanut kummemmin.
Kokeilen C:n opettelua ensin. (Deffin kommentti.) Mikäli jää kokeiluksi niin kokeilen sen jälkeen Pythonia.
Kiitos kaikille avusta.
jujuhe kirjoitti:
Basic taitaa olla M$ kieli?
Microsoft on vain tehnyt tunnetuimmat Basic-tulkit, muttei keksinyt kieltä. Linux-alustalle löytyy monta basic-variaatiota, joista itselleni tulee ensimmäisenä freebasic mieleen.
Mainitsemasi KieliX oli muistaakseni hyvin rajoittunut, eikä se oikein vastannut mielestäni basicia, vaikka se suomennettu basic yrittääkin olla. Englanti nyt vain sopii paremmin ohjelmointiin. Kuten aikaisemmin sanoin, kannattaa valita kieli, mikä itseä miellyttää ja sopii omiin tarkoitusperiin.
Janezki kirjoitti:
Itse en suosittele C:llä aloittamista. Se on syntaksiltaan aloitelijalle ehkä vähän turhan monimutkainen ja kielenä nykyohjelmointiin puutteellinen.
No, näistä voi tapella loputtomiin, ja kuule otetaanpa näin päin:
Aloitin C:llä, on vuosien ohjelmointikokemus ja jo alusta asti syntaksi oli aivan tarpeeksi helppo. Ja vaikka osaan tämän "syntaksiltaan aloitelijalle ehkä vähän turhan monimutkainen ja kielenä nykyohjelmointiin puutteellinen" -kielen, niin Javaa kun yritin, niin ei mahdu kaaliin. Lisäksi (anteeksi jos loukkaan jotakuta) en ole nähnyt YHTÄÄN Java-ohjelmaa, joka ei olisi älyttömän hidas ja raskas. Lisäksi jos sillä on tehty työpöytäohjelma, niin se ei tue mm. tekstin kopioimista ctrl+v:llä. Lisäksi en ole tainnut nähdä yhtään Javalla toteutettua peliä, lukuun ottamatta selaimella pikku- ja vähän isompia pelejä. Ja C:llä sentään tehdään paljon kaikkia ohjelmia ja pelejä. Sitä pidetään sen takia vaikeana, koska se ei ole luokkaa: "lataa kääntäjä, kirjoita koodiin naytakuva jonka jälkeen aja se"
Eli voi sen näinkin kääntää ;)
jujuhe kirjoitti:
Moi kaikki,
Ajattelin aloittaa ohjelmoinnin. Oikean kielen valinta on kuitenkin vaikeaa.
Its aloitin urani c-kielellä. Se oli silloin Turbo c:n ja dosin aikaan erittäin helppoa ja tehokasta. Siihen kun lisäsi tarvittaessa inline asmia, niin aijai.
Kielellä ei sinänsä tällähetkellä ole väliä. Kannattaa tietenkin valita se kieli sen mukaan, mitä olet tekemässä.
C- kieli on hypetyksestä riippumatta suht helppo oppia. Javan oliopohjaisuus saattaa aiheuttaa alussa harmaita hiuksia. .Net express lienee parhaita ja ilmaisia IDE:jä koodaukseen tällähetkellä. Itse olen taas pari viimevuotta koodaillut pelejä BlitzMaxilla. Loistava ja hauska kieli.
johncage kirjoitti:
Its aloitin urani c-kielellä. Se oli silloin Turbo c:n ja dosin aikaan erittäin helppoa ja tehokasta. Siihen kun lisäsi tarvittaessa inline asmia, niin aijai.
Hey! Minäkin tahdon oppia tuollaista O__o Dosin kanssa luonnollisesti. Ah, kun olisi syntynyt 20 vuotta aiemmin ja omistanut vielä tietokoneen, että kaiken tarvittavan siihen..
-Grey-
kray kirjoitti:
Aloitin C:llä, on vuosien ohjelmointikokemus ja jo alusta asti syntaksi oli aivan tarpeeksi helppo. Ja vaikka osaan tämän "syntaksiltaan aloitelijalle ehkä vähän turhan monimutkainen ja kielenä nykyohjelmointiin puutteellinen" -kielen, niin Javaa kun yritin, niin ei mahdu kaaliin. Lisäksi (anteeksi jos loukkaan jotakuta) en ole nähnyt YHTÄÄN Java-ohjelmaa, joka ei olisi älyttömän hidas ja raskas.--
En minäkään mikään Javan suurlähettiläs ole. Paljon mieluummin soisin pascal-kieltä käyttävien ohjelmointiympäristöjen nousun.
Ok, yksilöt on erilaisia. Sinulle C oli syntaksiltaan helppo, onneksi olkoon. Mutta jos ei verrata käyttäjiä vaan kieliä, esim. Basic on paljon helppolukuisempaa kuin C, eli vaikka aloittelija oppii, ja todennäköisesti myös oppii C:n syntaksin, niin selviää hän vähemmällä jos aloittaa vaikka Basicistä. Ei sekään kokemus mene hukkaan jos vasta sitten siirtyy vaikka C:hen tekemään vakavalla pohjalla ohjelmia.
Tuolla puutteellisella tarkoitin lähinnä sitä että C on tarpeettoman koneläheinen kieli useampien sovellusten rakentamiseen (<- huom "useampien").
johncage kirjoitti:
Its aloitin urani c-kielellä. Se oli silloin Turbo c:n ja dosin aikaan erittäin helppoa ja tehokasta.
Et ole ainoa :)
Janezki kirjoitti:
Tuolla puutteellisella tarkoitin lähinnä sitä että C on tarpeettoman koneläheinen kieli useampien sovellusten rakentamiseen
Koneläheinen kieli? O_o Jos tarkoitat sitä, että siinä ei ole mitään sisäänrakennettuja ominaisuuksia, vaan kaikki täytyy ks."#include" , niin sehän on vain hienoa, kun ei ole riippuvainen mistään :).
Jonathan Bartlettin kirja Programming from the Ground Up on 100 % Linux-yhteensopiva ja opettaa assembly-tasolta lähtien, mitä ohjelmointi on, ja mitä koneessa oikeasti tapahtuu. Sen lopussa on myös hyviä vinkkejä, mihin jatkaa, kun haluaa tutustua korkeamman tason kieliin.
http://www.eskimo.com/~johnnyb/
Tämä ei ole se tapa, millä saa heti vaikuttavia tuloksia. Tällä kirjalla kuitenkin saa ymmärrystä.
Tässä on vielä linkki ilmaisversioon PDF-muodossa. Kirja on siis sekä myyntikirja, että vapaasti saatavilla digitaalisessa muodossa.
http://download.savannah.gnu.org/releases/
Huom! Se on iso PDF.
Itse aloittaisin sinun asemassasi Javasta. Aluksi pitäisi tehdä yksinkertaisia ohjelmia komentorivillä, kuten sellaisi missä pitää silmukoiden ja ehtolauseiden avulla tulostaa seuraavanlaisia kuvioita
#####
#####
#####
#####
#####
Koodi:
for(int i = 0; i < 5; i++) { for(int j = 0; j < 5; j++) { System.out.println("#"); } }
12345
2345
345
45
5
yms.
Mod. lisäsi kooditagit
kray kirjoitti:
"#include" , niin sehän on vain hienoa, kun ei ole riippuvainen mistään :).
Juuri tämä oli se sen aikakauden hienous. Kaikki tehtiin itse - ja jos virheitä tuli, niin se oli omassa mokkulassa.
Meillä oli kilpailu opiskeluaikoina esim. parhaan (tekstipohjaisen, ei graffaa vielä) syöttökentän teosta. Siinä oli jo paljon samoja toimintoja kuin nykyaikaisessa textbox-kontrollissa:)
C-kielestä on löytänyt mitään hyvää opasta ja c++-kielestä taas löysin joten sitten käytetään sitä. Nyt yritän kääntää ekaa ohjelmaa komennolla:
g++ harj1.cc -o harj1
Sitten mulle tulee sauraava eteen.
In file included from /usr/include/c++/4.2.1/backward/iostream.h:31,
from harj1.cc:1:
/usr/include/c++/4.2.1/backward/
harj1.cc:6:2: warning: no newline at end of file
harj1.cc:3: error: ‘::main’ must return ‘int’
Ja tätä olen kokeillut:
#include <iostream.h> void main() { cout << "Hello world!"; }
Mikähän on mennyt vikaan?
(Mod. Edit. Kooditagit.)
Ohjeet kertoo kooditageista, lueppas.
Sitten, et käytä standarin mukaista headeria - varoitus lähtee pois kun vaihat iostream.h:n muotoon iostream.
Virhe taas tulee siitä, että 'main' ei palauta 'int':iä (eli kokonaislukua - vaan 'main' nyt, kun sen tyyppi on 'void', ei palauta mitään), eli vaiha 'main'in tyypiksi 'int', ts. int main()
#include <iostream> // Uudempi otsikko, ei .h:ta using namespace std; // Uudemman otsikon vaatima lisäys: jotenkin täytyy ilmaista, että käytetään std-nimiavaruuden sisältöä (mm. cout-oliota). int main() // Palautusarvon tyyppi on int { cout << "Moi." << endl; // endl on rivinvaihto return 0; // Palautetaan 0 ohjelman suorituksen onnistumisen merkiksi }
Onkohan kyseessä mahdollisesti tämä opas? Kyseisen oppaan esimerkit evät ole standardin mukaisia, joten oppaasta copypastetut koodit eivät toimi. Jossain luvussa taidetaan siitä ohimennen mainita.
Kiitti!! Sori, en ollu huomioinu tota koodi hommelii.
Huono ohje sekin.
EDIT: Legu: onhan se se. xD
Tietääkö joku jotain parempaa opasta?
EDIT 2: http://cpp.mureakuha.com/cppohje/cpp01.htm Toi on parempi
Taitaa Legun mainitseman oppaan koodit toimia "suoraan"(Ainakin Dev-cpp:ssä), kunhan muistaa muuttaa main()-funktion palauttamaan int-tyyppisen arvon.
Näin ainakin omien kokemusteni perusteella.
jujuhe kirjoitti:
C-kielestä on löytänyt mitään hyvää opasta
Putkasta löytyy: https://www.ohjelmointiputka.net/oppaat/opas.
hunajavohveli kirjoitti:
jujuhe kirjoitti:
C-kielestä on löytänyt mitään hyvää opasta
Putkasta löytyy: https://www.ohjelmointiputka.net/oppaat/opas.
php?tunnus=cohj_1
En pitäny tosta. (Kohta tulee bännit tosta tälle foruumille.)
Minkäslaisesta sitten pitäisit? Minusta C-opas ei juuri tuosta voi parantua. Sisältää olennaiset asiat ja esittää ne selkeästi.
Kyl toi http://www.nic.funet.fi/c opas/ on parempi. Toi eka osa on hyvä, mut toka on huono
C++ on sitten eri kieli kuin C.
Ja mikä siinä toisessa osassa on niin huonoa?
Kyllä se minusta on selkeä ja kertoo tarpeellisia asioita.
<offtopic>
Olisi kiva tietää perusteluja, mikä tuossa on huonoa. Itse ainakin opin siitä alkeet ja pääsin alkuun hyvin, vaikka sitä ennen olin lukenut muita oppaita, ja tuo vaikutti parhaalta, mitä olen käsiini saanut, kun se kertoo vielä kädestä pitäen melkein. :)
</offtopic>
Suosittelisin sinulle opettelemaan vaikka CoolBasicia sillä oppii tosi helposti ohjelmoinnin perusteet.Mutta ei siihen kuitenkaan pidä jumittua siitä sitten suosittelisin siirtymään Javaan.
DancingDevil kirjoitti:
Suosittelisin sinulle opettelemaan vaikka CoolBasicia sillä oppii tosi helposti ohjelmoinnin perusteet.Mutta ei siihen kuitenkaan pidä jumittua siitä sitten suosittelisin siirtymään Javaan.
jujuhe kirjoitti aloitusviestissään, että kielen pitäisi olla 100% Linux yhteensopivaa. CoolBasicin editori/kääntäjä on kuitenkin vain Windowsille. Ehkä emulaattorilla voisi saada toimimaan.
Itse tosiaan suosittelen opettelemaan PHP:tä. Mielestäni se on helppo oppia.
EgeTheGod kirjoitti:
jujuhe kirjoitti aloitusviestissään, että kielen pitäisi olla 100% Linux yhteensopivaa. CoolBasicin editori/kääntäjä on kuitenkin vain Windowsille. Ehkä emulaattorilla voisi saada toimimaan.
Korostaisin vielä, että kieli ei ole 100% linux-yhteensopivaa, jos siihen tarvitaan emulaattoria.
johncage kirjoitti:
Janezki kirjoitti:
"#include" , niin sehän on vain hienoa, kun ei ole riippuvainen mistään :).
--
Kray sanoi tuon, en minä. Vastatakseni "omaan" kommenttiini sanoisin että ei ole niin hienoa että C:ssä ei ole edes string-tyyppiä vaan nekin pitää char-taulukoista kasata ja switch-lauseke ei hyväksy vakioita, vaan ne pitää olla plain-numeroita. Tällaisia pieniä seikkoja jotka vain vaikeuttavat tehokasta ohjelmointia. Onhan niitä tietenkin kirjastoja olemassa joilla on helppo laajentaa mutta minua kyrsii itse C:n syntaksiin liittyvät asiat.
Janezki kirjoitti:
Tällaisia pieniä seikkoja jotka vain vaikeuttavat tehokasta ohjelmointia.
Aloittelija ei ohjelmoi tehokkaasti, oli kieli mikä hyvänsä. Sen sijaan aloittelija voi minusta ohjelmoida aivan äärimmäisen epätehokkaasti, jos kielessä on liikaa automaatiota. Esimerkiksi juuri mainitsemasi string-tietotyyppi luo helposti harhakuvan, että "sijoitanpa tässä näin samalla tavalla kuin kokonaislukuja", jolloin herkästi unohtuu, että operaatio ei ole vakioaikainen vaan verrannollinen tekstin pituuteen. Vielä kun näitä välitetään funktioiden parametreina oivaltamatta, että jokaisen funktiokutsun takia luodaan uusi olio ja kopioidaan koko sisältö, niin siitä on tehokkuus kaukana.
Ohjelman tehokkuuteen pyrittäessä pitäisi ehdottomasti ymmärtää, mitä sisällä tapahtuu. Kun perusasiat ovat hallussa, ne pystyy huomioimaan korkeammankin tason kielissä, joilla taas on helpompi suunnitella itse toimintaa. En sano, että järjestyksen olisi oltava tämä, mutta ennen tehokasta ohjelmointia on se matalampikin taso tutkittava.
Janezki kirjoitti:
C:ssä ei ole edes string-tyyppiä vaan nekin pitää char-taulukoista kasata
Joissain muissakin kielissä on näin, enkä pidä sitä minään ongelmana. Usein on kätevää, että voi käyttää taulukoiden funktioita myös merkkijonoissa.
Janezki kirjoitti:
switch-lauseke ei hyväksy vakioita, vaan ne pitää olla plain-numeroita.
En ymmärrä miksi tuosta tehdään niin iso numero, monimutkaisemmat ehdot voi tehdä if
-lausekkeilla. Mutta jos se on niin tärkeää, kannattaa vaihtaa Perliin. En ole nähnyt missään muussa kielessä yhtä monipuolista switch
:iä kuin Perlin given/when
.
Suosittlen Javaa koska se on helppo ja joustava kieli minun mielestäni.Todellakin näistä aloittelijan kielistä on keskusteltu kymmeiä ellei satojakin kertoja.Sanoisin että Java mielestäni paras aloitus vaihtoehto.Ja tietenkin kannattaa lukea noita Ohjelmointiputkan oppaita.
Vaikka olen ketjuun vastannut jo useammankin kerran, on pakko allekirjoittaa kossupullon väite. Vaikka olenkin ohjelmoinut basicilla ja PHP:llä aikaisemmin, javaan oli todella helppo päästä sisälle. PHP:n kanssa en oikein onnistunut vaan joudun toistamaan samat asiat uudelleen ja uudelleen. Syntaksin samankaltaisuuden ansiosta olen "siinä sivussa" myös oppinut PHP:n paremmin.
No kun Javaa kerran alettiin liputtaa, niin lähden siihen mukaan. Java tosiaan aloitti "vakavan" ohjelmointiurani, vaikka sitä ennen olinkin muilla kielillä ohjelmoinut. Javasta on puhuttu tässä langassa paljon, joten enpä sitä enempää ylistä, toinpahan vain mielipiteeni esille. Oliot ehkä hankaloittavat ohjelmointia aluksi, mutta itse en niistä mitään aluksi välittänyt. Ohjelmoinnin aloittamista Javalla voi myös harkita Applet-ympäristössä, joka helpottaa esim. kuvien latausta.
Javaa minäkin suosin.
Mobel kirjoitti:
Ohjelmoinnin aloittamista Javalla voi myös harkita Applet-ympäristössä, joka helpottaa esim. kuvien latausta.
Mikäs siinä nyt niin paljon helpottaa?
import javax.imageio.ImageIO; try { Image kuva = ImageIO.read("kansio/kuva.png"); // Tai jos verkosta pitää saada: Image kuva2 = ImageIO.read(new URL("https://www.ohjelmointiputka.net/img/putka.jpg")); } catch (IOException e) { } catch (MalformedURLException e) { }
Vähän OT:tä, mutta laitan nyt kumminkin. Alussa minua hämäsivät nuo try-catch -lauseet, mutta kun hetken on Javaa harrastanut tuokaan tuskin ongelmia tuota.
Kannattaa aloittaa ASMilla ! Se on helppo ja yksinkertainen, miinuksena on vain että se on kauhean hidas :( Putkassa on ainakin 1000 tutoriaali siihen. =)
Aihe on jo aika vanha, joten et voi enää vastata siihen.