C ja Cohjelmointikielten kehitys Johdanto Ckielen juuret Ckielen

  • Slides: 18
Download presentation
C- ja C++-ohjelmointikielten kehitys • • • Johdanto C-kielen juuret C-kielen kehitys C++-kielen synty

C- ja C++-ohjelmointikielten kehitys • • • Johdanto C-kielen juuret C-kielen kehitys C++-kielen synty Nykyaika

Johdanto - C • • Sai alkunsa 1970 -luvun alussa Perustuu B- ja BCPL-kieliin

Johdanto - C • • Sai alkunsa 1970 -luvun alussa Perustuu B- ja BCPL-kieliin Pääsuunnittelijana Dennis Ritchie (Bell Labs) Suosituksi Unixin suosion myötä 1980 -luvun alussa • Yksinkertainen, koneläheinen • Edelleen käytössä

Johdanto - C++ • Kehitys alkoi 1979 • Pääsuunnittelijana Bjarne Stroustrup • Lisää C-kieleen

Johdanto - C++ • Kehitys alkoi 1979 • Pääsuunnittelijana Bjarne Stroustrup • Lisää C-kieleen ohjelmointia helpottavia ja uusia ohjelmointitekniikoita tukevia ominaisuuksia • C olennaisilta osin C++: n ”alijoukko” • Kehitys jatkuu edelleen…

Esimerkki C-kielestä #include <stdio. h> main() { printf ("Hello World!n"); }

Esimerkki C-kielestä #include <stdio. h> main() { printf ("Hello World!n"); }

C-kielen juuret • Bell Labs alkoi kehittää uutta käyttöjärjestelmää 1968 • Ken Thompson ohjelmoi

C-kielen juuret • Bell Labs alkoi kehittää uutta käyttöjärjestelmää 1968 • Ken Thompson ohjelmoi DEC PDP-7: lle alkeellisen ”Unixin” DEC PDP-7: 18 bittinen 8 K muisti $60, 000 (1965) Kehityskäytössä Bell Labsissa

Juuret – B-kieli • Uuteen käyttöjärjestelmään tehty ohjelmointikieli • Pohjana BCPL (Martin Richards, MIT)

Juuret – B-kieli • Uuteen käyttöjärjestelmään tehty ohjelmointikieli • Pohjana BCPL (Martin Richards, MIT)

Juuret – B-kieli • Tyypitön (yksityyppinen (solu, cell)) • Vei liikaa tilaa PDP-7: n

Juuret – B-kieli • Tyypitön (yksityyppinen (solu, cell)) • Vei liikaa tilaa PDP-7: n 8 kilon muistista • Bell Labs hankki uuden PDP-11: n • Uudella koneella B-kieli osoittautui käytännöllisemmäksi kuin assembler DEC PDP-11: 16 bittinen (DEC: n ensimmäinen ja ainoa) 24 K muisti $10, 800 (1970) Monen henkilön kehityskäytössä Bell Labsissa

Juuret – Ongelmat B: n kanssa • Yksi tietotyyppi: PDP-7: ssä 18 -bittinen, PDP-11:

Juuret – Ongelmat B: n kanssa • Yksi tietotyyppi: PDP-7: ssä 18 -bittinen, PDP-11: ssä 16 -bittinen sana Merkkijonojen käsittely Liukuluvut

C-kielen kehitys • Dennis Ritchie alkoi kehittämään B: stä NB: tä • Kaksi tietotyyppiä,

C-kielen kehitys • Dennis Ritchie alkoi kehittämään B: stä NB: tä • Kaksi tietotyyppiä, merkki ja kokonaisluku (char ja int) • Rakenteet (struct) • Uudet loogiset operaattorit (& && | ||) • Uusi osoitinmekanismi

C-kielen kehitys • Vuoteen 1973 mennessä tärkeimmät ominaisuudet valmiit • Kielen nimeksi C •

