S obzirom da se 90% business aplikacija razvija u Javi ili .NET tvoje pitanje postaje prakticno bez znacaja, saradnja i ponovno koriscenje koda nikada nije ni isla preterano izmedju Pascal i C++ koda ni u native, u Windows svetu (ako cemo da se drzimo .NET-a) u native razvoju si imao C++ COM/COM+ objekte koje si konzumirao iz C++ aplikacija ili (mada to nije bio 100% native) iz VB-a, sve ostalo je vise bila teorija nego praksa i veoma retko si imao slucaj da se pojavila kao potreba. Danas ako rade razvoj za .NET onda te manje vise ne zanima nista van toga sem ponekad konzumiranje COM+ objekata za sta je obezbedjen mehanizam za rad sa native kodom preko P/Invoke. U slucaju Jave situacija je slicna.
Inace nije to cak ni preterano bitno jer ponovno koriscenje C++ koda u samom C++ je komplikovanija nego .NET u .NET, ako sam radis sve onda mozda i uspes da resis stvar ali ako radis razvoj sa komponentama koje su razvili druge firme onda imas daleko vise razloga da se batalis toga i da sve sam razvijas u C++ nego u .NET, versioning, dll hell i sl. da li ti to govori nesto. Nemoj sad reci da se to moze resiti (jer znam da moze) ali zahteva extra napora sto kosta i para i ljudskih resursa i vremena. A sve sto te extra kosta suzava ti marginu odnosno daje ti "incentive" da ga nekako zaobidjes i zato ti je ponovno koriscenje koda statisticki manja u native nego u managed okruzenju. Sama cinjenica sto imas 10x vise biblioteka za managed razvoj (i Java i .NET) govori o tome da ljudi vide ponovno koriscenje koda daleko prirodnije u managed okruzenju nego u native.
Pascal-om se nisam bavio skoro 20 godina tako da se bas ne secam detalja ali cisto sumnjam da se mehanizmi koje je TPU obezbedio bili blizu ovome sto imamo danas u managed kodu.
A malloc i printf :) pa na neki nacin jesu apstrakcija ali ne treba ici toliko nisko to bi vec bilo preterivanje, ono sto cini STL i ove ostale biblioteke (pravom) apstrakcijom je to sto obezbedjuju stil programiranja koji je bez njih nemoguce ili jako tesko izvodljivo (uglavnom preko template sistema), verujem da ces priznati da malloc i printf nisu nesto sto se da porediti sa time.
Mislim da nema smisla da lomimo ruke oko ovoga dalje, nisam niti ljubitelj managed koda niti protivnik native koda (zapravo radim i jedno i drugo u zavisnosti od toga koje je resenje u datom trenutku optimalnije) imam svoje razloge (i ne samo ja) zbog kojih znam da je produktivnost veca kada se radi razvoj sa managed okruzenju pogotovo ako uzmemo u obzir da je moguce koristiti siru marginu programera koji bez obzira na manje sposobnosti prave manji broj bagova (a bagovi su skupi sto se tice produktivnosti).
Ako uzimas u obzir sebe ili nekog pojedinca koji je A+ u native programiranju onda se slazem da je moguce dostici slicni nivo produktivnosti i u native razvoju ali ja ti ovde pricam o praksi ne o teoriji; Kada imas 300-400 ljudi (ili 30-40 nije bitno) na razvoju od kojih mozda 4-5% je ono sto nazivamo A+ ili A, ostali su B+ B a moras da se zadovoljis i sa dosta onih koji su samo C (bez obzira sto Joel kaze da ne treba primati one koji 100% ne zadovoljavaju visoke kriterijume, to je mozda moguce u Silicon Valley ili na Manhattan ne znam ali u vecini slucajeva je nemoguce ili cak nepotrebno skupo jer retko koji softver opravdava takav pristup) ali u realnoj situaciji trziste nema takvu ponudu niti ti imas sredstva da juris i da placas full A+ timove. E u toj prakticnoj realnoj situaciji produktivnost na managed platformi je san snova za native razvoj.
Znaci ne verujem u dogme niti igram za neku stranu, ono sto mi je bitno da uvek mogu slobodno da izaberem resenje koje ce mi za najmanje dati najvise, nekad je to .NET/C# nekad .NET/F# a nekad C++. Mogu da zamislim i situaciju gde je jos uvek bolje da se koristi C ili cak assembler ali nisam imao takvu situaciju u zadnjih 10+ godina sto ne znaci da neki nemaju takve situacije a neki imaju i cesto.
Sto se Pascal-a tice... pa nisam ga nesto mnogo voleo nikad (radio sam ga svojevremeno jer je bio standardno u skoli) ali ne mogu da zamislim da postoji situacija kada je to najoptimalnije resenje (sem ako ne znas ni jedan drugi jezik). Pascal je uvek bio i ostao jezik za skole nikad nije bio jezik za industry (mada je Delphi to pokusao da promeni ali nije bas bio uspesan). Ne kazem da je Pascal los jezik samo nema infrastrukturu oko sebe, nema dobre biblioteke i sl. Moj omiljeni jezik je LISP(Scheme) ali isto tako super mi je za opustanje i razonodu ali nisam nikad ni pomislio da ga koristim za standardan razvoj. Ulogu velikog kamena u buretu zauzimaju C/C++, Java i .NET jezici, rupe u buretu popunjavaju (manji kamen) jezici poput Python, Ruby, Perl a ostali koji su u buretu su sitni kao pesak... i milion jezika koji su interesantni i koje se koriste u akademskim krugovima ali nemaju nikakvog prakticnog znacaja u industriji.
E sad... valja nesto i raditi jer polako ode produktivnost na forumu :)
&&y