Hamilton and the most important problem of computer science

William_Rowan_Hamilton_paintingSir William Rowan Hamilton (August 3/4 1805 – September 2, 1865) was an Irish physician, astronomer and mathematician that brought important contributions to classical mechanics, to the development of optical systems and of algebra. William Rowan Hamilton is known for his studies of mathematical physics and of Newtonian mechanics formulation renamed Hamiltonian Mechanics. His work proved to be essential for the study of electromagnetism and for the development of quantum mechanics.

William Rowan Hamilton was the son of a lawyer, but he lived with his uncle, an Anglican priest who also educated him.

Besides his aptitude of learning Latin, Greek, Hebrew before 5 years old, until he turned 12 he already knew Arabic, Sanskrit, Persian, Syriac, French, Italian and German. However, Hamilton started to be more interested in mathematics after he read Analytical Geometry by Bartholomew Lloyd, at the age of 16. Continuă să citești Hamilton and the most important problem of computer science

O zi din viața unui Software Developer

Din ce în ce mai mulți tineri își doresc să urmeze o profesie în IT deși puțini știu ce presupune cu adevărat acest lucru. Fiecare job are o anumită aură de mister. Ce fac acei oameni toată ziua? Ce se întâmplă la locul lor de muncă? E dificil? Meseria de Software Developer e una relativ nouă dar taskurile pot varia destul de mult de la o zi la alta. În prezentul articol vă vom arăta cam cum se desfășoară o zi normală pentru cei ce au această meserie.

Sprinturile și diminețile

Dacă faci parte dintr-o echipă de agile development , asta va include de la 5 până la 10 oameni. (Agile development include Extreme Programming [XP], Scrum, Crystal, Dynamic Systems Development Method [DSDM], Lean Development, și Feature-Driven Development [FDD] printre alte discipline.) În general vei lucra în sprinturi. Ideea e că decât să lucrați la un proiect foarte mare deodată, el e împărțit în sprinturi de două sau trei săptămâni. Fiecare din echipă va lua un task care i se potrivește și va lucra la el. Apoi, în fiecare dimineață există o sesiune scurtă în care se urmărește progresul făcut. În aceste ședințe de aproximativ 15-20 min, fiecare spune ce a realizat, la ce lucrează sau unde a întâmpinat blocaje.

Rutina zilnică

Deci o zi normală s-ar putea desfășura în felul următor:

9:00- Verificare e-mailurilor, aranjarea listelor de ,,to do”, organizarea întâlnirilor.

10:00- Meeting Stand-Up, lucrul la proiect: carry out coding, rezolvarea problemelor și development. Desigur, va mai fi nevoie să mai ceri și sfatul cuiva sau să ți se ceara sfatul. Dacă membri echipei tale sunt liberi, ați putea să mergeți împreună la tablă și să faceți o diagramă și să găsiți o soluție. Aici depinde de companie, dar după ce găsiți soluția o să creați un „change request” sau „pull request” în care faceți un rezumat al schimbărilor propuse, pe care altcineva poate să-l analizeze. Probabil până acum vei ajunge la pauza de masă. După-amiaza e momentul când ședințele se poartă și când proiectele long-term sunt discutate.

După-amiaza și lansările de proiect

Când se lansează un nou proiect, în general primești o listă de cerințe și trebuie să creezi un design document. Acesta e în general un document de 2-3 pagini în care descrii problema și soluția propusă. Vei lua fiecare alternativă în parte și vei explica de ce ai ales-o sau de ce ai respins-o. După ce terimini, îi vei arăta echipei și managerului la ce ai lucrat. Depinzând acum de companie, daca totul este ok, ar trebui deja să începi să implementezi proiectul singur sau alături de un coleg. În acest stadiu, chiar daca l-ai testat deja riguros, fii sigur că funcționează pe computerul tău de lucru! S-ar putea să descoperi probleme la el mai târziu și va trebui să semnalezi bugurile bazate pe feedback-ul primit de la colegi sau clienți.

Sfârșitul zilei

Când și cum ziua ta de muncă se sfârșește depinde de angajator: de obicei acest lucru se întâmplă după cele 8 ore de muncă, deși s-ar putea în unele cazuri să mai fi nevoit să rămâi până termini un task specific. Când ne gândim la o zi din viața unui software developer ar trebui să ne gândim la capacitatea de a rezolva probleme: Lucrurile care trebuiesc rezolvate sunt sunt mici și cumulative, ducând la apariția unuei soluții mulțumitoare atunci când echipa lucrează în tandem și proiectul e finalizat.

Ecaterina Filimon

Web developers, creatorii de site-uri web. Munca din spatele conceperii designului și structurii unui site

