Aug
23
2010
1

Java C++ integracija

Kao što sam najavio u predhodnom postu, prilažem seminarski papir o integraciji Jave i C++-a. Naćićete ga posebno korisnim jer sadrži osnovne tehnike integracije i kratke ilustrativne primere koji će vam pomoći da se brzo podsetite ili vam dati kratak uvod i uputiti vas na nove tehnologije koje niste do sada znali…

Kroz dokument sam se samo dotakao sledećih tehnika:

  • integracija preko fajla
  • preko sistemske konzole
  • preko soketa
  • baza podataka
  • CORBA
  • Apache Thrift
  • JNI
  • JNA
  • SWIG
  • Qt Jambi

i priložio lične zaključke i filozofiju (Realno, ne bih bio to ja ako ne bi prosipao neku filozofiju :P ).

Nadam se da mi nećete zameriti što sam pomalo zbrzao dokument zbog manjka vremena. I takođe se nadam da ćete imati koristi od informacija koje se nalaze u istom.

Download java_cpp_integracija.pdf

Written by Stamat in: Programiranje,Radovi,Spika | Tags: , ,
Aug
17
2010
0

O programskim jezicima, njihovoj integraciji i programiranju

Svaki programski jezik je priča za sebe, počevši od toga da su ih razvijali različiti ljudi, sa različitim prohtevima u različitim okolnostima za različite svrhe. Oni su nastali kako bi olakšali rad svojih kreatora, a definicija pojma olakšanje varira od osobe do osobe kao što se da zaključiti. I sada se postavlja pitanje koje obično pitaju početnici u ovoj profesiji: “Koji je jezik najbolji?”. Često se rezočaraju kada im odgovorite da ne postoji programski jezik koji je najbolji ili pak da je svaki jezik najbolji u onome za šta je namenjen, ali u skladu s prethodno rečenim oba odgovora su prava. Javlja se još jedan zanimljiv fenomen, a to je da postoje iključivo Java programeri, isključivo C++, Python, C#… U industriji se pokazalo da uska specijalizacija obećava stabilnu karijeru, ali iskustvo me navodi da zaključim da ovakav pristup čini loše profesionalce. Programeri često zapadnu u zabludu da treba praktikovati i usavršavati samo jedan jezik ili tehnologiju, što je ekvivalnetno sa čovekom koji ulaže sve napore da ovlada samo čekićem od svih alata. Takvu osobu bi zvali samo kada je potrebno uraditi nešto u Javi ili zakucati ekser i takva osoba nije stručnjak već je alat. Svaki programski jezik je po osnovi sličan, tako da svako znanjem jednog kvalitetnog jezika je izuzetno lako naučiti sve ostale. Da to nije tako, postojanje UML-a (Unified Modeling Language) ili pseudo jezika, koji služe za modeliranje nezavisno od jezika, bi bilo apsurdno.
Problem koji se javlja kada se u istom timu sretnu dva programera usko specijalizovana za dva različita jezika jeste da često ni jedan od njih nije svestan procesa integracije, t.j. procesa razvoja projekta koji se zasniva na kolaboraciji dva ili više jezika i tehnologija, tačnije vidova komunikacije između funkcionalnih celina budućeg sistema razvijenih u različitim tehnologijama. Imao sam prilike sresti laike koji su tvrdili da je nemoguća kolaboracija između dva programa u različitim jezicima, no svako ko bi malčice bolje razmislio shvatio bi da svaki programski jezik osposobljen metodama za pisanje i čitanje fajlova, komunikaciju sa komandnom linijom sistema, kao i mrežnu komunikaciju te je izuzetno lako zaključiti da ovim vidovima ovakvi programi veoma lako mogu komunicirati. S druge strane stavljamo pitanje performansi izvršenja određenih poslova koje jezik generički obavja, dakle sigurno je brži C++ program za parsing teksta od Javinog i za izradu i za izvršavanje ili vam je lakše i brže izraditi GUI pomoću QT-a nego Swing-a. Poučeni ovim, prilikom kvalitetnog razvoja sistema treba imati u vidu važnost vašeg vremena kao programera i vremena korisnika te se koristiti alatima koji će vam omogućiti kvalitan i brz put ka željenim rezultatima. No kako bi uopšte razmišljali o razvoju uz pomoć više jezika mora se pre svega sačiniti kvalitetan model sistema, počevši od ciljeva koje treba rešiti, okvirne definicije sistema i razbijanja istog na fukcionalne celine do izbora tehnologija koje će potkrepiti prohteve za performansama, stabilnošću, bezbednošću, fleksibilnošću sistema i njegovih programera. Pri tome, vidovima komunikacije između funkcionalnih celina se mora posvetiti posebna pažnja jer se na njima zasniva i kolaboracija stručnjaka uključenih u razvoj projekta.
Integracija nije nužna već poželjna u koliko nemate vremena ni novca da zaposlite još programera ili trenirate vaš tim za tehnologiju izbora. Kroz dalji tekst biće predstavljene korisne multiplatformske tehnike integracije dva veoma popularna jezika današnjice Jave i C++-a, ali primetićete da mnoge od ovih tehnika ne zavise od ova dva jezika već se mogu primeniti u integraciji mnogih drugih. Potrebno je imati u vidu da integracija dolazi sa svojom cenom, u slučaju ova dva jezika to bi bio gubitak portabilnosti aplikacije, u nekom drugom možda dodatni interpreteri ili bilioteke, pa je nužno da integracija bude svesna odluka razvojnog tima.

