Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.

[es] :: Kernel i OS programiranje :: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.

[ Pregleda: 49941 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bolepks
Nis

Član broj: 233371
Poruke: 426
*.dynamic.isp.telekom.rs.



+1 Profil

icon U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.17.02.2013. u 23:10 - pre 135 meseci
U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl. Koliko je trajao njihov razvoj i koliko je ljudi bilo uključeno?
Ovo pitanje postavljam jer me interesuje koliko programera učestvuje na razvoju OS i koje jezike treba da znaju?
 
Odgovor na temu

burex
Software developer
Iterro
46°05'N 19°39'E

Član broj: 24964
Poruke: 987
*.suwireless.org.



+679 Profil

icon Re: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.18.02.2013. u 04:17 - pre 135 meseci
Windows - Određena količina Asemblera za x86, odnedavno i za ARM platformu (u formi Windows 8 RT), a u prošlosti za Itanium, DEC Alpha, MIPS i PowerPC. Programski jezik pored klasičnog assembly jezika koji je korišćen za većinu koda u Windowsu je C i C++.

Linux - Asembler za mnoooge procesorske platforme, i naravno C, u kome je Linux kernel napisan. Linus i dalje smatra da je C jedini dobar kandidat za Linux kernel. Ostatak GNU alata što čini Linux je pisan u raznoraznim jezicima.

MAC - MacOS classic je pisan u (naravno) Asembleru za Motorola 68000 procesore i PowerPC, a navodno su verzije do System 7 bile pisane u Pascalu. Kasnije se ubacio u priču C. OSX je u biti Unix ispod haube ("Darwin", tačnije), a on je takođe (kao i Linux) pisan u C, dok je ostatak OSX-a što ide preko njega pisan u C, C++ i Objective C.

Android - U pitanju je običan Linux, samo sa Google-ovim izmenama u kernelu i sopstvenim grafičkim okruženjem koje je pisano u C/C++ i javi (što nije teoretski deo samog OS-a).

Dakle, kao što se može primetiti, uvek se počinje od Asemblera. Asembler jeste, tako reći, neka vrsta programskog jezika, ali on se razlikuje od platforme do platforme. On je najtanja stvar što te razdvaja od procesora, a da ga možeš pročitati. Nećeš isti ASM kod pisati za smartphone koji radi sa ARM procesorom, i za klasičan kućni PC koji radi na x86 platformi. Sa asemblerskim komandama se direktno kontroliše procesor, i tu nema laganih metoda za jednostavan i brz rad, ali je potreban kako bi se podesio da procesor radi u režimu koji treba, da se (ako je dostupno) uključi memorijski kontroler, da se pokrenu neke hardverske komponente i sl. Sve se to može uraditi iz C-a, jer - bilo mi pisali u ASM ili u C, sve se svakako pretvara u mašinski kod, u gomilu nula i jedinica koji srljaju ka procesoru, ali opet će se morati pisati asemblerske komande u okviru C koda, tako da je na kraju sve isto, ili čak komplikovanije. Zbog toga se uglavnom počne sa ASM, pa tek kada se pokrene sistem onako kako ga mi želimo, možemo nastaviti i dalje da pišemo u asembleru, ili da nastavimo na nekom višem programskom jeziku kao što je to C. Razlog? U višim programskim jezicima se ne možemo izgubiti u našem kodu tako lako, možemo lakše implementirati ideje i algoritme, a kompajler koji pretvara naš kod u mašinski kod će lepo da optimizuje ono što smo napisali za procesor na kojem radimo.

Zašto baš C, C++, Pascal, i sl.? Pa, dotični jezici imaju mogućnost direktnog pisanja u memoriju, izvršavanja ASM komadi unutar sebe, korišćenja pokazivača, i kompajliraju se u mašinski kod, a ne u neki bytecode ili pseudokod, niti se interpretiraju. Ima još par jezika koji imaju slične mogućnosti, ali mogu sebi dati slobodu da kažem da nema OS developmenta danas ako ne znaš C (a ako znaš C dovoljno da napišeš OS, uglavnom ćeš znati i C++). Basic, Fortran, Cobol, C#, D, Python, Ruby, PHP, Java, itd. nemaju te mogućnosti, već služe za pravljenje aplikacija koje rade na samom OSu.

Koliko ljudi učestvuje na pravljenju OS-a?
Mnogo.

Pre je bilo dovoljno da Bill Gates, Paul Allen i jedan mali računarčić na stolu imaju seansu par nedelja, ili da Steve Wozniak malo pusti bradu da raste još više sa svojim drugarima dok Jobs gleda iza i češe lobanju, ili da jedan mali geek iz Seattle-a ima malo više vremena u svojoj firmici... Sada je malo drugačija priča. Tu je mnogo više različitog hardvera, različitih platformi, dokumentacije, zahteva za optimizacijom. Potreban je API. Potrebni su drajveri. Potrebna je kompatibilnost. Linus je slučajno uhvatio poslednji voz i poprilično je rmbao da bi napravio svoj klon Minixa, i nije ni mislio da će se koristiti u ovolikoj količini, ali je moralo mnogo njih da se uključi u priču da bi bio upotrebljavan danas i moralo je mnogo vode Dunavom proteći da bi ljudi primetili da Linux postoji kako bi pisali programe i drajvere za njega. Plus u njegovoj priči je što je u pitanju *nix sistem, pa je bilo mnogo lakše portovati programe, i njegov OS je bio za dž.

Ako želiš da napraviš samo mali OS sa par funkcija, dovoljan si samo ti... u suprotnom, ako želiš sam da napraviš novi Windows, zaboravi. Nije problem napisati kernel i pokrenuti računar, problem je sve ostalo. Windows, Linux i ostali nisu samo operativni sistemi, u pitanju su ekosistemi.
A man is smart. People are stupid.
 
Odgovor na temu

bolepks
Nis

Član broj: 233371
Poruke: 426
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.18.02.2013. u 15:42 - pre 135 meseci
Hvala na detaljnom odgovoru, koji bi morao da tražim u mnoštvo knjiga. Ja sam počeo da učim C već sam osnovu savladao, vremenom ću preći na C++ koji je po kazanju najkomplksniji i nakmoćniji programski jezik, a kasnije na Java.
Voleo bih da mi ti daš savet kojim redosledom da učim programske jezike i još nešto na kom razvojnom okruženju se programira u asembler-u?
 
Odgovor na temu

burex
Software developer
Iterro
46°05'N 19°39'E

Član broj: 24964
Poruke: 987
*.suwireless.org.



+679 Profil

icon Re: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.18.02.2013. u 19:49 - pre 135 meseci
Programski jezici ti u suštini nisu bitni, bitno je da znaš programirati.

U C-u pišeš "void funkcija() { ... }", a u Pascalu "procedure funkcija begin end;", a u PHP-u "function funkcija() { ... }".
Dakle, jezici su slični, sa svojim unikatnim vrlinama, manama i namenama, ali ono što ti treba da naučiš jeste koncept programiranja. Bulovu algebru, funkcije, tok rada programa, algoritmi raznorazni, petlje, racionalno korišćenje memorije i sl.

Ako želiš da se upoznaš sa programiranjem na taj način kao što bi radio u našim školama, predlažem obavezno C. U svakom slučaju će ti dobro doći bilo radio OSdev ili ne. Kasnije možeš preći na C#, Javu, pa i PHP ako želiš web programiranje, ili Python. C# pokušaj naučiti ako ti dosadi programiranje u konzoli, pa budeš želeo nabrzaka da napraviš neki grafički program.

Ako ti je za utehu, pravilnog redosleda nemaš. Ja sam recimo počeo sa Pascalom, pa (zbog manjka knjiga i kurseva) sam prešao na Basic, pa zatim na C, kasnije i C++, pa zatim sam se mlatio sa asemblerom, a posle toga sa PHP i sada malo sa C#, a puno sa JavaScript sa jQuery jer to tržište 'oće. Totalno čudan redosled, ali ipak nije bitan.

Ako želiš da kuckaš malo u asembleru, predlažem NASM. Kod ćeš pisati u Notepadu što dobijaš uz Windows, ili u Notepad2 ili Notepad++.
Za svaki programski jezik koji bi želeo da naučiš, u Google upiši npr. "C++ hello world". Hello World programi samo ispisuju "hello world" na ekran i to je to, ali ti pokazuje šta trebaš da uradiš da bi počeo sa radom u tom programskom jeziku.
A man is smart. People are stupid.
 
Odgovor na temu

bolepks
Nis

Član broj: 233371
Poruke: 426
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.18.02.2013. u 21:52 - pre 135 meseci
Hvala na odgovoru, ako ti nije problem pošto sam imao prilike da učim C za sada, jer možeš neke osnove u asebleru da navedeš na pr. neki jednostavan program kao Pozdrav svete, da bih malo upoznao sintaksu asemblera, bio bih ti zahvalan... Još jedna stvar me interesuje pošto vidim da se dosta razumeš, za mobilne telefone pr. samsung program fabrički ne android je rađen u kom jeziku to me isto ovih dana dosta interesuje, unapred hvala na odgovoru
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.18.02.2013. u 21:59 - pre 135 meseci
Citat:
neki jednostavan program kao Pozdrav svete, da bih malo upoznao sintaksu asemblera


Ha, ha, da ispišeš nešto u asembleru, to je već napredni kurs...
 
Odgovor na temu

burex
Software developer
Iterro
46°05'N 19°39'E

Član broj: 24964
Poruke: 987
*.suwireless.org.



+679 Profil

icon Re: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.19.02.2013. u 01:38 - pre 135 meseci
Citat:
Još jedna stvar me interesuje pošto vidim da se dosta razumeš, za mobilne telefone pr. samsung program fabrički ne android je rađen u kom jeziku to me isto ovih dana dosta interesuje, unapred hvala na odgovoru

Dobro pitanje, ali to je često tajna proizvođača. Nisu ga kuckali ručno u asembleru, to ti garantujem ;)
Uglavnom neka varijanta jezika C, i još usput ubace neke aplikacije pisane u Javi za mobilne uređaje.

Citat:
jer možeš neke osnove u asebleru da navedeš na pr. neki jednostavan program kao Pozdrav svete

http://en.wikipedia.org/wiki/List_of_Hello_world_program_examples
A man is smart. People are stupid.
 
Odgovor na temu

[es] :: Kernel i OS programiranje :: U kojim programskim jezicima su programirani OS kao Windows, Linux, MAC, Android i sl.

[ Pregleda: 49941 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.