Dacă sunteți pasionați de crearea de site-uri, cea mai potrivită profesie pentru voi este cea de web developer. Aceștia sunt programatorii care proiectează, creează și modifică site-urile web.

Dezvoltatorii web pornesc de la ceea ce au nevoie utilizatorii, astfel încât să poată concepe designul și structura site-urilor conform așteptărilor acestora. Web developerii folosesc software-uri care le permit să dicteze ce fel de acțiuni pot utilizatorii să facă atunci când accesează un website.

După ce s-au lămurit în privința structurii și designului, programatorii vor adăuga, dacă este cazul, și componente grafice, audio sau video, folosind software-uri special concepute care permit create conținutului multimedia. De amintit este că web developerii sunt indispensabili și pentru crearea unui banal blog, pentru că în spatele acestuia stau structura, funcțiile și informațiile pe care le văd utilizatorii.

Dezvoltatorii web se ocupă nu doar de imaginea unui site, dar și de performanțele, capacitățile și, uneori, chiar și de conținutul acestuia. Cele mai populare limbaje și platforme pentru web development sunt HyperText Markup Language, JavaScript, Drupal, WordPress și Joomla.

Limbaje de programare cu care lucrează web Developers sunt HTML/CSS, JavaScript, Java, Swift, Ruby, Python și ASP.NET.

Rezolvă problemele de software și crează baze de date

Munca unui web developer este extrem de complexă, iar ca să vă faceți o idee, o să enumerăm câteva dintre cele mai importante lucruri pe care acesta le face. În primul rând, analizează nevoile utilizatorilor, apoi selectează limbajele de programare specifice, tool-urile de design sau aplicațiile și crează modele sau prototipuri web.

De asemenea, proiectează, construiește și modifică site-uri web, updatează site-uri, rezolvă probleme de software și de funcționare și se asigură că codul scris este compatibil cu browserele, dispozitivele și sistemele de operare.

Și asta nu e tot. Se ocupă și de proiectarea și implementarea firewall-urilor sau a message encryption-urilor, crează și dezvoltă baze de date compatibile cu aplicațiile și site-urile web și integrează strategii de e-commerce și de marketing.

Ținând cont de multudinea de lucruri pe care le poate face, un web developer poate alege să urmeze o carieră ca Front-end Developer, PHP Web Developer, UX Designer, UI Designer, Dezvoltator de Aplicații Web sau Website Specialist.

Munca unui dezvoltator web este de multe ori una de sisif. E nevoie de multă atenție, concentrare și răbdare, ca să nu mai vorbim de volumul mare de informații pe care acesta trebuie să le știe. Prin urmare, este important să deprindă încă de la început cunoștințele de bază, iar apoi pe cele avansate de la profesioniști în domeniu, dacă vrea să reușească într-un domeniu unde concurența este teribilă.

 

”Vrăjitorii” în programare care scriu limbajul prin care computerele ”traduc” instrucțiunile primite de la utilizatori

Așa cum oamenii, animalele, plantele și chiar mineralele au propriul limbaj de comunicare, la fel și computerele înțeleg într-o manieră proprie directivele pe care le primesc de la utilizatori.

Programatorii hardware scriu instrucțiunile prin coduri specifice, iar computerul identifică imediat directivele primite și le execută. Tot ei sunt cei care scriu codurile care fac să apară un text atunci când îl deschidem.

Practic, imediat ce computerul este deschis, utilizatorul primește informații, astfel încât să poată alege ce va face în continuare. Și asta nu e tot. Programatorii hardware fac și muncă de cercetare, design, dezvoltare și testare a echipamentelor pentru computere.

Dacă sunteți interesați să scrieți specificații funcționale detaliate pentru procesul de dezvoltare hardware, să construiți, testați și să modificați diverse prototipuri, atunci munca de programator hardware este ceea ce vi se potrivește.

Un computer hardware programmer lucrează cu limbajele de programare C, C++ și Java și face o sumedenie de lucruri interesante, cum ar fi să proiecteze, să analizeze și să testeze performanțele diverselor echipamente, să evalueze interfața dintre hardware și software, dar și cerințele operaționale și de performanță.

Pregătește, de asemenea, designuri și determină specificațiile unui produs, monitorizează funcționarea și operează modificările necesare, verifică procesele de conformitate cu standardele și face recomandări tehnice de design. Și asta nu e tot.  Procesează schimbările pentru îmbunătățirea performanțelor, analizează nevoile utilizatorilor și face recomandări specifice de hardware.

Un computer hardware programmer poate alege dintr-o varietate de joburi, pornind de la arhitect de computere, inginer de automatizări, inginer IT, designer de hardware, dezvoltator de Hardware și până la inginer electronist, consultant IT, inginer de rețea, inginer de sisteme și inginer de Telecomunicații.

