Ale taka prawda, M$ to syf, firma która zbiła kasę i zrobiła sobie monopol za pomocą świetnego marketingu, nie produktów. Mam ten komfort, że mogę sobie dobierać programy pod własne potrzeby, czego niestety nie obeznani w temacie nie mają i nie bardzo widzę połączenie Programowanie+Windows. Linux jest pod tym względem dobry, że jest rozszerzalny, można skonfigurować pod siebie. A co jeśli potrzebujemy stabilnego środowiska pracy? Mamy MacOS X. Te dwa systemy mają największy potencjał, dalej bym się zastanowił nad FreeBSD, ale to już akurat inna bajka.
PHP? To relikt, przy takim Ruby czy Pythonie to śmieszny żart (najkrótszy żart informatyczny? Programista PHP ^^). C ? Dobra, niskopoziomowe, ale jak kogoś to rajcuje to wcale go nie trzeba przekonywać. C++ ciągle się świetnie trzyma, bo jest szybki i jak na razie nie widać zastępcy (mówiło się o D, ale jak widać nijak idzie on do przodu). Do Javy mam sentyment (serio, jak piję kawę to często kojarzy mi się z tym językiem i platformą ;p), ale dzisiaj pisząc coś nowego zdecydowanie bym wybrał Scale (super język, zamierzam go się nauczyć dobrze, bo ma cholerny potencjał, choć pewnie nie ma co liczyć na pracę w nim w najbliższym czasie, a na pewno już nie w Polsce - to dla pasjonatów ;D).
W społeczeństwie informacyjnym ponad techniczne sprawy powinno się kłaść spełnienie wymagań, stąd z rozwagą podchodziłbym do przytoczonych przez Ciebie języków.
Nie miałem na myśli tworzenie zaraz jakiś skomplikowanych alogorytmów - tutaj oczywiste jest, że matematyk się do tego nadaje, bo musi zbadać poprawność, zoptymalizować, a programiście zazwyczaj zwisają takie rzeczy (czyt. nie ma na to czasu). Mam tutaj na myśli jednak co innego - algorytmika wyrabia specyficzny tok myślenia. Co więcej, uważam że albo ktoś ma predyspozycje do myślenia algorytmicznego (podobnie matematycznego), albo ich nie ma, ale i tu i tu można (i powinno!) się je rozwijać, w pierwszym wypadku daje szerokie pole manewru, w drugim pozwala spokojnie wykonywać swoją pracę. Nie chodzi o to, by znać jakieś przekichane algorytmy - chodzi o to, by czytając je rozumieć i podobnymi schematami tworzyć swoje. Myślisz że ja pamiętam algorytmy sortowania, ich kod ? Nie, absolutnie. Ja je zrozumiałem i jak widziałem, że spokojnie potrafię przetworzyć odpowiednie schematy i wyobrazić sobie (wyobraźnia tutaj jest ogromnie ważna!) to szedłem dalej, a nie uczyłem się ich na pamięć. Nie rozumiałem czegoś - zakładka i wracałem potem. Jeżeli potrzebuję użyć sortowania, to zazwyczaj wystarczy mi wiedzieć w jakiej bibliotece się znajduje, i ewent. jakie są dostępne.
Widzisz, na przykładzie, inaczej jest, jeśli zrozumiem tam przez wstawianie, quicksort, przez kopcowanie, bąbelkowe, scalanie, zliczanie, kubełkowe czy pozycjne (coś mogłem pominąć, ale to nie jest ważne), szybko sobie potrafię wyobrazić jak działa, jak się zachowuje dla konkretnych danych wejściowych (dużych, małych) i wybrać odpowiedni, a inaczej jeżeli na ślepo pamiętam gdzie jest procedura sort() i jak ją użyć. Nie bardzo sobie wyobrażam kogoś, kto pisze programy zawodowo nie rozumiejąc takich pojęć jak rekurencja czy złożoność obliczeniowa, no chyba że klepacz PHP czy .NET ;]
Ale z jednym się z Tobą w 100% zgodzę - .NET to narzędzie do zarabiania pieniędzy. I zarabiaj ich jak najwięcej, czego Ci szczerze życzę. Klient niech płaci za niewiedzę, taki jest ten świat, ma problem ? płaci za jego rozwiązanie.
Ale widzisz, ja po za pieniądzem widzę inne cele rozwoju oprogramowania i dlatego tak ostro odnoszę się w stosunku do M$ (zamykanie kodu źródłowego to argument numer 1 - skoro płacisz za produkt, to dostajesz go działającego razem z kodem, z produktami M$ to tak jakby kupować samochód tylko dla kręcenia kierownicą, bez możliwości tunningu. Kod powinien być otwarty, a nie zaraz darmowy jak często ludzie odbierają tą idee).