Nastavak sledi u seminarskom papiru Integracija Jave i C++-a…

A šta bi John McCartly rekao o programiranju danas?

Written by Stamat in: Programiranje,Spika | Tags:
Aug
17
2010
0

Java vs. JavaScript or should I say Regular vs. Scripting.

A fine gentleman asked this question on a shelfari.com Computer and Programming group:

Java vs. JavaScript

if one studies java wud it b enough. i mean will java b able o cover all the applications on client side as javascript?

I was about 2 years late, but just to clear some stuff because people often asked me that same thing, here is the short answer I gave:

The main difference between these languages is that Java is a programming language and JavaScript is scripting language. What does this mean? A scripting language has an interpreter program which parses every line of code and executes it on the CPU, for instance JavaScript is a scripting language that is read and interpreted by web browser and then executed over the HTML creating Dynamic HTML or DHTML. Let’s say you want to move a <div> element when a key is pressed, you will use JavaScript. No other standardized language is capable of being interpreted by browser, so you can’t do that with Java without the Java to JavaScript AJAX, SOPA, JSON… based communication. And the easiest explanation is that the scripting languages script the behavior of running instance of a program. With this cleared what are the programing languages? Programing languages have a compiler, a program that parses the code and transcribes it into machine code (Asembly) so it can be run by CPU. But Java is a bit different than normal programing languages like C/C++, it has a compiler that compiles Java code into Java Byte-code, a compact translation of Java code that is later executed by a program called Java Virtual Machine or JVM which you get by installing Java Runtime Environment or JRE. So you can say that Java is a perfect blend of scripting and regular languages. It will minimize the size of the regular code for later interpretation so Java programs are usually small in size. And when we speak about java web programming in JSP (Java Server Pages), JSF (faces), Tapestry and other frameworks you basically use java code that is being interpreted by a serverside virtual machine. Because of JVM, java applications are able to work anywhere where JVM has been installed with small modifications for server side or mobile applications and that’s the main power of JAVA.
One more thing. You should know about OOP (Object Orientated Programming) concepts if you want to do java because in java everything is an object. On the otherhand JavaScript is structured programing language which can imitate the object notation and namespaces with JavaScript Object Notation, short JSON.
And if you want to become a programer never limit yourself to only one language/technology. A java expert is the same as Hammer expert, they’ll call you only to write java applications or hammer a nail in the wall thus you will become a tool not an programmer. All programing languages are similar in one way or another.  Learning to program is learning to ask questions and to think out of the box. If you know the basic logic of programming all you need are some cheatsheets or reference guides when switching between languages.
And by telling you to learn asking questions, you should learn using google, wikipedia and books… So if you dont understand something try googling it first then search through literature and than ask for help. Like they say Read The “Fine” Manual! :D Every language has it’s reference guide and other documentation if available free!

You’ve got to catch em all! Pokemon!

Aug
24
2009
1

Kako početi sa programiranjem?

Moram priznati da mi se smuči svaki put kada čujem: “Java je najbolji programski jezik”, “C# je najefikasniji”, “Windows je bolji od Linuxa”, “Ko ne zna JavaScript je noob”, “Moj IDE je bolji od tvog”… Liči li vam ovo na one klinačke fore: “Moj tata je jači od tvog”, “Pozvacu svog burazera da te prebije”, “Moj Action Man je bolji od tvog jer ispaljuje projektile iz ledja”…

Hahahaha! Znači složićete se da je rezlika između Eclipsa i Visual Studija ista kao i razlika imedju gore navedenih Action Mana. Možda je istina da su programeri večita deca ali ovakav stav je apsolutna glupost, zar ne?