Cum lesne vă puteți închipui, puteți reuși într-o branșă atât de competitivă doar dacă deprindeți bine limbajele de programare, iar acest lucru nu îl puteți face decât cu profesioniști în domeniu. 

Ce face, de fapt, un programator? De ce cunoștințe are nevoie pentru a scrie coduri complexe

Rolul programatorului a devenit din ce în ce mai complex în ultimii ani. Acesta preia designul creat de către inginer și software developer și îl transformă într-un set de instrucțiuni pe care calculatorul să îl poată urma. Aceste instrucțiuni devin finalmente platforme de social media, programe de procesare a textelor, browsere și multe alte lucruri pe care mulți dintre noi le folosesc zi de zi.

Practic, rolul programatorului este să vină mereu cu soluții software eficiente. De asemenea, acesta trebuie să gândească, să scrie, să testeze și să implementeze modificările rezultate în urma testelor, dar și să mențină codul sursă al programelor de calculator. Vorbim practic de un cod care trebuie scris într-un limbaj de programare pe care computerul să îl poate înțelege.

Așa ajungem și la scopul programării. Programatorul va crea mereu programe cu un anumit comportament, ca să îi spunem așa. În procesul de scriere a unui cod, acesta are nevoie de cunoștințe din domeniul în care acel program va fi folosit, de algoritmi specializați și chiar cunoștințe de logică.

Programatorul, traducător între utilizator și limbajul codului sursă

Lucrurile devin și mai frumoase. Programatorul poate fi și persoana care realizează interfața grafică, cu care utilizatorul va interacționa ulterior. Mai pe românește, acesta va juca rolul unui traducător între utilizator și limbajul codului sursă.

Și asta nu e tot. Când vorbim de programe extrem de complexe, se vor folosi intrumente automate de scriere a unei părți a codului sursă, în timp ce programatorul se va concentra pe scrierea părților de cod care sunt unice și specifice programului respectiv.

În schimb, programatorii care crează programe mai mici folosesc ceea ce se numește în limbaj de specialitate mediu de programare (programmer environments) sau aplicații care le cresc productivitatea datorită proprietăților de compilare și de generare a codurilor sau a datelor, și care au și funcții de debugging.

Fac echipă cu inginerii de software

O altă ”armă” din arsenalul programatorilor sunt așa numitele libraries, care le permit să modifice sau să personalizeze un cod de bază pentru aplicațiile specifice la care lucrează. În acest fel vor obține programe mai sigure și mai bune, iar productivitatea programatorilor va crește prin eliminarea unor procese de rutină.

În ultimii ani, programatorii au început să preia din ce în ce mai multe responsabilități de la inginerii de software, pe măsură ce software design-ul a continuat să avanseze. În prezent sunt din ce în ce mai întâlnite echipele mixte, formate din programatori și ingineri de software, care lucrează împreună pentru a identifica rapid nevoile utilizatorilor și a proiecta anumite programe și funcții specifice.

Prin urmare, este de dorit ca odată ce v-ați decis să mergeți pe acest drum, să deprindeți bazele corecte ale programării. Recomandat este să apelați la specialiști care vă pot iniția în programarea de bază și vă pot ghida ulterior în etapele avansate ale acestui frumos domeniu.

Cum știi dacă ești făcut pentru programare? Calitățile unui programator de succes

Majoritatea celor care vor să se apuce de programare își pun, așa cum e și firesc, întrebarea dacă sunt făcuți pentru așa ceva. În special cei care nu au urmat specializări în științe exacte cred că au șanse reduse pentru a reuși în acest domeniu dacă nu știu matematică la un  nivel rezonabil.

În realitate, este vorba despre cu totul altceva. Mulți se apucă de programare pentru că au auzit că jobul este bine plătit și le poate oferi independența financiară relativ repede. Dacă vă gândiți doar la aspectul financiar, nu veți ajunge prea departe.

Este vorba, până la urmă, de un cumul de calități pe care, dacă nu le ai, nu e cazul să te mai obosești să înveți programare. Astfel, dacă ești motivat doar de câștigul financiar și nu ești interesat deloc de calculatoare, nu îți place sau nu poți să stai așezat pentru lungi perioade de timp, ochii îți joacă în cap când te uiți la o pagină de cod și tastezi destul de încet și adesea faci multe greșeli, cu siguranță programarea nu este pentru tine.

În schimb, dacă te consideri analitic și creativ în aceeași măsură, ești atent la detalii, te simți confortabil să lucrezi cu ceilalți, dar și să lucrezi singur, ai o bază solidă în înțelegerea limbii engleze scrise, îți place să rezolvi probleme și să înveți mereu lucruri noi și te adaptezi ușor la schimbări, atunci alegerea ta este corectă.

