"Ensimmäin kieli"

Haluaisin oppia jonkun ohjelmointikielen.
Olen ajatellu C ja ASM.
Tiedän että ASM on vaikea kieli, mutta jossain on sanottu, että se on helpompi oppia ekana kielenä kuin myöhemmin sitten. Tämän takia olen kääntynyt ASMin kannalle!

Mielipiteitä?
191716
Äänestä

Muut lukivat myös

Vastaukset 19

Vanhimmat

assemblerin opiskelu on täyttä hulluutta ekaksi kieleksi jos aikoo hyötyä taidoistaan tai tehdä jotain käytännöllisiä sovelluksia!!! ohjelmoinnin perusteet onnistuu parhaiten oikealla kielellä, esim visual basic, etkä saa näin huonoja vaikutteita ja tapoja mitä assembler on täynnä. c taas on ekaksi kieleksi liian vaikea.

opettele siis vb.

Äänestä
  • vb ? no cobol olisi parempi.

    Ja aloita assemblerilla, tutustu sen verran että tiedät mitä sillä tehdään, ja ymmärät siitä jonkin verran, vakavasti ei kannata opiskella, mutta jotain siitä pitää tietää.



    Vaihda sitten "oikeaan" kieleen C/C tai vastaava, etsi sitten optio joka näytää assembly listauksen, niin saat hyvän käsityksen mitä pinnan alla tapahtuu.

    Toinen vaihtoehto on java, python, joissa on "roskienkeruu" systeemi. Voi olla parempi opetella kieli jossa kaikki pitää vapauttaa. Yllätys voi olla melkoinen esim java koodari C maailmassa.

    Mikä ikinä kielesi onkaan opettele heti debuggerin käyttö, jo heti ensimäisestä "Hello, world" ohjelmasta.

    Äänestä


  • vb:llä kyllä voi helposti tehdä yksinkertaisia ohjelmia, mutta vb:stä ei hirveästi ole hyötyä muiden ohjelmointikielien suhteen.
    kannattaa aloittaa jollain helpolla silti. itse aloittelin delphillä ja sen loogisesta rakenteesta oli selkeästi hyötyä kun myöhemmin opetteli javaa ja c :aa.

    Äänestä

  • »visual basic, etkä saa näin huonoja vaikutteita ja tapoja mitä assembler on täynnä»

    Oiskohan nimenomaan juuri niinpäin, ettei vb:llä tosiaankaan kannata aloittaa ihmeellisten tapojen opettelua (ihan lähtien siitä että laskeminen alkaa ykkösestä:)

    Ei ihan oikeasti, vb on ohjelmointikielten joukossa sama kuin Windows käyttöjärjestelmissä: ihan omituinen tapaus, ilman järjen hiventäkään.

    Äänestä

  • > java, python

    Ne nyt on tuollaisia tulkkaavia roskakieliä a'la Quick Basic. Vai että Pyyttoni - HAHAAA!

    Äänestä

Assembly ja C ovat kummatkin aivan liian vaikeita ensimmäiseksi kieleksi. C on käsittämättömän iso ja monimutkainen kieli, ja sen opettelemiseen kokonaisuudessaan voi mennä vuosia. Assembly on taas niin matalan tason kieli, että sen opetteleminen vaatii hyvin tarkkoja ja syvällisiä tietoja prosessorin ja muistin toiminnasta, rekistereistä, tietokonearkkitehtuurista yleensäkin jne.

Suosittelen sinulle C:tä. Se on korkeamman tason kieli kuin assembly, mutta matalampi kuin C . Kun osaat C-kielen, voit kohtuullisen helposti siirtyä siitä joko ylemmäs C :aan tai sitten alemmas assemblyyn.

C-kielen hyvät puolet:

- Ehkä kaikista kielistä laajimmin tuettu. C-kääntäjiä löytyy käytännössä kaikille käyttöjärjestelmille ja laiteympäristöille.