C-kielen kehitys • Vuoteen 1973 mennessä tärkeimmät ominaisuudet valmiit • Kielen nimeksi C • Kehitykseen osallistui Bell Labsissa muitakin kuin Dennis Ritchie • C-kieleen esiprosessori • Siirrettävyys, yhteensopivuus • Unix kirjoitettu osittain C-kielellä 1973

C-standardi • 1978 Dennis Ritchie ja Brian Kernighan: The C Programming Language • K&R

C-standardi • 1978 Dennis Ritchie ja Brian Kernighan: The C Programming Language • K&R C • Pitkään ainoa “virallinen” dokumentti C: stä • 1982 ANSI-komitea kehittämään C-standardia • 1989 ANSI C, 1990 ISO

C++ • Pääsuunnittelijana ja –toteuttajana tanskalainen Bjarne Stroustrup • Tavoitteena tehokas ja elegantti kieli

C++ • Pääsuunnittelijana ja –toteuttajana tanskalainen Bjarne Stroustrup • Tavoitteena tehokas ja elegantti kieli • C kieli säilynyt C++: n ”alijoukkona” BJARNE STROUSTRUP - Syntyi 1950 Aarhusissa, Tanskassa Lt. kand. 1975 Filosofian tohtoriksi 1979 AT&T: ssä vuodet 1979 - 2002 Texas A&M University 2002 -

Esimerkki C++-kielestä #include <iostream> int main() { std: : cout << "Hello, world!n"; return

Esimerkki C++-kielestä #include <iostream> int main() { std: : cout << "Hello, world!n"; return 0; } ____________________ #include <iostream> using namespace std; int main() { cout << "Hello, world!n"; return 0; }

C++ - Lähtökohdat • Tehokkuus, yksinkertaisuus, koneläheisyys • Ei korkeantason tietotyyppejä eikä metadataa (”housekeeping

C++ - Lähtökohdat • Tehokkuus, yksinkertaisuus, koneläheisyys • Ei korkeantason tietotyyppejä eikä metadataa (”housekeeping information”) • Oleellisesti yhteensopiva C: n kanssa • Tuki paremmille ohjelmointimenetelmille • Kielen yksinkertaisuus kääntäjän yksinkertaisuuden edellä

C++: n lisäykset C-kieleen Luokat: (Simula 67) • Tiedon abstrahointi ja piilottaminen • Modulaarisuus

C++: n lisäykset C-kieleen Luokat: (Simula 67) • Tiedon abstrahointi ja piilottaminen • Modulaarisuus • Operaattoreiden kuormitus Muuta: • Muuttujien dynaamiset tyyppimuunnokset • Dynaaminen muistinhallinta (new, delete) • Kuormitetut funktiot • Viitteet

C++ - standardi • 1987 alettiin suunnittelemaan Stroustrupin johdolla C++: lle ANSI-standardia • AT&T

C++ - standardi • 1987 alettiin suunnittelemaan Stroustrupin johdolla C++: lle ANSI-standardia • AT&T antoi periksi oikeuksistaan C++: aan • 1989 ANSI C++, 1990 ISO • Uusia ominaisuuksia: – – Nimiavaruudet Poikkeukset Kaavaimet (templates) Ajonaikainen tyypintunnistus (run-time type identification)

Nykyaika - C • Ei enää kovin käytännöllinen moniinkaan tarkoituksiin • Edelleen käytössä paljon

Nykyaika - C • Ei enää kovin käytännöllinen moniinkaan tarkoituksiin • Edelleen käytössä paljon C-kielellä kirjoitettuja ohjelmia • Käytännöllinen pienissä järjestelmissä

Nykyaika – C++ • • Yksi suosituimmista ohjelmointikielistä Tukee moderneja ohjelmointitekniikoita Koneläheinen, siirretävä Standardikirjastosta

Nykyaika – C++ • • Yksi suosituimmista ohjelmointikielistä Tukee moderneja ohjelmointitekniikoita Koneläheinen, siirretävä Standardikirjastosta löytyy apu korkeamman tason ohjelmointiin • Kehityksen pääpaino standardikirjastossa itse kielen sijaan