1. Koji je najbolji programski jezik? – Tačan odgovor je NI JEDAN!!! Ako bi bili apsolutno precizni onda bi najbolji programski jezik bio Asembly!? Zašto? Uzmite u obzir da su svi jezici višeg reda nastali da bi se lakše programiralo u odnosu na Asembly. Svaki programski jezik je stvorila drugačija grupa ljudi s drugacijom ideologijom u svrhu resavanja drugačijih problema ili samo olakšavanja programiranja sebi. Dakle treba uzeti u obzir da svaki programski jezik rešava jednu oblast programiranja bolje nego i jedan drugi. Recimo C# je savrsen za programiranje aplikacija koje će trčati na windowsu jer je sve microsoft lepo zapakovao tako da programer teško može da pogreši u izboru biblioteka… Sa druge strane na Linuxu je recimo zanimljivo pisati u Pythonu jer je integrisan u većini distribucija sa gomilom već prisutnih biblioteka za interakciju sa sistemom. A onda recimo Java koja je amorfna (bezoblična)… lako ju je pretočiti iz desktop aplikacije u mobilnu ili web aplikaciju i radi svuda gde postoji mogućnost rada nekog kompatibilnog JREa (Java Runtime Enviroment) ali sve to za cenu sporijeg izvršenja aplikacije. Što se tilče Mac OSXa… za njega postoji X code koji je opet najbolje koristiti u slučaju programiranja za to okruženje… Kako za desktop tako i za Web developement… Primera je bezbroj kao i jezika a na vama je da birate…

2. Za koji programski jezik da se odlučim? – Pre svega se upoznajte sami sa sobom. Kao u svakoj važnoj životnoj dilemi, moraćete da izaberete ono što vam najviše odgovara ali tako da ne uzurpirate svoje predhodno stanje previše. Između više zala izabrati ono najmanje… ALI! Morate razlučiti koji od tih jezika ispunjava vaše potrebe, tačnije čime to želite da se bavite, kojom granom programiranja. Pogrešno je u ovakvoj situaciji pitati “Šta je to što se najviše ceni?”. Zapamtite, birate ono što vam najviše leži, što vas zanima i u čemu uživate a ne ono od čega se zarađuje previše, jer u suprotnom ćete završiti mučeći i proklinjući sebe.

Dakle sledeći logičan korak bi bio otići na wikipediju i videti “Šta to predstavlja programiranje?” Izaberite neku granu koja vam izgleda stabilno, :) i koja vas najviše zanima.

Naposled potražite na istom mestu koji programski jezici rešavaju probleme iz zadate grane programiranja? Hmmm ima ih podosta zar ne? Probajte da potražite rešenje na googlu i vidite šta vam izlazi u prvih par linkova… Uvek je dobra opcija početi sa najpopularnijim programslim jezikom, ali to ne znači da je najbolji.

Budite srećan programer, shvatite da je svaki program koji pišete vaša umetnička kreacija, uživajte u delu kreiranja, svaka linija koda je nešto posebno, osetite zadovoljstvo programiranja u jeziku koji vam leži… Ali pre svega se naoružajte zanjem! Jer programer koji programira u tehnologiji koju ne voli je identičan mački koju ste bacili u vodu… Voda je svuda oko ne a ona je prezire! Tako da od samog početka gledajte da se oslobodite napora i frustracija!

* Moja preporuka: Python – bićete jako zadovoljni čim se upoznate s pythonom, izrazito laka sintaksa, primorava vas da pišete uredan kod, radi odlično na svim operativnim sistemima, dosta primera, tutorijala, biblioteka, open-source projekata a što je najbitnije besplatan je!

Gledajte da uvek ciljate na besplatna rešenja jer ćete tako sebe osloboditi onog napora legalizacije i ostalih gluposti. Tako da se trudite da uvek ostanete slobodni po tom pitanju jer sa besplatnim tehnologijama samo ste tu vi i vaša mašta koja pravi inovativne nove programe koje ćete prodavati. Kako vam to zvuči, besplatna tehnologija, velika zarada?

3. Izabrali ste jezik, šta onda? – Sledeći korak je upoznati se sa tom tehnologijom!!! Ovaj korak je od izuzetne važnosti za vas! Raspitajte se po internetu o mogućnostima tog jezika ili jednostavno kupite štampanu knjigu o programiranju s toim jezikom. Ja mislim da nikada ne pijete neki nepoznati lek dok ne pročitate koji su negativni efekti i kako on deluje. Tako je isto i sa tehnologijama, potrudite se da naučite kako one funkcionišu, zašto je potrebno da se program kompajlira, kako se to izvodi, kako se program reprodukuje, itd…

