Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Toinen kieli

Sivun loppuun

KoodiNoppa [29.03.2007 00:24:39]

#

Mikä olisi hyvä kieli, jonka opetella? C++:aa osaan (okei,sanotaan vaikka että osaan puoliksi), mutta se alkaa hieman tympiä. Olisi kiva kokeilla jotain uutta ja erilaista. Jotain helposti opittavaa, mutta mikä ei ole läheskään kuin c++. Ajattelin Pythonia...onko se helppo oppia?

P.S. vaikeat kielet kuten Malbolge ja muut "esoteeriset kielet" tuskin sopivat minulle... Eikä basic-kielet.

ville-v [30.03.2007 14:44:10]

#

Mikä tahansa kieli on helppo oppia kun osaa C/C++:aa, suurin osa kielistä käyttää samaa syntaksia.

Python on varmaankin suht helppo oppia, tai voisit kokeilla PHP:tä tai Javaa.

tgunner [30.03.2007 20:47:13]

#

Minä en lähtisi ainakaan opiskelemaan basic-kieliä, jos olet jo aloittanu C++:lla (paitsi jos haluat tietenkin tutustua niihin). Python tai Ruby olisi kiva vaihtoehto ja myöhemmin voisit opiskella vähän asmia, josta on hyvä tietää ainakin jotain.

Pekka Karjalainen [01.04.2007 20:58:16]

#

Minä en tiedä, olisiko Scheme sinusta helppoa. Se taitaa olla makuasia. Yleensä siihen kyllä pääsee sisälle noin viikossa tai parissa, jos haluaa.

Sitä käytetään eräissä erinomaisissa oppikirjoissa, jonka takia se on hyvä kieli osata. Niistä oppimiasi asioita voit soveltaa monessa muussakin kielessä.

Ohjelmointiympäristöksi:
http://drscheme.org/

Kirjallisuutta netissä:
http://htdp.org/
http://mitpress.mit.edu/sicp/

HtDP:n alku on ihan peruskauraa, kun kerran osaat jo C++:aa. Kyllä se siitä paranee. DrSchemellä voit myös tehdä ihan oikeita käytännön ohjelmia. Sitä ei vaivaa totaalinen akateeminen kirjastojen puutostauti.

Vilkaise URLeista vähän mitä olisi tarjolla. Lupaan ainakin, että uutta ja erilaista se on.

KoodiNoppa [03.04.2007 22:46:51]

#

Hmm...Ehdin Pythonin jo ladata ennen kuin kukaan ehti vastata enkä saa sitä edes toimimaan kunnolla :D

Java kiinnostaisi koska sen saisi helposti nettiin... Myös Ruby näyttää ihan kiinnostavalta. Taidan kuitenkin ottaa Schemen, koska se vaikuttaa sen verran erilaiselta verrattuna c++:aan. Laskujärjestys saattaa tosin mennä muutaman kerran sekaisin :)

Pekka Karjalainen [04.04.2007 12:05:15]

#

Pitäisi ehkä vielä varoittaa siitä DrSchemen roskienkeruusta. Roskienkeruu on siis sitä, kun ohjelman ajonaikainen tukisysteemi hakee ja vapauttaa muistia, jota ei enää käytetä. Se kuuluu (tavallaan) Scheme-kielen määritelmään.

DrSchemen roskienkeruu itse ympäristöstä (eli tulkista) ajetuissa ohjelmissa on jostain syystä toteutettu niin, että se katkaisee hetkeksi kaiken muun suorituksen. Kyseessä ei ole yleensä kuin sekunnin murto-osa, mutta kyllä sen havaitsee nykimisenä esim. niissä mallipeleissä, mitä siellä tulee pari mukana.

Se nykiminen katoaa, oman kokemukseni mukaan, jos ohjelman kääntää C-kielen kautta erilliseksi exeksi (manuaali kertoo miten se käy). Kyseessä ei ole siis mikään pakollinen roskienkeruun tai Schemen rajoitus, vaan DrSchemen tulkkiosion toteutukseen liittyvä (kumma?) ratkaisu tekijöiltä.