- Monikäyttöinen. C:llä voi tehdä kaikkea mahdollista aina laiteohjaimista korkean tason graafisiin sovelluksiin.

- Riippumattomuus. C-ohjelmat eivät tarvitse toimiakseen mitään ulkopuolista tulkkia, frameworkia tai virtuaaliympäristöä (kuten esim. Java). Tämä on suuri etu silloin kun haluat tekemiesi ohjelmien toimivan muuallakin kuin omalla koneellasi.

- Keveys ja nopeus. C:llä tehdyt ohjelmat ovat suhteellisen pieniä, eivätkä kuluta paljoa muistia tai levytilaa. Mutta mikä parasta, ne ovat nopeita ja tehokkaita. Nopeus esim. Javaan verrattuna on joidenkin lähteiden mukaan jopa monikymmenkertainen.

Lisäksi C-ohjelmointi voi parhaimmillaan opettaa paljon käyttöjärjestelmän ja etenkin laitteiston toiminnasta, mikä auttaa siinä vaiheessa jos mahdollisesti haluaa siirtyä assemblyyn.

Äänestä

Suosittelen Javaa, koska samalla oppii väkisin myös oliot.

Äänestä

Ensin aloitat C:n opiskelun ja kun alkaa sujua alat pikkuhiljaa tutustumaan C :n lisä härpäkkeisiin.

Äänestä

olet tehnyt, niin opettele ALKEET assemblystä. SE EI OLE VAIKEA KIELI - onpahan vain sitä bitintalutusta ihtiään.





77 : for(it = start; it != end; it )

00161   8b 55 d8    mov    edx, DWORD PTR _start$[ebp]
00164   89 55 d0    mov    DWORD PTR _it$[ebp], edx
00167   eb 09       jmp    SHORT $L15672
$L15673:
00169   8b 45 d0    mov    eax, DWORD PTR _it$[ebp]
0016c   83 c0 01    add    eax, 1
0016f   89 45 d0    mov    DWORD PTR _it$[ebp], eax
$L15672:
00172   8b 4d d0    mov    ecx, DWORD PTR _it$[ebp]
00175   3b 4d f0    cmp    ecx, DWORD PTR _end$[ebp]
00178   74 23       je    SHORT $L15674

; 78 : cout

Äänestä


  • olla OSAAJA, niin kirjoitti:

    teet sen nytkin.

    PERUSTEISTA KAIKKI ALKAA.

    nyt "perusteita" on tullut paljon lisää.

    Äänestä

  • 80-luvulla kirjoitti:

    nyt "perusteita" on tullut paljon lisää.

    http://www.embedded.com/

    Jos haluatte olla OSAAJA.

    Äänestä

  • Ja taas tarjotaan pyyttonia. Naurettava kieli. Häviää jopa vb6:selle 10:0 tehokkuudessa ja ylipäätään kaikessa.

    - pyyttoni. HAHAA!

    Äänestä

  • tarjotaan.. kirjoitti:

    Ja taas tarjotaan pyyttonia. Naurettava kieli. Häviää jopa vb6:selle 10:0 tehokkuudessa ja ylipäätään kaikessa.

    - pyyttoni. HAHAA!

    Python häviää VB6:lle vain siinä, että VB6 tuli jo "valmiiksi" (vai pitäisikö sanoa, päätyi umpikujaan), eikä sen kehitystä enää jatketa.

    Äänestä

Objectpascalia käytetään windows -ympäristössä Delphissä, linuxissa nykyisin lähinnä FreePascal Lazarus -yhdistelmässä. Kaupallisista linuxtuotteista kyseeseen tulee vain Kylix, mutta sitä ei ilman linuxgurun taitoja saa uusissa linuxeissa toimimaan, uusin mihin sen saa edes pienellä virittelyllä, on Debian Sarge. Etchiin asennusyritys tuottaa n. 20 virheilmoitusta.