4. Koji programsko okruženje da koristim? – Zapamtite da je sve na računaru u vidu 0 i 1 na najnižem nivou, na nivou Asemblija su komande, vrednosti i registri dok su na višem nivou svi programi u vidu tekstualnih fajlova! Svi moguci zapisi! :D Tako da je najbolje početi sa defoultnim text editorom vašeg operativnog sistema kao pto je Notepad ili gEdit… Kada budete znali pisati programe u ovim text editorima i kompajlirati ih putem konzole bićete spremni da krenete u izbor pravog razvojnog okriženja (IDE). Možete pokušati i malo ekstremniji pošetak a to je developement direktno iz konzole.

* Moja preporuka: Krenuti s običnim text editorom, preći kasnije na Notepad++ ili SciTe, i kada se dobro izvežbate kroz par jednostavnijih programa koje ste napisali možete preći na Eclipse recimo, ma da imajte u vidu da taj IDE čini neke stvari malo komplikovanijim i da je poprilično robustan.

Ako ste izabrali Python, IDLE je najbolji IDE za početak!

!!!ZAPAMTITE: Kada zauzmete određeni stav u životu, svi koji vam kažu da grešite greše jer vam uskrećuju slobodu posedovanja slobodnog mišljenja i sopstvene istine. Tako da kada izaberete jezik, svako ko vam kaže da taj jezik ne valja GREŠI! Ali zapamtite i to da svakog pravog intelektualca čini to da ima otvoreno mišljenje i bezuslovno razumevanje prema svemu, tako da budite sigurni da se upoznate i sa tehnologijom za koju vam neko ko kaže da grešite kaže da je najbolja, pa je tek onda odbacite ako vam se ne svidi! SVAKO IMA PRAVO NA SOPSTVENO VIĐENJE STVARI!

5. Koji operativni sistem je najbolji!? – Isto kao sa jezicima, NI JEDAN! Sve što je napravljeno od strane ljudi ima mane i može biti prevaziđeno evolucijom ljudskog mozga i okruženja! Svaka ljudska kreacija ima razlog!!!Birajte sistem koji vam najviše odgovara, i koji je u skladu sa programskim jezikom koji ste izabrali. Naravno besplatno rešenje će vas lišiti stresa legalizacije a open-source rešenje će vas osloboditi frustracije koja nastaje kada ste u nemogućstvu izmeniti. Iz istog razloga ja ne volim Windows. Osećam se kao da me je neko strpao u kutiju gde mogu da radim samo ono što mi je dozvoljeno od strane microsofta. I još da platim za takvo rešenje, haha mora da se šalite? Ali Windows je odličan u koliko nemate vremena da čačkate po sistemu da bi sebi omogućili neke osnove kao u Linuxu, Windows je fenomenalan jer ne troši vaše vreme, sednete za komp i znate zašto ste seli. Linuks vam daje slobodu koju nemate ni u jednom drugom sistemu, a to je da možete jednog dana da sednete i napravite potpuno svoje okruženje, svoj kernel, apsolutno sve svoje i takvo rešenje možete čak i prodati kao novi operativni sistem! MAC OSX je nešto između ova dva pomenuta, on je izrazito dobar jer je Apple pametan pa isporučuje sistem sa računarima koji je prilagođen tim komfiguracijama i radi savršeno na njima pa ako želite da se oslobodite mnoštva bagova i imate para da platite Applu za računar onda je to solidan izbor ali ne i najbolji! :D Ali onda se pozdravite sa mogućnošću menjanja hardvera, prčkanja po istom, prelemljavanja komponenata po volji, prčkanja po strukturi sistema, mogućstva izmene svega… a takvu jedinstvenu mogućnost vam nudi PC sa instaliranim LInuxom, mogućnost da bolje i lično upoznate tehnologije na kojima radite isto kao što poznajete stan u kome živite… mogućnost da naučite!

Nadam se da sam vam donekle pomogao u izboru i shvatanju nekih osnova… Sve ostalo je na vama i uvek će biti! :D

Još jedna bitna moja izreka je: Vi ste individualac i vaš univerzum se okreće oko vas ali tuđi univerzumi ne! :)

U svakom trenutku budite ponosni na ono što jeste i na ono što umete! :)

Written by Stamat in: Programiranje,Spika | Tags:

Powered by WordPress | Aeros Theme | TheBuckmaker.com