Dincolo de toate acestea, ai nevoie de concentrare și răbdare pentru a crea codurile la care te gândești. Pe de altă parte, programul unui programator poate fi neregulat, dacă alege să corecteze erorile din sistemele informatice, ce pot apărea oricând, dar la fel de bine poate fi un job cu un program obișnuit.

Cert este că un programator are mult mai multă libertate decât alte profesii existente pe piață în prezent, iar un alt avantaj este că poate face programare și de acasă sau de la o cafenea pentru că important este produsul final.

Pentru ca toate aceste lucruri să se întâmple este nevoie de studiu riguros, iar recomandarea este să faceți asta cu persoane avizate, care vă pot învăța corect bazele programării și vă pot ghida apoi pașii către zonele avansate ale acestui domeniu.

Cum afli pe ce zonă a programării vrei să activezi. Limbajul de programare ideal pentru începători

Pentru orice novice în programare, specialiștii recomandă limbajul de programare Python. Acesta este considerat limbajul ideal de programare pentru începători dintr-o multitudine de motive, ponind de la sintaxa relativ ușoară și până la faptul că necesită mai puțin cod față de alte limbaje de programare pentru a realiza lucrurile pe care le cerem.

De regulă, după câteva ore de studiu serios, puteți spune că ați deprins sintaxa și vă puteți apuca efectiv de treabă. Ce puteți face cu Python? Aplicațiile sunt practic nelimitate, dar le vom aminti doar pe cele mai importante.

Limbajul de programare poate fi folosit pentru a găsi vulnerabilitățile dintr-o rețea pentru a le elimina apoi prin măsuri potrivite de protecție. De asemenea, prin intermediul acestuia pot fi testate modulele software care urmează să fie lansate pe piață, astfel încât să se verifice dacă funcționează corect.

Nu în ultimul rând, Python poate fi folosit pentru a crea meniuri interactive pentru diferite programe și este o unealtă utilă pentru programarea senzorilor și sistemelor de securitate din industria automotive.

Python poate fi însă doar începutul. Pasionații de mașini care vor să contribuie la dezvoltarea computerului de bord, se pot concentra pe învățarea limbajelor de programare C sau C++.

Cei care fac programare pentru a-și deschide propriul startup, pot opta pentru HTML, CSS și JS. Începeți ușor, cu noțiunile de bază, iar apoi le aprofundați, implicându-vă în proiecte personale, unde puteți crea programe extrem de complexe. Dacă doriți să creați aplicații pe mobil, limbajul de programare potrivit este Java.

Important este să deprindeți bine baza programării, iar acest lucru îl puteți face cel mai bine învățând de la profesioniști, care vă vor lămuri și în privința domeniului pe care doriți ulterior să activați.

 

 

Cei trei pași de bază pentru învățarea limbajelor de programare

Nu puțini sunt cei care renunță la învățarea programării pentru că li se pare un proces mult prea greu și complicat. Acest lucru se întâmplă pentru că cei în cauză nu au urmat câțiva pași simpli, dar esențiali în procesul de învățare.

Este vorba despre punerea corectă a bazelor teoretice ale progrămării. Un limbaj de programare conține litere (sau instrucțiunile elementare ale unui PC), cuvinte (unde te folosești de instrucțiuni pentru a forma/scrie programe), precum și sintagme sau chiar fraze întregi (unde combini programele scrise pentru a forma alte programe cu funcții complexe). Dacă unul dintre aceste elemente este învățat greșit, nu se va ajunge, evident, la niciun rezultat.

Un alt pas important este învățarea serioasă a limbajului de programare (Java, C++, HTML) pe care persoana în cauză și l-a ales. Superficialitatea în abordarea limbajului de programare va conduce la rezultate pe măsură. Timpul și atenția pe care le veți dedica învățării se vor reflecta proporțional în rezultatele pe care le veți obține.

Ultimul pas, esențial de altfel în orice domeniu, este exercițiul. Numai prin practică vă puteți descoperi punctele slabe și le puteți corecta. Asta înseamnă să exersați programarea oricât de mult puteți pentru că nu va fi cu siguranță timp pierdut. Tratați procesul ca pe o învățare prin joacă și veți ajunge mai departe de cât v-ați fi putut închipui.

Aveți două opțiuni prin care puteți învăța programare. O puteți face singuri sau ghidați de specialiști în domeniu. Deși învățarea pe cont propriu are avantajele ei, unul dintre ele fiind faptul că veți deveni autodidact, este recomandat să apelați la profesioniști pentru că veți reduce mult, probabil cu luni sau ani de zile, perioada deprinderii limbajelor de programare care vă interesează.