Prvi OOP programski jezik i kako su nastali objekti u programiranju


Kada su softverske kompanije zaključile da sa postojećim tehnikama ne mogu na optimalan način razvijati i unapređivati svoja rješenja, i kada su shvatili da će projekti kasniti i neće zadovoljavati sve viši standard koje su kupci zahtijevali, počelo se razmišljati oko takve tehnike programiranja koja bi u mnogome olakšala razvoj novih i održavanje postojećih rješenja. Uvidjelo se da postojeći programski jezici moraju pretrpjeti promjene u koliko se želi da izvorni kôd bude lakši za razumijevanje, jednostavniji za izmjene nakon isporuke, sigurniji za upravljanje podacima korisnika, a prije svega žečjelo se postići veća efektivnost softverskih timova koji su redundantnim poslovima umanjivali svoju efikasnosti, što je dovodilo u pitanje u većini slučajeva likvidnost kompanija.

Desetak godina ranije, tačnije sredinom šezdesetih godina prošlog stoljeća NASA je ekperimentirala sa objektno orijentisanim osobinama programskog jezika SIMULA [11]. Ove aktivnosti ostale su u okviru istraživanja i nisu dobile potreban publicitet, da bi nešto kasnije bio objavljen prvi objektno orijentisani programski jezik nazvan Smalltalk. Smalltalk je objavljen 1970. godine od strane kompanije Xerox PARC, a što se smatra prvim objektno orijentisanim programskim jezikom. Smaltallk bio je djelo grupe inženjera koji su radili u Learning Research Group (LRG), a među poznatim licima koji se vežu za Smalltalk su: Alan Kay, Dan Ingalls, Adele Goldberg i drugi. Prva verzija ovog jezika bila je Smalltalk-71 urađena 1971 godine. Odmah nakon ove verzije uslijedile su modifikacije jezika, koje su između ostalog pronađene i u programskom jeziku SIMULA. Nakon više godina unapređenja ovog programskog jezika konačno je uslijedila i prva javno dostupna verzija prvog objektno orijentisanog jezika 1980. godine, dok je 1983 objavljen je prvi priručnik za korištenje ovog jezika [12].

beyond_java_i_2_tt7

S druge strane 1979. godine mladi inžinjer iz Bell (sada AT&T) Laboratorija, Bjarne Stroustrup, počeo je eksperimentirati sa dodacima za C programski jezik. Njegova namjera je bila da pronađe bolji alat za implementaciju velikih projekata, koji su u tom periodu imali velike probleme u samom održavanju i kompleksnosti rješenja. U tom vremenu, prosječan projekat sastojao se od 10.000 linija kôda (LOC). Da se zadovolje zahtjevi velikih projekata i tima programera Bjarne nastoji u C programski jezik unijeti osobine objektno orjentisanog programiranja viđene kroz Simula i Smalltalk. Nekoliko godina rada na dodacima Bjarne 1983. godine objavljuje novi programski jezik nazvan prvo C sa klasama a kasnije C++, a koji je bio nadogradnja C programskog jezika. Kako ga je njegov tvorac zamislio, C++ u sebi sadržava klase kao osnovne tipove objektno orjentisanog programskog jezika.

I pored toga što je Simula, a zatim nešto kasnije Smalltalk prvi objektno orjentisani programski jezici, ipak OOP koncept se nije masovno proširio sve dok programski jezici poput C++, Pascal i Delphi nisu evoluirali u OOP jezike. Masovna upotreba OOP koncepta veže se za drugu polovinu 80-tih godina prošlog vijeka. I danas možemo kazati da su ovi jezici najrasprostranjeniji i najviše u upotrebi. Osim toga značajan datum u evoluciji programskih jezika u OOP jezike jeste i 1995. godina kada se pojavljuje Java programski jezik. Nekoliko godina kasnije, odnosno 2001. godine [13] Microsoft obznanjuje svoj .NET Framework i novi programski jezik C# koji po svojoj strukturi spada u grupu OO programskih jezika.

Danas mnogo godina kasnije možemo kazati da su C++, Java i C# najrasprostranjeniji objektno orijentisani programski jezici u kojim se piše skoro 90% svih današnjih velikih softverskih projekata.

Reference

[11]  R. W. Sebesta, Concepts of Programming Languages, New York: Addison-Wesley, 2012.
[12]  A. Goldberg, Smalltalk-80 THe Interactive Programming Environment, London: Addison-Wesley, 1983.

[13]

C# Implementation of the Finite Element method


I have just published the source code for Finite element method at GitHub. You can find it at .

The project is at very beginign stage, and contains very few samples and implementation.

Currently you can solve simple plane load problem, and calculate node displacement.

The more code will be added soon.

The project will be Cross OS and Cross Platform, and will be complatible with .NET Core.