Delphi taas asentuu windowsiin ongelmitta. Lisäksi, Delphissä on mahdollisuus tehdä myös assemblerkielisiä aliohjelmia tähän tapaan:

function RdTsc64 : Int64; assembler;
asm
db 0fh, 31h // RDTSC -> EDX:EAX
end; // Delphissä 64- bit funktion tulos palautetaan rekisteriparissa EDX:EAX

tuota voi sitten kutsua aivan normaalin delphifunktion tapaan, vaikka onkin koodattu assemblerilla:

var
dT, A,B : Int64;
i : Integer;
begin
//
A := RdTsc;
//
for i := 1 to 1000000 do begin
asm
Nop;
Nop;
Nop;
Nop;
Nop;
Nop;
end;
end;

//
B := RdTsc;
//
dT := B - A;
// Aikaa kului dT kellojaksoa.

// Konsoliohjelmassa:
WriteLn('Aikaa kului ', dT:14, ' kellojaksoa.');

// gui -ohjelmassa:
Memo1.Lines.Add('Aikaa kului ' IntToStr(dT) ' kellojaksoa.');
// Gui -ohjelmassa joudut pudottamaan formille TMemo -komponentin, jos se on 1. TMemo formilla, se nimetään automaattisesti "Memo1", muussa tapauksessa muuta ylläolevaan Memo1:n tilalle ko. komponentin nimi.

end;

Kuten huomaat, yksi objectPascalin suurimmista eduista on koodin selkeys. Myöskään osoittimiin (Pointer) ei ole pakko tutustua heti ensimmäisenä, toisin kuin C -kielessä joissa ilman pointereita ei päästä alkua pidemmälle.

Toki Delphin ObjectPascalistakin pointerit löytyy, esim. näin:

var

A : Integer;
PA : ^Integer;

begin
PA := @A; // osoitin PA osoittaa nyt muuttujan A sisältöön.


end;

huomaa: jos käytät pointereita merkkijonojen yhteydessä, sinun tulee ymmärtää Delphin merkkijonototeutus hyvin! Muussa tapauksessa saat aikaan "mystisiä" virheitä viittaamalla vanhentuneisiin muistiosoitteisiin !

Harva nykyään tekee kokonaisia ohjelmia assemblerilla. Mutta assemblerin osaamisesta on silti hyötyä, esim. juuri hankalien virheiden selvittämisessä: esim Delphissä on debuggerissa tällainen:

View/ Debug Windows / CPU, jolloin pääset debuggaamaan ohjelmaa yksi konekielikäsky kerrallaan.

Lisäksi, kun olet oppinut ensin alkeet, niin assemblerin osaamisesta on se lisähyöty, että voit katsoa, millaista koodia kääntäjä mistäkin lauserakenteista tekee, eri ratkaisutavoilla voi olla huomattaviakin suorituskykyeroja.

Vaikket koskaan koodaisi kokonaista ohjelmaa assemblerilla, sen osaamisesta on muuta hyötyä myös muiden kielten yhteydessä (poikkeuksena Java, jota ei yleensä käännetä konekieleksi, vaan tavukoodiksi, jota tulkkaa Java Runtime).

Assemblerin avulla voit myös tutkia käännettyä C tai C -koodia. Joskus C -koodarit innostuvat määritelemään omia tyyppejä siinä määrin, ettei aina ole selvää se, milloin laskee yhteen kokonaislkuja, milloin liukulukuja... assembly -listauksesta näkee tämänkin selvästi.

Äänestä

python

Äänestä

Kommentoi aloitusta


mikä ? kirjoitti:

Haluaisin oppia jonkun ohjelmointikielen.
Olen ajatellu C ja ASM.
Tiedän että ASM on vaikea kieli, mutta jossain on sanottu, että se on helpompi oppia ekana kielenä kuin myöhemmin sitten. Tämän takia olen kääntynyt ASMin kannalle!

Mielipiteitä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu