Pe Windows, Visual Studio integreaza in aceeasi interfata editor, debugger, compilator, designer, link-er, documentatie, versionare de cod, testare etc. E un singur tool, mare si coerent, pe care stii ca daca il instalezi poti sa faci cam tot ce-ti poti imagina.
Pe linux e putin diferit. In loc sa lucrezi cu o singura aplicatie coerenta, vei folosi multe multe multe, multe tool-uri independente care indeplinesc fiecare cate un task bine definit. S-ar putea sa ti se para dezordonat si greoi - si chiar este la inceput! - fata de modelul VisualStudio. In functie de rabdarea pe care o ai, vei sesiza totusi o serie de avantaje.
Cand vine vorba de o comparatie intre Windows development tools si cele de pe linux, parerile sunt foarte impartite. Sunt oameni care considera ca modelul linux e depasit, altii dimpotriva, jura si baga mana in foc pentru el.
Dincolo de flamewars si evanghelisti, adevarul este ca poti sa dezvolti eficient si profesionist pe ambele platforme. Dupa o perioada de acomodare (cativa ani) nu exista killer-advantages doar pe Linux sau doar pe Windows.
Cel mai castigat esti atunci cand intelegi ambele platforme si esti in stare sa iti alegi cele mai bune ingrediente dupa nevoi si gusturi, indeferent de platforma.
Spre exemplu poti sa dezvolti site-uri in ASP.NET folosind sistem de operare Windows + server IIS + VIM (in loc de visual studio) + Postgresql (in loc de MS SQL). Alt exemplu ar fi o aplicatie desktop compatibila cu Windows insa dezvoltata pe Linux folosind GCC + QT + emacs si Glade.
Multe librarii, tool-uri si abstraction layers se pot imbina si folosi cross-platform.
Personal, prefer modelul de dezvoltare de pe linux. Iata un setup pe care l-ai putea folosi (din multe alte setup-uri posibile). Sunt bineinteles preferinte personale.
- Debian
- GCC + Makefiles (neaparat sa citeste despre make!)
- Editor: vim sau emacs. Eu prefer vim dar ambele sunt foarte bune. Demn de mentionat este ca acestea doua fac parte dintr-o familie mai selecta de editoare. Sunt fundamental diferite fata de editoarele text din visual studio, eclipse, netbeans, jedit etc. Mi-e greu sa sintetizez diferentele intr-un paragraf. Ca programator vei petrece multa vreme citind si scriind cod sursa. Daca este si cazul tau, merita sa investesti timp in cautarea unui editor destept. Fa-ti timp sa citesti despre vim si emacs. S-ar putea sa-ti placa.
- Debugging de preferat cu printf, logging si cat mai multe teste automate. La nevoie bagi GDB si valgrind. Stii ca GDB este doar o consola de debugging. Daca vrei interfata gen RHIDE/BorlandC trebuie sa folosesti un wrapper separat care controleaza GDB in locul tau. Wrapper-e pentru gdb exista in emacs (integrat) si in vim (folosind clewn). Bineinteles, mai sunt o gramada, independente precum DDD sau integrate precum in Kdevelop.
- ctags si cscope pentru navigare prin cod sursa. Ambele se integreaza cu vim si emacs.
- subversion pentru source code management. Chiar si atunci cand lucrezi singur, un sistem de versionare este foarte util!
- documentatie pe internet: blog-uri, mailing lists, referinte, manuale samd. Nu te multumi doar cu o "enciclopedie" precum MSDN.
Needless to say, YMMV!