Lisäksi monissa ohjelmissa ei ole syytä päivittää ruutua 30+ kertaa sekunnissa, kuten peleissä, joten ei niihin mitään näkyvää nykimistä tule tulkattuinakaan. (Voisin vielä mainita, että Python, Ruby ja Java käyttävät myös roskienkeruuta.)

KoodiNoppa [04.04.2007 16:21:19]

#

Kiitos tiedosta. Eli siis se roskienkeruu on vain DrSchemessä? Voiko sitä kytkeä millään muulla tavalla pois?

Pekka Karjalainen [04.04.2007 20:05:35]

#

Roskienkeruu on aina päällä. Jos käytät DrSchemeä tulkkina, se voi joskus häiritä pikkuisen. Silloin ohjelman kääntäminen C-kielen kautta yleensä auttaa. (Voin antaa tästä esimerkin joku päivä.)

Tulkki on kuitenkin erinomainen ympäristö kokeilla ja opetella kieltä. Siksi ei kannata nyt vielä välittää roskienkeruusta juuri mitään. Älä vain yritä rakentaa aivan valtavia tietorakenteita muistiin, koska kyllä se silloin loppuu kesken :-)

Schemen arvo on siinä, että se on korkean tason joustava kieli, jota käyttäessä ei tarvitse huolehti matalan tason asioita, kuten tarkasta muistinhallinnasta. Se on hyvä, jos koneen muisti ja tehot riittävät. Mutta joskus toki tarvitaan esim. C++:aa, että voidaan hallita muistia tarkasti ja saadaan kaikki nopeus irti.

Schemellä on oma arvonsa ja C++:lla oma. Paras työkalu kuhunkin tehtävään riippuu tehtävästä.

Pekka Karjalainen [08.04.2007 14:13:05]

#

DrSchemen mukana tulee siis mzc-niminen kääntäjä, joka kääntää natiiviksi C-kielen kautta. Se käyttää komentoriviltä samaa C-kääntäjää, jolla DrScheme on itse käännetty. (Se on kirjoitettu Schemellä itsekin, mutta käännös on siis kaksivaiheinen.)

Exen voi tehdä optioilla --exe tai --gui-exe, jälkimmäinen ikkunoiville sovelluksille. Siitä on manuaalissa asiat.

Tämä vaadittu C-kääntäjä on MS:n Visual C++:n mukana tuleva kääntäjä cl.exe Windowsissa. Linuxissa on helpompaa, koska gcc on vakiona. Pitää siis olla asennettuna esim. Visual C++ Express ja mzc.exe:n pitää löytää vaadittava ohjelma polusta (PATH).

Helpoiten tämän saa aikaan, kun ajaa mzc:n komentoriviltä sen jälkeen, kun käynnistää Visual Studio 2005 Command Prompt -nimisen oikopolun, jonka tuo Express tekee asennuksen yhteydessä. Sen jälkeen mzc toimii komentoriviltä oikein.

Tarkat ohjeet ovat manuaalissa, paitsi tämän PATHin kanssa värkkäys. Voin myös kertoa vaihe vaiheelta esimerkin kanssa, jos joku kysyy.

Ehkä tämä ei ole niin yleisesti kiinnostava asia. Suosittelen, että KoodiNoppa voi mailata minulle (osoite profiilissa), jos haluaa tukea jonkin asian kanssa. ( ja se kääntäminen natiiviksi on paikallaan vain ohjelmissa, joissa on pakko saada tehoa irti kunnolla.)

Luultavasti mielenkiintoisempaa asiaa DrSchemen parissa on esim. sen mukana tulevan Web-serverin kokeileminen. Se on aika näpsäkkä vekotin minun mielestäni. Siitä saa ideoita.

Varsinainen pointti on tietenkin se iki-ihana SICP-kirja :-)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta