Istorija razvoja objektno orijentisanih programskih jezika. Istorija programskih jezika. Strukturirano i modularno programiranje

Uvod

Napredak kompjuterska tehnologija odredio proces nastanka novih raznovrsnih znakovnih sistema za pisanje algoritama programskih jezika. Smisao pojavljivanja takvog jezika je pojednostavljenje programskog koda. Svakim danom naš svijet postaje mobilniji i informativniji. Više i više više kompjutera ušli u naš svakodnevni život i kako bismo olakšali našu komunikaciju s njima, kreira se novi softver koristeći različite programske jezike. Svrha ovog kursa je proučavanje istorije nastanka programiranja i osnovnih principa i pristupa kreiranju programskog jezika.

Međutim, ovaj jezik je uglavnom patio od nedostataka u brzini računanja i zloglasnog nedostatka bilo koje vrste automatizovanog kompajlera. Tako je ovaj jezik ponovo okovao programera za smetnje uzrokovane nijansama. hardver. Ovaj važan detalj postao bi korijen modernog savremenim jezicima programi koji se prvenstveno oslanjaju na automatizovano prevođenje sa jezika čitljivog čoveka u binarni mašinski kod. Ovaj važan trenutak u razvoju programskih jezika poslužio je kao prelazna tačka između primitivnog koda niskog nivoa i više težak jezik više visoki nivo.


DIO 1. Istorija programiranja. Osnovni principi i pristupi pri kreiranju programskih jezika

1.1 Početak istorije programiranja

Od davnina postoje pokušaji stvaranja uređaja koji ubrzavaju i olakšavaju proces proračuna. Još su stari Grci i Rimljani koristili uređaj sličan računima - abakus. Takvi uređaji bili su poznati i u zemljama Drevnog istoka. U XV veku. Njemački naučnici W. Schickard (1623), G. Leibniz (1673) i francuski naučnik B. Pascal (1642) stvorili su mehaničke računarske uređaje - preteče poznate mašine za sabiranje. Računari su se poboljšavali tokom vekova. Ali u isto vrijeme, koncept „programiranja i programiranja“ nije primijenjen.

Ovaj jezik je uglavnom razvijen za proračune visokog nivoa, kao što su zahtjevi za zvanične vojne projekte i projekte zračne navigacije. Stoga je ovaj jezik bio efikasan u obradi velikog broja matematičkih podataka. Jedan od ovih pravaca bilo je kreiranje programa koji bi mogli da obrađuju transakcije orijentisane na poslovanje. Međutim, ovaj jezik je imao i ograničenja tipa podataka, jer je bio ograničen samo na numeričke i tekstualne podatke.

Međutim, lako je uočiti da ga je Lispova nekonvencionalna sintaksa učinila visoko specijalizovanim i različitim jezikom. Napisan kao "Bexu-Naur Forma", ovaj sistem kodiranja je uključivao upotrebu dobro strukturirane gramatike. U stvari, bio je toliko uticajan da će algolski jezik uskoro "biti zamijenjen" mnoštvom "novih jezika koje je iznjedrio". Uprkos ozbiljnim ranim pokušajima u razvoju programskih jezika višeg nivoa, razvoj istih primarni jezici sa ograničenim poljem jedva je prodrla u polje tokom života prosečnog korisnika.

Početkom XIX veka. (1830) Engleski naučnik, profesor matematike na Univerzitetu Kembridž Čarls Bebidž, analizirajući rezultate obrade popisa stanovništva u Francuskoj, teorijski je istražio proces izvođenja proračuna i potkrepio osnove računarske arhitekture. Radeći na projektu analitičke mašine - "Mašine za izračunavanje razlika", C. Babbage je predvideo mnoge ideje i principe organizacije i rada savremenih računara, a posebno princip upravljanja programom i memorisanog programa. Zajednička strast prema nauci omogućila je naučniku i Adi Lovelace (1815--1852) dugogodišnju plodnu saradnju. Godine 1843. prevela je Menabrein članak s predavanja

Strukturirano i modularno programiranje

Međutim, to će se promijeniti s pojavom nove serije pragmatičnih jezika. Ovi novi jezici donijeli su sa sobom val standardnih računarskih koncepata koji će postati sastavni dio dizajna i implementacije jezika. kompjutersko programiranje. Međutim, određena ograničenja u ovom jeziku, kao što je nedostatak "dinamičkih nizova", potaknula su potragu za novim, naprednijim jezikom.

Kreirajte i koristite formule u Excelu

Ova rastuća praznina u srcu programske zajednice izrodila bi jedan od najutjecajnijih jezika svih vremena. "Modulacija" se direktno manifestovala u novoj računarskoj arhitekturi paradigme "objektno orijentisanog programiranja". Unutar ovog sistema, nekoliko "modula" će sadržati jedinstvene "funkcije", grupisane iskaze koji obavljaju određeni zadatak koji se lako može ponovo koristiti u mnogim programima. Ovi jezici su bili usredsređeni na jedan računski princip sa dve glavne grane.

C. Babbage, gdje je u obliku detaljnih komentara (po obimu premašuju glavni tekst) formulirala glavne principe programiranja analitičke mašine. Ona je razvila prvi program (1843) za Babbageovu mašinu, uvjerivši ga u potrebu korištenja izuma binarni sistem računajući umjesto decimalnog, razvio je principe programiranja koji uključuju ponavljanje istog niza naredbi pod određenim uvjetima. Ona je bila ta koja je predložila termine "radna ćelija" i "ciklus".

Ove "klase" služe kao šabloni za "objekte", koji su zamjenjive instance standardiziranog šablona. Na primjer, automobil se može smatrati "klasom", dok se dati automobil može smatrati "predmetom" jer ima različite atribute i ponašanja. Atributi ovih objekata su definisani u okviru posebnih varijabli koje se nazivaju varijable instance, dok su specifično ponašanje datog "objekta" definisano kao "metode" instance.

Ova upotreba modularnih "objekata" omogućila je programerima da pobjegnu od ponavljajućeg procesa redefiniranja pojedinačnih izjava za složene programe i, što je još važnije, omogućila im je da se manje fokusiraju na doslovnu sintaksu, a više na praktične aplikacije koje ovi jezici mogu koristiti za dizajn. . Pokrenuto revolucionarnim konceptom analitičkog motora Charlesa Babbagea, polje računarstva je pretrpjelo dramatične promjene kako bi se približilo današnjem.

A. Lovelace je sastavio prve programe za rješavanje sistema od dvije jednačine i izračunavanje Bernoullijevih brojeva koristeći prilično složen algoritam i predložio da će analitička mašina tokom vremena komponovati muzička djela, crtati slike i koristiti u praktičnim i naučnim aktivnostima. Vrijeme je potvrdilo svoju ispravnost i tačnost prognoza. Svojim radom A. Lovelace je polagala teorijska osnova programiranja i s pravom se smatra prvim svjetskim programerom i osnivačem naučnog programiranja.

U olakšavanju ove promjene, programski jezici su odigrali integralnu ulogu prevodeći prirodni ljudski jezik u bitove i bajtove koje kompjuteri mogu razumjeti. Međutim, usput, ovi programski jezici su prošli kroz svoj skup drastičnih promjena. Razumijevanjem izvanrednog putovanja kroz programske jezike, možemo bolje razumjeti dinamične i raznolike korijene računarske nauke, polja s aplikacijama koje se kreću od naučnog računarstva do rudarenja podataka do mobilne aplikacije i šire.

mašinski kod. asembler

Ferguson, Andrew. "Istorija kompjuterskih programskih jezika". Brown University - računarstvo. Bože, Sebastiane. " Pripovijetka programski jezici". Predavanje. Technical University Minhen. Da li je istina da programeri još uvijek ponekad koriste binarni kod napisati određene dijelove programa?

Godine 1854. engleski matematičar George Boole objavio je knjigu "Zakoni misli" u kojoj je razvio propozicionu algebru - Bulovu algebru. Na osnovu toga ranih 80-ih. 19. vek izgrađena je teorija relejno-kontaktnih kola i projektovanje složenih diskretnih automata. Algebra logike imala je višestruki uticaj na razvoj računarske tehnologije, kao alat za razvoj i analizu složene šeme, alat za optimizaciju velikog broja logičkih elemenata, od kojih hiljade čine moderni računar.

Da li je testiranje programskog jezika povezano sa offline računarstvom? Kako testirate funkciju programa koji su povezani na neuronske mreže? Da li se testiranje programa razlikuje između svakog programskog jezika ili postoji standardna metoda za testiranje funkcionalnosti?

Primjena strukturnih i objektno orijentiranih metoda programiranja

Da li verifikacija softvera praktikuje i defanzivno programiranje? Postojale su bukvalno hiljade programskih jezika, od kojih su mnogi izgubljeni u istoriji. Ova istorija programskih jezika takođe govori o razvoju računarskog hardvera, računara operativni sistemi, igre i tehnologije. Igre su uključene jer se često veliki napredak u kompjuterskom hardveru i softverskoj tehnologiji prvi put pojavio u igrama.

Ideje C. Babbagea implementirao je američki naučnik G. Holerit, koji je, koristeći izgrađenu računsku i analitičku mašinu i bušene kartice, za tri godine obradio rezultate popisa stanovništva SAD iz 1890. godine. U automobilu je prvi put korištena struja. Hollerith je 1896. godine osnovao firmu za proizvodnju računarskih mašina za bušenje i bušenih kartica.

Početak istorije programiranja

Antikiterski mehanizam koristio je sistem od 37 zupčanika za izračunavanje položaja Sunca i Mjeseca kroz zodijak u egipatskom kalendaru, a moguće i fiksnih zvijezda i pet planeta poznatih u antici u bilo koje vrijeme u budućnosti ili prošlosti. Sistem zupčanika je dodao i oduzeo ugaone brzine da bi izračunao diferencijale. Mehanizam u Antikiteri mogao bi precizno predvideti pomračenja i mogao bi proizvesti tačne astrološke karte za važne vođe.

Ovaj uređaj se odlikovao diferencijalom, koji je kasnije korišten u moderno vrijeme za izradu analognih kompjutera sredinom 20. veka. Ovo važno djelo je najstarija sačuvana lingvistička knjiga koja predstavlja ideju metarula, transformacija i rekurzija, a sve to ima važnu primjenu u informatici.

Godine 1936. engleski matematičar A. Turing uveo je koncept Turingove mašine kao formalno usavršavanje intuitivnog koncepta algoritma. Naučnik je pokazao da se bilo koji algoritam u određenom smislu može implementirati na Turingovu mašinu, i stoga dokazao mogućnost izgradnje univerzalnog računara. Obje mašine se na sličan način mogu snabdjeti početnim podacima o problemu koji se rješava i programom za njegovo rješavanje. Turingova mašina se može smatrati idealizovanim modelom glavnog računara.

Inke su kreirale digitalne kompjutere koristeći džinovske razboje koji su vezivali i razvezivali čvorove na užetu. Ovi kompjuteri su omogućili centralnoj vladi da prati poljoprivredne i ekonomske detalje njihovog ogromnog carstva. Španci su uništili sve kompjutere Inka osim jednog, vjerujući da je jedini način na koji mašine mogu obezbijediti detaljne informacije, su satanske sprave za proricanje. IN poslednjih godina Arheolozi su utvrdili da je jedan preostali uređaj, iako u ruševinama, očigledno bio kompjuter.

U 40-im godinama. 20ti vijek mehaničku elementarnu bazu kompjutera počeli su zamjenjivati ​​električni i elektronski uređaji. Prve elektromehaničke mašine stvorio je u Njemačkoj K. Zuse (Ts-3, 1941) iu SAD pod vodstvom profesora sa Harvardskog univerziteta G. Aikena (MARK-1, 1944). Prvu elektronsku mašinu stvorila je u SAD grupa inženjera na čelu sa dr. J. Mauchlyjem sa Univerziteta Pennsylvania i diplomiranim studentom J. Ecksrtom (ENIAC - elektronski numerički integrator i kalkulator, 1946.). 1949. godine u Engleskoj je izgrađen EDSAC - prva mašina sa automatskom kontrolom programa, internom memorijom i drugim neophodnim komponentama modernih računara.

Charles Babbage je stvorio motor razlike i analitičku mašinu, koji se često smatra prvim modernim računarom. Prva programerka bila je Lady Ada, po kojoj je programski jezik Ada nazvan. Mašina za analizu bi bila programirana sa Jacquard bušenim karticama. Babbage je dizajnirao motor razlike. Lady Ada Lovelace je napisala program za analitičku mašinu koja je ispravno izračunala niz Bernoullijevih brojeva, ali nikada nije mogla da testira svoj program jer mašina nije bila napravljena.

George Boole je uveo ono što se danas zove Bulova algebra. Ova grana matematike bila je neophodna za stvaranje složenih kola u modernoj elektronici digitalni kompjuteri. Ovaj misaoni eksperiment igra važnu ulogu kvantna fizika i teorija informacija.

Logička kola računara razvijena su kasnih 1940-ih. J. von Neumann, G. Goldstein i A. V. Berks. Poseban doprinos ovom radu dao je američki matematičar John von Neumann, koji je učestvovao u stvaranju ENIAC-a. Predložio je ideju pohranjivanja upravljačkih komandi i podataka u memoriju mašine i formulisao osnovne principe za izgradnju modernih računara. Računari sa pohranjenim programom pokazali su se bržim i fleksibilnijim od prethodno izgrađenih.

Neki od najuspješnijih ranih računara bili su analogni računari, sposobni da brzo izvode složene računske probleme. Ali prava budućnost računarstva bila je digitalna, a ne analogna. Na osnovu tehnologije i matematike koja se koristi za telefonske i telegrafske komutacione mreže, istraživači su krenuli u izgradnju prvih elektronskih digitalnih računara.

Ispod su informacije o važnim doprinosima Von Neumanna. Teorija: Wolfgang Pauli izmišlja Paulijeve matrice, koje su osnova za Pauli-X, Pauli-J i Pauli-3 rješenja u kvantnom računarstvu. Shannon objavljuje The Mathematical Theory of Communication, uključujući Shannonovu teoremu kodiranja izvornog koda, koja postavlja ograničenja načina na koji se podaci mogu komprimirati.

1951. godine u SAD je pokrenuta prva serijska proizvodnja elektronskih mašina UNIVAC (univerzalni automatski računar). U isto vrijeme, IBM je započeo masovnu proizvodnju IBM / 701 mašine.

U SSSR-u su prvi autori kompjutera, izumljenog u decembru 1948. godine, I. S. Bruk i B. I. Rameev. A prvi sovjetski računar sa očuvanim programom stvoren je 1951. godine pod vodstvom S. A. Lebedeva (MESM - mala elektronska računska mašina). Godine 1953. počela je serijska proizvodnja mašina u Sovjetskom Savezu, od kojih su prve bile BESM-1, Strela.

Ovaj programski jezik je ručno preveden u mašinski kod. Kasnije se koristi na drugim računarima. Grace Hopper je u to vrijeme radila u Remington Randu. Identifikatori su bili ograničeni na šest znakova. Elegantna prezentacija matematičkih izraza, kao i relativno lak unos i izlaz.

Cilj njegovog razvoja bio je da se stvori programski jezik koji bi bio lak za učenje, pogodan za širok spektar aplikacija, nezavisno od mašine i koji bi omogućio formulaciju složenih matematičkih izraza na sličan način kao regularna algebarska notacija. Iako je i dalje skoro efikasan kao asemblerski jezik.

Pojavom digitalnih programski upravljanih mašina, rođeno je novo područje primijenjene matematike - programiranje. Kao polje nauke i struke, nastao je 1950-ih godina. U početku su programi pisani ručno na mašinskim jezicima (mašinski kodovi). Programi su bili glomazni, njihovo otklanjanje grešaka je oduzimalo mnogo vremena. Da bi se pojednostavile tehnike i metode za kompajliranje i otklanjanje grešaka u programima, kreirani su mnemonički kodovi koji su po strukturi bliski mašinskom jeziku i koriste simboličko adresiranje. Asembleri su preveli program napisan mnemoničkim kodom u mašinski jezik i, proširen makroima, koriste se i danas. Nadalje, kreirani su autokodovi koji se mogu koristiti na različitim mašinama i omogućavaju razmjenu programa. Autokod je skup pseudo-komandi za rješavanje specijalizovanih problema, kao što su nauka ili inženjering. Za takve zadatke postoji razvijena biblioteka standardnih programa.

Jezik je primljen od Grace Murray Hopper. Prva runda kompilacije dala je dijagnostiku nedostajućeg zareza. Drugi pokušaj je bio uspješan. Vlada SAD je kao odgovor na lansiranje stvorila Grupu za napredne studije Sovjetski savez Sputnjik. Objavljena je teorijska definicija jezika.

Interes za umjetnu inteligenciju koji se prvi put pojavio u sredini lingvista bio je za obradu prirodnog jezika, dok su psiholozi bili zainteresirani za modeliranje i ekstrakciju ljudskih informacija. Matematičari su bili više zainteresovani za automatizaciju procesa dokazivanja teoreme. Zajednička potreba svih ovih aplikacija bila je metoda za omogućavanje kompjuterima da obrađuju simboličke podatke u listama.

Sve do kraja 1950-ih. Glavni element kompjuterskog dizajna bile su elektronske cijevi ( 1. generacija). U ovom periodu razvoj ideologije i tehnologije programiranja je bio zasluga dostignuća američkih naučnika J. von Neumanna, koji je formulisao osnovne principe izgradnje računara, i J. Backusa, pod čijim je rukovodstvom stvoren Fortran (prevod formula). 1954. godine - prvi programski jezik visokog nivoa, koji se do danas koristio u raznim modifikacijama. Tako su 1965. godine na Dartmouth koledžu D. Kameni i T. Kurtz razvili pojednostavljenu verziju Fortrana - Basic. 1966. godine, komitet Američkog udruženja za standarde (ASA) razvio je dva jezička standarda: Fortran i Osnovni Fortran. Koriste se i dalje modifikacije jezika (npr. 1970, 1990).

Angažovan je da stvori skup zahtjeva za obavljanje simboličkih proračuna. Prvi pokušaj je diferencijacija algebarskih izraza. Ovaj početni eksperiment proizveo je listu zahtjeva za jezik, prije svega rekurziju i kondicionale.

Njegova motivacija je bila da razvije jezik za obradu lista za veštačku inteligenciju. Neil Ziering, Vodič za jezik, Univerzitet u Mičigenu. Deklaracije varijabli se rijetko koriste. . Odjeljci su podijeljeni na sekcije. Naglašen detaljan stil dizajniran da olakša poslovnim menadžerima čitanje programa.

Dostignuća u oblasti elektronike i mikroelektronike omogućila su zamenu baze računarskih elemenata naprednijom. U kasnim 1950-im glomazne vakuumske cijevi zamjenjuju se poluvodičima (minijaturni tranzistori). Pojavljuju se kompjuteri druge generacije; zatim, oko 10 godina kasnije, kompjuteri treće generacije na integrisanim kolima; za još 10 godina - kompjuteri četvrte generacije na velikim integrisanim kolima (LSI). u Japanu 1990-ih. realizovani su projekti kompjutera pete generacije u kojima su korišćena dostignuća u oblasti veštačke inteligencije i bioelektronike. Ako je količina memorije sa slučajnim pristupom (RAM) jedne od najboljih domaćih mašina 1960-ih. M-20, nastao pod vodstvom S.A. Lebedeva 1958. godine, imao je 4096 riječi (8 Kb) i brzinu od 20 hiljada operacija u sekundi, tada moderne personalne računare karakterizira RAM od desetine MB i brzina od stotine miliona operacija u sekundi što vam omogućava da rešite najsloženije probleme.

A.A.Ljapunov je 1953. godine predložio metodu operatorskog programiranja, koja se sastojala u automatizaciji programiranja, a algoritam za rješavanje problema predstavljen je kao skup operatora koji čine logičku shemu problema. Šeme su omogućile da se rasparča glomazan proces sastavljanja programa, čiji su dijelovi sastavljeni prema formalnim pravilima, a zatim spojeni u cjelinu. Da bi se testirale ideje operatorske metode u SSSR-u 1954. godine razvijen je prvi programski program PP-1, a 1955. napredniji - PP-2. Godine 1956. razvijen je softver BESM, 1957. - PSV, 1958. - za mašinu Strela.

U Sjedinjenim Državama, 1954. godine, počeo je da se primenjuje algebarski pristup, koji se, u suštini, podudara sa metodom operatora. Godine 1956. IBM Corporation razvila je univerzalni softver Fortran za automatsko programiranje na IBM/704 računaru.

Tokom ovog perioda, sa akumulacijom iskustva i teorijskog razumijevanja, programski jezici su se poboljšali. Godine 1958-1960. ALGOL je nastao u Evropi, što je dovelo do čitavog niza jezika sličnih Algolu: Algol W, (1967), Algol 68, Pascal (N. Wirth, 1970), C (D. Ritchie i B. Kernighan, 1972) , Ada (predvođen J. Ishbia, 1979), C++ (1983).
Godine 1961-1962 J. McCarthy na Massachusetts Institute of Technology stvorio je funkcionalni programski jezik Lisp, koji je otvorio jedan od alternativnih pravaca u programiranju koje je predložio J. von Neumann.

Početkom 1970-ih postojalo je više od 700 jezika visokog nivoa i oko 300 kompajlera za automatizaciju programiranja.

1.2 Strukturirano i modularno programiranje

Godine 1965. Italijani Bohm i Giacopini su predložili korištenje praćenja, grananja i petlje kao osnovnih algoritamskih elemenata. Gotovo u isto vrijeme, holandski naučnik E. Dijkstra, koji je postavio temelje strukturiranog programiranja, došao je do sličnih zaključaka. 1970-ih godina ova metodologija se oblikovala, a IBM je najavio njenu upotrebu u razvoju softver„Napredne metode programiranja“, čija je jedna od komponenti bila tehnologija strukturiranog programiranja odozgo prema dolje, koja se zasniva na sljedećem:

  • složeni zadatak je podijeljen na jednostavne, funkcionalno kontrolirane zadatke, svaki zadatak ima jedan ulaz i jedan izlaz; kontrolni tok programa sastoji se od skupa elementarnih funkcionalnih podzadataka;
  • kontrolne strukture su jednostavne, tj. logički zadatak treba da se sastoji od minimalnog, funkcionalno kompletnog skupa prilično jednostavnih upravljačkih struktura;
  • program se razvija u fazama, u svakoj fazi se rješava ograničen broj precizno postavljenih zadataka.

Jasno artikulirani temelji za razvoj odozgo prema dolje, strukturirano kodiranje i kontrola od kraja do kraja omogućili su prelazak na industrijske metode razvoja softvera.

Razvoj je primljenmodularno programiranje , čija je osnova sljedeća:

* funkcionalna dekompozicija (particioniranje) zadatka na nezavisne podzadatke - module povezane samo ulaznim i izlaznim podacima;

* modul je "crna kutija" koja vam omogućava da razvijate dijelove programa jednog projekta na različitim jezicima programiranje, a zatim korištenje alata za montažu da ih kombinuju u jedan modul za pokretanje;

* mora postojati jasno razumijevanje svrhe svih modula zadatka i njihova optimalna kombinacija;

* Koristeći komentare, treba opisati svrhu svih varijabli modula.

U periodu 1970-1980-ih. razvoj teorijskih istraživanja formalizirao je programiranje kao samostalno naučna disciplina bavi se metodama razvoja softvera (SW).

Programer i biznismen Bil Gejts (Gates William Henry, str. 1955.) igrao je važnu ulogu u istoriji razvoja industrijskog programiranja. Gejts i njegov srednjoškolski drug Pol Alen osnovali su kompaniju za analizu saobraćaja Crap-O-Date i koristili računare sa 8008 mikroprocesorom, prvim od Intelove poznate linije mikroprocesora, za obradu podataka. Kao student na Univerzitetu Harvard, 1975. godine, zajedno sa Allenom, napisao je tumača za računar Altair (kompanija M1TS), program koji prevodi sa programskog jezika u jezik mašinskog koda.

Profesionalno programiranje dostiglo je nivo tehnologije.

Metode razvoja softvera sintetiziraju:

* metode inženjerskih proračuna za procjenu troškova i izbor rješenja;

* matematičke metode za izradu algoritama;

* metode upravljanja za utvrđivanje zahtjeva za sistem, obračun situacija, organizovanje rada i predviđanje.

1.3 Objektno orijentirano programiranje

Zamijenjeno strukturirano programiranje početkom 1990-ih. došaoobjektno orijentirano programiranje -- OOP. Može se posmatrati kao modularno programiranje novog nivoa, kada umesto uglavnom nasumične, mehaničke kombinacije procedura i podataka, njihova semantička povezanost postaje glavna stvar. Objekt se smatra logičkom jedinicom koja sadrži podatke i pravila (metode) za njihovu obradu. Objektno orijentisani jezik stvara "programsko okruženje" u obliku skupa nezavisnih objekata, od kojih se svaki razlikuje po svojim svojstvima i načinima interakcije sa drugim objektima. Programer definira skup operacija, opisujući strukturu razmjene poruka između objekata. On u pravilu "ne gleda" unutar objekata, ali ako je potrebno, može mijenjati elemente unutar objekata ili formirati nove.

OOP se zasniva na tri osnovna principa(enkapsulacija, nasljeđivanje, polimorfizam) koji objektima daju nova svojstva.

  1. Enkapsulacija je kombinacija podataka i algoritama za njihovu obradu u jedinstvenu cjelinu. Podaci ovdje su polja objekta, a algoritmi su metode objekta.
  2. Nasljeđivanje je svojstvo objekata da generiraju svoju djecu. Objekat potomak automatski nasljeđuje sva polja i metode, može dopuniti objekte novim poljima, zamijeniti i dopuniti metode.
  3. Polimorfizam je svojstvo povezanih objekata da rješavaju slične probleme na različite načine.

Ideju korištenja softverskih objekata godinama su istraživali različiti znanstvenici. Simula-67 se smatra jednim od prvih jezika ovog tipa. A 1972. godine pojavio se Smoltalk jezik koji je razvio Alan Kay, koji je odobrio status OOP.

On sadašnjoj fazi razvijaju se okruženja alata i sistemi vizuelnog programiranja za kreiranje programa na jezicima visokog nivoa: (Turbo Pascal, Delphi, Visual basic, C++Builder, itd.).

1.4 Programiranje komponenti

Razvoj osnovnih principa objektno orijentisanog programiranja dobio je pojavom komponentnog programiranja (CP). KP je dinamičan proces bez strogih pravila, koji se izvodi uglavnom za distribuirani razvoj (programiranje) distribuiranih sistema. Suština KP-a je da nezavisni dizajneri, programeri razvijaju nezavisne komponente (odvojene delove) jednog sistema, raspoređene na mnogo čvorova velike mreže. Ovi dijelovi mogu biti u vlasništvu različitih vlasnika i njima upravljati organizacijski nezavisni administratori.

U CP, komponenta se smatra spremištem (u obliku DLL ili EXE datoteka) za jednu ili više klasa. Klase se distribuiraju u binarnom obliku, a ne kao izvorni kod. Omogućavanje pristupa metodama klase vrši se preko strogo definisanih interfejsa prema protokolu. Ovo eliminiše problem nekompatibilnosti kompajlera, dozvoljavajući klasama da menjaju verzije u različitim aplikacijama bez ponovne kompilacije. Interfejsi definiraju sadržaj usluge i posrednik su između klijenta i servera.

Microsoft je kreirao tehnologije za distribuirani razvoj distribuiranih sistema, kao što su COM (Component Object Model), COM+, .NET. Razvijene su i druge tehnologije: CORBA (OMG konzorcijum), JAVA (kompanija Sun Microsystem) itd.

Ideja da se funkcije kompajlera algoritama i programera prebace na računare dala je nove mogućnosti za razvoj oblasti veštačke inteligencije koja je trebalo da kreira metode za automatsko rešavanje intelektualnih problema. Formalizacija znanja kojima raspolažu profesionalci u različitim oblastima, njihova akumulacija u bazama znanja implementiranih na računaru, postala je osnova za kreiranje ekspertnih sistema. Računari 5. generacije, inteligentni roboti i ekspertni sistemi rade na bazi znanja. Ovi sistemi ne samo da mogu pronaći rješenje za određeni problem, već i objasniti kako je do njega došlo. Postalo je moguće manipulisati znanjem, imati znanje o znanju – metaznanje. Znanje pohranjeno u sistemu postalo je predmet njenog vlastitog istraživanja.

Nezavisnost jezika visokog nivoa od računara uključila je stručnjake iz različitih grana znanja u oblasti algoritamizacije zadataka, omogućila je korišćenje brojnih standardnih standardnih programa, a programerima da eliminišu dupliranje u pisanju programa za razne vrste računara i značajno povećavaju produktivnost rada.

U kasnim 1980-im U Japanu i SAD-u su se pojavili projekti kompjutera pete generacije, implementirani krajem 1990-ih. Napredak u programiranju povezan je sa napretkom u arhitekturi računarskih sistema, odstupanjem od von Neumann koncepta, sa napretkom u oblasti veštačke inteligencije. Revolucionarne promjene u bazi elemenata kompjutera povezane su s istraživanjima u bioelektronici.

U sadašnjoj fazi programiranje uključuje skup pitanja vezanih za pisanje specifikacija (problemskih uslova), projektovanje, kodiranje, testiranje i funkcionisanje računarskih programa. Savremeni računarski softver ima složenu strukturu i uključuje, po pravilu, operativne sisteme, prevodioce sa raznih jezika, tekstualni programi kontrola i dijagnostika, set servisnih programa. Na primjer, japanski naučnici za dizajniranje softverskih sistema razvijaju ideju o "prstenastoj strukturi" od šest nivoa:

  1. (interni) programi za hardver;
  2. OS kernel;
  3. programi sučelja;
  4. dio OS-a koji je orijentiran na korisnika;
  5. sistemi za programiranje;
  6. (eksterni) korisnički program.

Prema ovim istraživačkim projektima, planira se pojednostaviti proces kreiranja softverskih alata automatizacijom sinteze prema specifikacijama početnih zahtjeva u prirodnim jezicima. Nedavno je u Japanu bilo moguće napraviti robota prevodioca koji prevodi engleski govor na japanski i obrnuto, radeći to ljudskim glasom. U svim razvijenim zemljama rade na softverskim paketima za izradu robota. Za mnoga područja ljudske aktivnosti.

1.5 Primjena tehnika strukturiranog i objektno orijentiranog programiranja

Široka upotreba strukturnih i objektno orijentisanih metoda programiranja pomoću grafičkih modela kombinovana je sa nedostatkom alata. To je dovelo do potrebe za softverom i tehnološkim alatima posebne klase - CASE (Computer Aided Software Engineering), koji implementiraju tehnologiju za kreiranje i održavanje softvera. razni sistemi. Preduslovi za pojavu CASE tehnologija pojavili su se krajem 1980-ih. U početku se termin "CASE" primjenjivao samo na pitanja automatizacije razvoja softvera, sada softverski inženjering ima šire značenje za razvoj sistema općenito. CASE tehnologije uključuju razvoj i implementaciju jezika visokog nivoa, strukturnih i modularnih metoda programiranja, dizajnerskih jezika i njihovih alata za podršku, formalnih i neformalnih jezika za opisivanje sistemskih zahtjeva.

Početkom XX veka. stvaranjem mehaničke pisaće mašine postalo je moguće kreirati javno dostupan štampani tekst, iako je unošenje izmena u takav tekst (ispravljanje grešaka) bio prilično naporan posao. Zatim su došle električne pisaće mašine. Pojavom personalnih računara priprema štampanog teksta postala je mnogo savršenija. U posljednje dvije decenije prošlog stoljeća već su razvijeni mnogi softverski paketi za obradu teksta, koji su se prvo nazivali uređivači teksta, a kako su se širili funkcionalnost-- programi za obradu teksta.

Početkom ovog veka, procesori teksta su postali napredniji. Uz jednostavnije (na primjer, Professional Write itd.), pojavili su se moćni kao što su MS WinWord, WordPerfect WordStar 2000 itd. Od domaćih, rasprostranjen je procesor teksta Lexicon.

Od ranih 1980-ih procesori proračunskih tablica počeli su se koristiti za pripremu i obradu numeričkih informacija. Godine 1979. D. Bricklin je predložio prvi program za tabelarne proračune VisiCalc. 1981. razvijen je sistem SuperCalc od Computer Associates, 1982. Multiplan od Microsofta, zatim - paket za IBM PC Lotusl-2-3 od Lotus Development-a, rusifikovani ABAK paketi, DRAKON i dr. 1985. Microsoftov Excel tabelarni procesor pojavio, u početku za PC Macintosh i kasnije za IBM PC kompatibilne. Ovaj procesor je razvijen paralelno sa Windows OS-om, njegove verzije su uključivale sve karakteristike grafičkog interfejsa, do verzija Excel 5.0 kao Windows 3.1 aplikacije, Excel 7.0 kao Windows 95 aplikacije, itd. Poslednjih godina dosta dosta toga. kreirani su sistemi za pripremu tabela, dokumenti, tj. tabele, procesori za tabelarne proračune (na primer, Corel Quattro 6.0 od Corel Co, Lotus 5.0 od Lotus Development Co, Office Professional za Windows od Microsofta i DR-) - Ali najčešće korišćeni elektronski Excel tabele.

Razvijen je veliki broj standardnih sistema za upravljanje relacionim bazama podataka - DBMS (npr. MS Access, paradox, itd.), na osnovu kojih se grade relacione baze podataka u različitim predmetnim oblastima.

Za mnoge organizacije (posebno one za upravljanje) razvijeni su takozvani uredski paketi u kojima aplikacije rade na bazi jednog OS-a, uključujući sisteme za rad sa razne vrste informacije. Na primjer, kreirani su paketi aplikacija za Windows OS (MS Office, WordPerfect Office od Corel, StarOffice od SunMicrosystems, itd.), koji uključuju softverske alate za obavljanje svih vrsta funkcija obrade informacija. Na primjer, MS Office uključuje poboljšanja iz godine u godinu (u zavisnosti od najnoviju verziju Windows OS) alati za obradu teksta (MS Word), grafika (Photo Draw) i prezentacije (PowerPoint), tabele (Excel), baze podataka (Access), Email(Outlook), rad tokom svjetske mreže(FrontPage), kreiranje zvučnih isječaka (MS Sound Recorder).

1.6 Novi smjerovi u programiranju

Snažan podsticaj razvoju novih pravaca u programiranju bilo je objedinjavanje kompjuterskih i telekomunikacionih tehnologija.

U inostranstvu 1960-ih pojavile su se prve kompjuterske mreže, od kojih je započela tehničko-tehnološka revolucija, budući da se pokušalo spojiti tehnologija prikupljanja, pohranjivanja, prijenosa i obrade informacija na računalu sa komunikacijskom tehnologijom. U Evropi su tih godina stvorene međunarodne mreže EIN i Euro-net, zatim su se pojavile nacionalne mreže. Godine 1972. u Beču je stvorena MIASA mreža kojoj se 1979. godine pridružilo 17 evropskih zemalja, SSSR, SAD, Kanada i Japan. 1980-ih godina u našoj zemlji je stvoren sistem za teleobradu statističkih informacija koji služi državnim i republičkim organima statistike.


Zaključak

U procesu pisanja ovog seminarskog rada, proučavao sam istoriju nastanka samog programiranja. Izvršena je i sistematizacija znanja o pristupima i principima kreiranja novih programskih jezika. U zaključku, treba napomenuti da vam razmatrana tema omogućava sagledavanje puta razvoja tehnologija i programskih jezika i zanimljiva je sa stanovišta stručnjaka iz područja informacionih tehnologija.


BIBLIOGRAFIJA

  1. Nemnyugin S.A. TurboPascal (radionica): Sankt Peterburg: "Piter", 2003. 475 str.
  2. Kirnos V.N. Informatika 10 11 razred: Kokshetau: "Keshelek", 2005. 208s.
  3. Faronov V. IN . Turbo Pascal 7.0. Početni kurs. - Znanje, 1998. -620 str.
  4. Gryzlov V.I., Gryzlova T.P. Turbo Pascal 7.0. - M.: "DMK", 2000. - 416 str.
  5. Zuev E . A . TurboPascal. Praktično programiranje. - Prethodno, 1997. - 336s.
  6. Pilshchikov V.N. Zbirka vježbi na jeziku Pascal. M.: Nauka, 1989. 160 str.
  7. Jensen K., Wirth N. Uputstvo za upotrebu i opis jezika. M., 1982. 151 str.
  8. Abramov S.A., Zima E.V. Počeo sa programiranjem u Pascal-u. M.: Nauka, 1987. 112 str.
  9. Pavlovskaya T.A. Pascal. Programiranje na jeziku visokog nivoa. - Sankt Peterburg: Petar, 2003.-393s.
  10. Elliot B.K. Turbo Pascal = Turbo Pascal web ažuriranje . M.: Williams, 2005. 896 str.
  11. Lukin S. N . TURBO PASCAL 7.0. Tutorial za početnike.- Dijalog-MEPhI, 2005.-

400s.

  1. Epaneshnikov A. M., Epaneshnikov V. A. Programiranje u Turbo Pascal 7.0.- 1995.-278s.
  2. Nemnyugin S., Percolab L. Proučavamo Turbo Pascal .- Petar, 2007.- 320 str.

Istorija razvoja programskih jezika započeto u dvadesetom veku.

Programiranje je umjetnost kreiranja softverskih proizvoda koji su napisani u programskom jeziku. Programski jezik- ovo je formalni sistem znakova, koji je dizajniran za pisanje programa koji su razumljivi izvođaču (u našem razmatranju, ovo je računar).

Drugim riječima, programiranje je jasno definisan niz akcija koje programer piše.

Programski jezici dijele se na tri tipa:

Mašinski jezici. Čovjeku vrlo nerazumljivo, ali kompjuteru vrlo razumljivo.
- jezici nizak nivo. Na primjer, asembler.
- programski jezici visokog nivoa. Na primjer, Pascal, C, Java.

Programiranje ima različite grane u pisanju softverski proizvod. Danas ih ima na hiljade programski jezici. Neki od njih stiču popularnost i slavu. Odlikuju se jednostavnošću, brzinom i fleksibilnošću i drugim svojstvima.

Na početku razvoja programiranja, programeri su u potpunosti pisali programe u jednu datoteku. Tokom 1960-ih, potražnja za razvojem softvera je porasla i programi su postali veoma veliki. Ljudi su počeli shvaćati da je stvaranje softvera mnogo teži zadatak nego što su zamišljali. To je dovelo do razvoja strukturiranog programiranja. Strukturirano programiranje- ovo je softver koji se zasniva na prezentaciji programa u obliku hijerarhijske strukture blokova. U ovom periodu pojavile su se strukture kao što su: struktura izbora (uslovi), struktura ponavljanja (ciklusi), struktura sekvence (akcije idu jedna za drugom).

Struktura izbora razmatrali kako odabrati radnje u zavisnosti od stanja.
Struktura ponavljanja- ista radnja se izvodi nekoliko puta prije nekog događaja (uvjeta).
Struktura sekvence- akcije idu uzastopno bez grananja jedna za drugom.

Sa razvojem programiranja počeo se primjenjivati procedure i funkcije. Odnosno, ako postoji zadatak koji se izvodi nekoliko puta, onda ga je lakše deklarirati kao funkciju ili proceduru. A u izvršavanju programa samo ga pozovite. Uobičajeni kod programi u ovom slučaju postaju manji. Funkcije vam omogućavaju da kreirate modularne programe.

Nadalje, s razvojem, počeli su koristiti strukture, a zatim su prešli na časove. strukture su kompozitni tipovi podataka napravljeni korištenjem drugih tipova. Na primjer, struktura vremena. Uključuje: sate, minute, sekunde. Programer bi mogao kreirati vremensku strukturu i raditi s njom kao zasebnom strukturom. Klasa- Ovo struktura, koji ima svoje varijable i funkcije koje rade s tim varijablama. Bilo je to veoma veliko dostignuće u oblasti programiranja. Sada se programiranje može podijeliti na klase i ne može se testirati cijeli program, koji se sastoji od 10.000 linija koda, već se program može podijeliti na 100 klasa, i svaka klasa može biti testirana. To je uvelike olakšalo pisanje softverskog proizvoda. Ali ni ovo nije bilo dovoljno.

Sljedeći napredak u programiranju bio je naslijeđe i polimorfizam. nasljedstvo - to je način ponovne upotrebe softvera u kojem se nove klase kreiraju iz postojećih posuđivanjem njihovih atributa i funkcija, uz obogaćivanje nova klasa i dodavanjem novih funkcija. Ovo postignuće će uštedjeti vrijeme za pisanje novih časova. Budući da možete koristiti funkcije prethodnih klasa, i povećati svoju funkcionalnost i varijable u novoj klasi. Polimorfizam- ovo je prilika da objekti različitih klasa, povezani nasljeđivanjem, odgovore na različite načine na istu poruku (što znači funkcije). To jest, roditelj i dijete imaju funkciju koja ima isto ime, na primjer, print, ali ova funkcija prihvaća heterogene parametre, onda ako program pozove funkciju print. Program će znati koju funkciju treba pozvati, roditeljsku ili podređenu funkciju.

Sve je to spojeno i dobilo objektno orijentirano programiranje (OOP). Objektno orijentirano programiranje- ovo je programiranje, koje se zasniva na konceptu objekta. Objekt je programski element koji kombinuje oba podatka ( struktura) i radnje na njih ( funkcije). To jest, kada je klasa kreirana, ona se može koristiti kao novi specificator tipa. U ovom slučaju, varijabla ove klase postaje objekt. Ima i varijable i funkcije koje obrađuju ove varijable.

Sve se to jasno vidi kada pišu kompjuterske igrice. Na primjer, svaki igrač je zaseban objekt, svako drvo ili automobil je zaseban objekt. Kada jedan objekt pogodi drugi, dolazi do hit događaja i izvršava se funkcija hit, dok se neka radnja izvodi (poraz, smrt, itd.), sve ove radnje se implementiraju u samom objektu. A kada otklanjate greške, morate otkloniti greške u klasi, a ne u cijelom programu. Veoma je udoban.

Programiranje je takođe uključivalo upotrebu dinamičke memorije. Dinamička alokacija memorije- ovo je mogućnost da se tokom izvršavanja programa dodijeli memorijsko područje za pohranjivanje informacija i oslobodi memorijske resurse koji više nisu potrebni.

Da biste napisali program, morate znati područje u kojem trebate napisati program, a zatim razbiti složene probleme na više jednostavni blokovi, a zatim se ovi blokovi dijele na klase. I nakon toga napišite klase koje implementiraju potrebnu funkcionalnost.