Jakiego języka programowania się nauczyć?

Matthew @ 2010-02-10 — Kategorie: Programowanie, Techblog

Ostatnio coraz częściej spotykam się z pytaniem osób, które chcą się nauczyć programować, jakiego języka warto się nauczyć pod kątem przyszłego rynku pracy. Czy jeżeli nauczę się języka X to będą miał pracę? Co lepiej, Y czy Z, żeby dużo zarabiać? I tego typu różne pytania.
Postanowiłem więc poświęcić trochę własnego czasu (i jutrzejsze niewyspanie w pracy) i odpowiedzieć na to, jakże ważne, z punktu widzenia młodego programisty, pytanie. Rada, wbrew pozorom jest bardzo prosta, nie trzeba poświęcać dużo czasu i wysiłku, żeby wcielić ją w życie oraz szybko przyniesie efekt. A mianowicie…

… idźcie do diabła.

Każda osoba, która zadaje to pytanie jest zakałą informatyki. Powinna przestać marzyć o tym zawodzie i znaleźć sobie jakieś ciekawsze zajęcie (prawnik, lekarz, strażak, mechanik, fizyk kwantowy). Nigdy nie osiągnięcie przyzwoitego poziomu. Może i będziecie zarabiać kilka tysięcy zł, może któremuś z was nawet jakimś cudem uda się zarabiać kilkanaście. Ale nadal pozostaniecie tylko marną imitacją prawdziwego programisty (bo o wyższych szczeblach kariery nie macie co marzyć).

Więc dotarliśmy do miejsca w którym część osób zdążyła opuścić tą stronę, rzucając sporą ilość bluzgów pod moim adresem. Druga część zaczęła te bluzgi wypisywać w komentarzach. Teraz coś dla inteligentnych. Nie potrafię zrozumieć skąd wzięło się to twierdzenie, że znajomość konkretnego języka programowania da sławę, kobiety, pieniądze i wieczne życie. Niewiedza gimnazjalistów, którzy po nocach grają w MW2, wychwalając jaką wspaniałą jest grą? Chęć pochwalenia się przed kolegami co się potrafi? Mało ważne. Ważniejsze jest to, co trzeba zrobić, aby z ww. osiągnąć chociaż jakieś sensowne pieniądze i może o sławie (bo o kobietach zapomnijcie, fajne dziewczyny nie lecą na takie banalne bajery, a życia wiecznego jeszcze nikt na tym świecie nie doświadczył)?

Jakość głupcze!

Nieważne jest co robisz, tylko jak. Nieważne w czym piszesz swoje programy, ważne, żebyś robił to dobrze, Twój kod był szybki, czytelny i… parę innych których będą was próbowali nauczyć, a i tak po przyjściu do pracy będziecie popełniać błędy. Ważne, żeby to co robisz miało sens i dobrze działało. Nawet jeżeli będziesz zaliczał wpadki, ale systematycznie się uczył i podnosił swój poziom, lepiej na tym wyjdziesz niż na znajomości nawet najbardziej pożądanego języka programowania. Zwykły zamiatacz ulic, który dobrze wykonuje swoją pracę, jest bardziej wartościowy niż mizerny programista.

Jakość i ilość

Znajomość konkretnego języka programowania nie gwarantuje jeszcze porządnej pracy (choćby było zapotrzebowanie na programistów tego języka znacznie przewyższające liczbę programistów). Warto znać kilka języków. Nie trzeba wszystkich od razu znać perfekcyjnie na pamięć, wraz ze wszystkimi ważniejszymi bibliotekami (tego i tak nikt nie pamięta, od tego jest dokumentacja). Przydatna umiejętność w przypadkach jeżeli Twój ulubiony język nie jest najlepszym narzędziem do rozwiązania problemu z którym przyjdzie Ci się zmierzyć. Nigdy też nie wiadomo czy nie będziesz musiał zarobkowo programować w czymś innym. Dodatkowo zawsze zdobywasz w ten sposób nowe umiejętności. Poszerzasz swoje horyzonty. I nawet jeżeli nie masz zamiaru nauczyć się jakiś egzotycznych języków to możesz poznać te, które wiążą się z Twoją dziedziną.

Modne i lubiane

To, że w tej chwili coś jest modne i często wykorzystywane (jak Java i C#) nie oznacza, że będzie takie za 5 lat. Jeżeli język jest popularny, to prawdopodobnie bardzo łatwo zastąpić jednego programistę innym (nawet studentem). Może warto zainwestować trochę czasu w naukę mniej popularnych języków? Taki COBOL nadal jest wykorzystywany w bankowości a większość jego programistów albo nie żyje, albo siedzi w domach spokojnej starości.

Nie języka a programowania ucz się

Nauka języka to tylko czubek góry lodowej którą trzeba pokonać aby stać się dobrym programistą. Znacznie ważniejszy jest sposób w jaki rozwiązujesz problemy. Inteligencja, doświadczenie, postrzeganie świata i umiejętność przełożenia to na kod, algorytmy. To są rzeczy nad którymi powinieneś skupić swoją uwagę. Języka można się nauczyć w miarę szybko. Pozostałe rzeczy potrzebne do bycia dobrym programistą zdobywa się latami. Chyba że jest się zdolnym, ale wtedy raczej nie zadaje się takich pytań.

Pasja

Znam sporo osób, które zarabiają całkiem rozsądne pieniądze. Wszystkie te osoby podchodzą do swojego zawodu z pasją i oddaniem (nie znam za to ani jednej która by zarabiała dużo podchodząc do tego tylko w kategorii aby zarobić jak najwięcej). Ich bycie programistą nie zaczyna się o 8 rano i nie kończy o 16. Dzięki poświęceniu swojemu hobby mogli osiągnąć to co teraz mają.

Komentarze:

+1
Dlatego śmieszny mnie ostatnio nagonka w polskim (i nie tylko polskim) internecie na PHP :)

+2 :) Algorytmy, algorytmy i jeszcze raz algorytymy. Co z tego ze gosc w piec minut napisze kod, ktory bedzie sie wykonywal godzine, jak ktos z doswiadczeniem zastosuje odpowiedni do danej sytuacji algorytm i po godzinie kodowania kod bedzie sie wykonywal w 5 minut… :)

Piotrek Reinmar Koszuliński @ 10 lutego 2010 o 01:19:

Sam też jestem atakowany takimi pytaniami, ale chyba mam więcej wyrozumiałości niż Ty w stosunku do pytających ;) Chociaż może ważny jest kontekst.

Do mnie trafiają koledzy z roku (2-3 rok studiów), którzy trochę już potrafią programować (zazwyczaj w wymuszonym przez uczelnię języku), chcieliby doszkolić się w kontekście załapania jakiejś dorywczej roboty, ale nie znają rynku. Co prawda nikt się mnie nie pytał którego się uczyć żeby zarabiać najwięcej. Zazwyczaj interesuje te osoby kwestia ilości ofert, z naciskiem na pracę, którą może wykonywać dorywczo student. Nie uważam takiego pytania za głupie – to po prostu korzystanie z doświadczeń bardziej doświadczonych kolegów.

Za to zgadzam się w 100%, że raz – trzeba mieć pasję, dwa – uczyć się programowania, a nie języka. Co do pierwszej kwestii, to nie mogłem nigdy zrozumieć jak na studia informatyczne mogą iść osoby, które nigdy w życiu nie napisały więcej niż 10 linii kodu, bądź nie interesują się czymś co będzie tematem studiów.
Za to z drugą kwestią łączy się w zasadzie odpowiedź na pytanie, które początkujący zadają. Moim zdaniem im więcej języków chociaż liznęliśmy tym szersze mamy programistyczne horyzonty. Jest łatwiej znaleźć analogie pomiędzy rozwiązaniami różnych problemów jeśli znamy podejścia z wielu języków, jest też łatwiej uczyć się nowych rzeczy, bądź np. przekładać dobre rozwiązania z jednego języka na drugi. Znając też więcej języków możemy sobie sami odpowiedzieć na pytanie, który język nam się podoba i którego chcemy się uczyć, a chyba nikt nie chciałby programować całe życie w języku, który go irytuje :)

Odnośnie przedostatniego akapitu – znajomość algorytmów, wzorców projektowych, paradygmatów programowania i składni języka to nie wszystko. Nawet jeśli ma się do czynienia z przedstawicielem danej rodziny języków to łatwość migracji między językami jest tak właściwie czymś pomijalnym. Trzeba jeszcze poświęcić sporo czasu na poznanie biblioteki standardowej i tych kilku innych narzędzi używanych lub bardzo popularnych w danym środowisku.

Chociaż nie można się nie zgodzić ze stwierdzeniem, iż znajomość języka bez znajomości podstaw pokroju złożoności obliczeniowej, algorytmów, wzorców projektowych itp. może jedynie uczynić kogoś zdolnym klepaczem kodu. Natomiast odwrotna sytuacja zapewnia znaczącą przewagę tam, gdzie ważniejsza jest elastyczność myślenia, niźli miara wydajności będąca liczbą linii kodu dzieloną przez liczbę godzin pracy programisty.

Najlepiej jest umieć myśleć oraz porządnie znać narzędzia, którymi się posługuje. I żeby nie było – w ogólności zgadzam się z tym, co napisałeś ;]

Co do języków – zapomniałeś dodać FORTRAN-a oraz cytatów dot. COBOL-a, o których dyskutowaliśmy :D

„Jakość, głupku” – lepiej brzmi „głupcze” ;)

Reinmar: „Za to zgadzam się w 100%, że raz – trzeba mieć pasję, dwa – uczyć się programowania, a nie języka. Co do pierwszej kwestii, to nie mogłem nigdy zrozumieć jak na studia informatyczne mogą iść osoby, które nigdy w życiu nie napisały więcej niż 10 linii kodu, bądź nie interesują się czymś co będzie tematem studiów.” A co, jeżeli ktoś chce wiązać swoją przyszłość z informatyką, komputerami, ale bardzeij widzi się jako sysadmin, sieciowiec etc. a nie małpa do klepania kodu :>? To wtedy na jaki kierunek ma iść :>?

@Pecet: nagonka jest uzasadniona. Raz fatalną sytuacją na rynku (zbyt popularny język, większość programistów może być zastąpiona dzieciakami), dwa wadami tego języka które nagromadziły się przez lata. Mam praktykę z PHP, a o wiele przyjemniej pisze mi się w C#, C++ czy Javie (chociaż tej ostatniej też nie darzę sympatią, ale z innych powodów).

@mt3o: czyli problemem PHP jest to, że jest prosty i popularny? Kthx. Zapamiętam sobie. Zgodzę się co do tego, że w czasie rozwoju PHP popełniono dużo błędów decyzyjnych ale z czasem (czyt: PHP6) są one stopniowo poprawiane.

Ogólnie artykuł dobrze prawi ;-)

@BTM: wbrew pozorom PHP nie jest prosty. Wystarczy, że wspomnę tylko popaprane nazewnictwo funkcji raz w konwencji podmyślnikowej innym razem wielbłądziej, albo różną kolejność argumentów dla analogicznych funkcji (raz needle, haystack, raz haystack, needle). Zgodzę się, że z czasem to się poprawia, ale stan obecny (dominujące PHP4 i PHP5) to taki punkt krytyczny wkurzenia programisty. Szczególnie jeśli równolegle ma się kontakt z Javą i C#

@mt3o: oj, nie chodziło mi o nazewnictwo, bo to jest totalna porażka, ale po góra roku masz już je na tyle opanowane, że do manuala zaglądasz tylko po format dla date() ;-) Chodziło mi ogólnie o „łatwość” (bo nie do końca jest to ułatwienie) wynikającą z braku typowania etc. Ale koniec, bo schodzimy z tematu ;]

Co do wpisu: bez przesady z tą jakością: trzeba mieć co robić po wydaniu produktu. :D :P
@klausa: admin/sieciowiec, który nie potrafi oskryptować potrzebnych mu rzeczy, nie jest adminem/sieciowcem. Lepszym przykładem byłby analityk/dokumentowiec – ale i ten bez znajomości praktycznej języków nie pojmie wzorców, etc. i nie będzie potrafił napisać porządnej analizy.
No i wypraszam sobie małpę do klepania kodu! ;>

Panowie i Panie programisci, zapomnieliscie i jeszcze jednej dosc istotnej umiejetnosci, kt. obecni programisci sie skutecznie wyzbywaja. Chodzi o znajomosc srodowiska, w kt. programuja (i nie chodzi o IDE :))) ). Np. programista umie cos napisac w javie, ale kompletnie nic nie wiem o vm javy. Pisze aplikacje webowa (webserwisy, strony, cokolwiek) a nic nie wie o protokole http. to podejscie niestety dotyczy nie tylko programistow java. zauwazylem rowniez niechec do poznawania bibliotek. programista wie jakie sa metody klasy, funkcje w bibliotece, ale juz nie wie co i jak robia. zna ich efekt koncowy. a wlasciwie tylko mu sie tak wydaje.

tak wiec Panowie i Panie, nie tylko algorytmy i jezyki. Jeszcze warto czasami postawic sobie dodatkowe pytanie i udzielic sobie na nie odpowiedzi: „jak to wszystko dziala?”

– „Jakiego języka programowania się nauczyć?”
Ja bym odpowiedzial tak: na poczatek – zacznij pisać. :)

@Piotrek Reinmar Koszuliński: do mnie niestety uderzają przeważnie (chyba) gimnazjaliści. Co innego pytanie, czego się uczyć, bo się może przydać, a co innego czego się uczyć, bo chcę zarabiać taaaaaaaką kasę. A do notki (bo sprawę miałem olać) w takiej a nie innej formie (chociaż pierwotna była znacznie ostrzejsza) zmusiło mnie (wreszcie) to: http://devpytania.pl/questions/768/java-czy-c-czego-bardziej-oplaca-sie-uczyc i to: http://devpytania.pl/questions/883/programista-c-czy-da-sie-dobrze-zarobic
Jeszcze co do ilości napisanego kodu. Przed studiami (i nie licząc jakiś małych projekcików na studiach, które jednak wzorem jak powinno się programować nie są), dopóki nie poszedłem do pracy (po 3 latach spędzonych tutaj) nie napisałem, ani jednego większego projektu. Mimo to czasami jestem chwalony za czytelność i zrozumiałość moich programów (talent, kchłe kchłe kchłe ;P). Ale mam też wrażenie, że im dłużej jestem w pracy tym to coraz gorzej wygląda (raz, że Java mnie ogłupia trochę, a dwa… mam dziwne wrażenie stosowania jakiś pokręconych praktyk w firmowym kodzie).

@Zal: przykład COBOLa wydaje się jednak daleko bardziej ciekawy oraz obrazujący co poeta miał na myśli.

@Symek: dzięki, poprawione.

@klausa: to pytanie wypływa od przyszłych programistów, chociaż sysadmini też potrzebuję znajomość języków skryptowych, ale oni raczej takich pytań nie zadają.

@@lan (hmmm… klonowanie małp? O_o): od tego są sleepy. Nie wierzę również, że dobry programista nie zrobi czegoś, żeby mieć później co pielęgnować. :]

@Matthew: jasne. To było z przymrużeniem oka napisane. ;) Robi się wystarczająco dużo nieświadomych błędów, aby sobie pozwalać na dodatkowy brak jakości. :D

@@lan: kto robi ten robi. ;P

Plus za szczytne idee. W ramach humoru ogłoszenie z firmy, w której kiedyś pracowałem ;-)
http://kosciak.blox.pl/resource/czas_dev.jpg

Pasja pasją, ale z czegoś trzeba żyć. A skoro „nieważne, w czym piszesz programy”, to można wziąć pod uwagę kryterium finansowe.

Popatrzmy na to z perspektywy kogoś, kto chce zbudować sobie karierę/zabezpieczyć przyszłość, a jednocześnie zdaje sobie sprawę z tego, że (statystycznie) bezpieczniej jest pracować w czyimś projekcie niż liczyć na to, że samemu stworzy się coś na miarę następnego Facebooka.

Języki (a w zasadzie technologie, bo „język” sugeruje zaledwie składnię) mają różną popularność. Popularność przekłada się na liczbę ofert i miejsc pracy.

Popularność języka przekłada się też na liczbę programistów. Im więcej programistów tym, w uproszczeniu, gorzej — płace spadają, język traci renomę, bo przyciąga miernych „fachowców”. Ale jeśli popularność jest odpowiednio duża, to pojawiają się wyraźne i całkiem spore nisze dla prawdziwych programistów — gdy idzie o krytyczne projekty, lub (w wariancie pesymistycznym) ratowanie kodu po partaczach.

IT poza środowiskiem akademickim to instrument wspierający biznes, powiązany z konkretnymi branżami. Branże mają różną specyfikę, przekładającą się na warunki pracy i płace. Branże mogą być wewnętrznie mniej lub bardziej jednolite pod tym względem, ale dla każdej można oszacować jakąś medianę i porównać je ze sobą.

Branże oferują też różne ścieżki rozwoju zawodowego (w skrajnym przypadku płaska struktura kontra drabina z milionem szczebli). Branże potrafią też wykazywać przywiązanie do konkretnych technologii (głównie ze względu na istniejące już projekty).

IT nie jest jakimś abstrakcyjnym bytem zawieszonym w próżni, więc wybór technologii może mieć duży wpływ na to, które segmenty rynku sobie otworzysz, a które zamkniesz. Jeśli chcesz programować zawodowo, to powinieneś chociaż w podstawowym stopniu zrozumieć co ta profesja robi (w czym, dla kogo, za ile) i jakie są prognozy na przyszłość.

A że są ludzie, którzy wchodzą w IT tylko dla pieniędzy? Od tego żadna branża nie jest wolna. Trzeba umieć z tym żyć i tyle, to część profesji…

A w liceach zaczyna się od Pascala…

@Livio W których liceach? W moim albo się nie programuje, albo zaczyna się od C.

U mnie w gimnazjum był pascal. A to jakiś zły język jest?

C w liceum? Miło. Przerabiacie też jakieś bardziej odlotowe rzeczy — projektowanie popularnych struktur danych, albo arytmetykę na wskaźnikach?

ZS2 Szczytno: mat-inf „Linux”. Najśmieszniejsze, że liczba prawdziwych lekcji nie przekroczyła liczby palców obu rąk. „Rupta co hceta” :/ . Większość narodu tłumaczy, że Pascal uczy złych nawyków. Ale jakie to są, to się już nigdy nie dowiedziałem.

@Hopke- nie wiem, co robi wyższa grupa. Ja się przeniosłem do niższej, bo informatyka moim źródłem chleba nie będzie. Dziewiąte LO w Szczecinie, inf-mat.

U mnie w technikum w pierwszym roku pascal, potem C, aktualnie (4 klasa) C++. Dodatkowo robimy projekty w dowolnym jezyku (w moim przypadku python). Chociaz nie uczyy sie tak duzo jak powinnismy to narzekac nie moge.

nie algorytmów (chociaż znajomość znanych rozwiązań też się przyda) a umiejętność tworzenia własnych, umiejętność znalezienia problemu i drogi do jego rozwiązania. W technikum uczłem się Pascal, C++, Turbo C++ (GUI w Borlandzie, bleh), C++ z wykorzystaniem bibliotek (QT), Java (nauczyciel był zajebisty), to na programowaniu. Na systemach windows, linuks (nic nowego się nie nauczyłem). Aplikacje www – HTML,JS,PHP (JSa się nauczyłem, i stwierdzam, że nie lubię go). Na studiach na razie katuję C (1 rok), w międzyczasie robię sobie różne fajne skrypty shellowe (funkcyjnie), php (z. obiektowo, ale też go nie lubię). Ogólnie preferuję języki z czytelną składnią i silną typizacją (czyli nie lubię JSa, PHP, Pascala, Java jeszcze może być).

Piotrek Reinmar Koszuliński @ 10 lutego 2010 o 17:43:

Przepraszam mazdac, że posłużysz za przykład, ale w związku z tematem i Twoją wypowiedzią przyszła mi do głowy jeszcze jedna myśl.
Napisałeś, że nauczyłeś się JSa. Mogę się mylić, ale domyślam się, że poznałeś jego składnię, kilka metod, może wiesz coś, że jest obiektowy, ale tak naprawdę to koniec.
Uważam, że częstym grzechem początkującego programisty (typowego ucznia/studenta) jest to, że po kilku(nastu) projektach jakie napisał wydaje mu się, że zna już dany język i jest w nim dobrym programistą (skoro potrafi napisać X i Y). Implikuje to pogląd, że „wystarczy mi przeczytać ten manual/książkę i mogę iść do pracy, bo przecież znam składnię”, który spotkałem już kilkukrotnie. Łączy się to też z tym, że niektórzy w momencie kiedy zaczynają zarabiać programując w danym języku przestają się rozwijać, bo myślą, że już są na świetnym poziomie (skoro ktoś im płaci).
Sam chyba też przechodziłem przez taki okres. Dopiero ostatnio, kiedy spotkałem w pracy sporo ciekawych ludzi, dotarło do mnie jak mało umiem. Cenna lekcja – wróciłem do nauki nawet języków w których nie tylko ja sam, ale i koledzy, uznawali mnie za „eksperta”.

FLAME_START: JS nie jest prostym językiem, nie da się go nauczyć w miesiąc ;) FLAME_END

mazdac: Cóż, ambitny to cel — dawno nie widziałem nietrywialnego algorytmu który nie byłby jakąś pochodną czegoś, co zostało już wynalezione. Poznanie istniejących algorytmów pozwala uniknąć wynajdywania koła od nowa. Można skupić się na tym, co jest w problemie nowe, a nie na kawałkach, które mają rozwiązania opisane już na Wikipedii.

To tak jak np. z wzorcami projektowymi — jeśli masz łeb na karku, to samemu dojdziesz do podobnych rozwiązań, ale znajomość wzorców jako wzorców pozwala na odwoływanie się do nich za pomocą standardowych nazw. Są też inne korzyści, ale już dla samych nazw warto. Tak samo z algorytmami czy strukturami danych.

Wolę, by ktoś mi powiedział „no i potem idę po grafie breadth-first, wrzucam elementy do fifo”, niż żeby używał terminologii którą sam wymyślił.

Poza tym serio, IT jest tak obszerne, że nie ma co marnować czasu na wynajdywanie wszystkiego samemu (i powtarzanie cudzych błędów). Ucz się od innych, kombinuj samemu dopiero gdy istniejące rozwiązania z jakiegoś powodu nie spełniają wymogów (lub nie sposób je wyszukać).

Nieważna jaki język, ważne żeby spędzić minimum 10k godzin programując aktywnie, rozwiązując problemy algorytmiczne jednocześnie.
Potem to już nie będzie miało znaczenia i tak.

Na prawdę nie rozumiem agresywnego tonu tego wpisu. Co w tym złego, że ktoś szuka dobrego języka? Dobry język znaczy: popularny, przyjemny i z dobrym IDE. Wybór odpowiedniego języka jest najważniejszy w kształtowaniu swojej kariery. Więc zamiast obrażać ludzi poważnie podchodzących do swojej przyszłości mogłeś po prostu napisać:
„Nie PHP, nie Java, nie C# tylko Ook. Ook to najlepszy język programowania, stworzony z myślą o Was!”.

– @masakatsu – Mylisz sie, jezyk to sprawa wtorna, najwazniejsze w ksztaltowaniu kariery jest zupelnie co innego :)…

Piotrek Reinmar Koszuliński @ 10 lutego 2010 o 21:47:

@DrLex: nie zgodzę się z tym, że samo programowanie wystarczy by być dobrym programistą. Tutaj muszę w 100% zgodzić się z Hoppke – jedną z najważniejszych cech, poza samym klepaniem kodu, jest umiejętność porozumiewania się z innymi programistami. Nie mając podstaw teoretycznych, nie znając słownictwa będziemy gadali różnymi słowami o tym samym. Do tego teoria jest przydatna by znaleźć analogie pomiędzy algorytmami i by umieć wyklarować czyste wzorce projektowe z kodu który się tworzy.

PiotrLegnica @ 10 lutego 2010 o 23:04:

-42.

> Jakiego języka programowania się nauczyć?

Angielskiego. Potem ponowić pytanie podając planowane zastosowanie.

> Nigdy nie osiągnięcie przyzwoitego poziomu.

> Chyba że jest się zdolnym, ale wtedy raczej nie zadaje się takich pytań.

Taaak, nigdy, przenigdy nie pytajcie nikogo bardziej doświadczonego o zdanie. NIGDY NIGDY.

> To, że w tej chwili coś jest modne i często wykorzystywane (jak Java i C#) nie oznacza, że będzie takie za 5 lat. Jeżeli język jest popularny, to prawdopodobnie bardzo łatwo zastąpić jednego programistę innym (nawet studentem). Może warto zainwestować trochę czasu w naukę mniej popularnych języków? Taki COBOL nadal jest wykorzystywany w bankowości a większość jego programistów albo nie żyje, albo siedzi w domach spokojnej starości.

Czyli wszyscy powinni rzucić wszystkie nowoczesne języki i uczyć się COBOLa, żeby całe życie utrzymywać legacy code (Fortran jest nadal aktywnie wykorzystywany, BTW)? Chyba przegapiłem wyjaśnienie tego akapitu.

> Algorytmy, algorytmy i jeszcze raz algorytymy.

Znaczy uczysz się algorytmów na pamięć, potem rzeźbisz je w drewnie i modlisz się do nich? Powiedziałbym raczej „pragmatyzm, pragmatyzm i jeszcze raz pragmatyzm”. Ktoś już to zrobił, użyj tego. Szczególnie jeśli w 10 sekund można napisać kod, który będzie wykonywać się minutę, zamiast tracić czas na implementację od zera i optymalizację.

Nie ma implementacji? No to bierzesz opis i implementujesz. No tak, ale do tego trzeba znać język. Ale ale! Nie wolno ci się uczyć języka, póki nie nauczysz się ‚algorytmów’! Deadlock.

Sucha teoria jest dobra do teoretyzowania i… teoretyzowania. Mindset zmienia się wraz z praktyką. Cześć, uczyłem się programowania ~7 lat temu przepisując przykłady z CD-Actionowego kursu Pascala. I załapałem osochozi bez teorii i z zerowym wykorzystaniem matematyki. AMA.

> Nieważna jaki język, ważne żeby spędzić minimum 10k godzin programując aktywnie, rozwiązując problemy algorytmiczne jednocześnie.

Kontekst, kontekst, kontekst. Do np. webdevu to stracone 10k godzin. Bardzo stracone.

A weak typing to najgorszy wynalazek ludzkości, jak już jesteśmy przy JS i PHP.

– Pragmatyzm swoja droga a algorytmy swoja. Jesli tylko potrafisz skladac kod z klockow to do programisty masz jeszcze lata swietlne… Nikt nie twierdzi zeby klepac algorytmy na sucho, bez prob implementacji ergo nauki jezyka same algorytmy nic ci nie dadza, ale wlasnie przez pragmatyzm – skoro ktos jus wczesniej wymyslil sposob na quicksorta – to spraw by slowo cialem sie stalo i zaimplementuj ten algorytm w swoim projekcie. Od razu uprzedze argument o wykorzystaniu gotowego mechanizmu – gotowe mechanizmy nie zawsze pasuja naprzyklad do twojego specyficznego formatu obiektu… :)

– Chciałbym również skromnie zauważyć, że to nie ‚murzyni’ od klepania kodu najwiecej zarabiaja, tylko ‚architekci’, ktorzy potrafia na calosc danego zagadnienia spojrzec na nieco innym poziomie abstrakcji :) a w tym przypadku jezyk jest kwestia drugorzedna :)

PiotrLegnica @ 10 lutego 2010 o 23:17:

> Od razu uprzedze argument o wykorzystaniu gotowego mechanizmu – gotowe mechanizmy nie zawsze pasuja naprzyklad do twojego specyficznego formatu obiektu…

`sorted(L, key = lambda o: o.foo)`

Ups. Nawet nie wiem, czy to quicksort. Co mnie to obchodzi.

> Chciałbym również skromnie zauważyć, że to nie ‚murzyni’ od klepania kodu najwiecej zarabiaja, tylko ‚architekci’, ktorzy potrafia na calosc danego zagadnienia spojrzec na nieco innym poziomie abstrakcji

‚Ooh, znam to! To jest quicksort! – Dostaniesz podwyżkę!’. Umm, right. Chcesz mnie przekonać, to podaj konkretne przykłady.

I niech mi ktoś wreszcie wyjaśni, dlaczego Jogger pozwala na wyłączanie Markdown w komentarzach. :L

– Co cie to obchodzi? Ano zacznie, jak klient zacznie zglaszac zastrzezenia co do wydajnosci programu.
Konkretne przyklady? To spytaj w pierwszej lepszej branzowej firmie ile zarabia gosc od implementacji a ile gosc od projektowania systemow informatycznych.

– btw. skad pomysl ze chce Cie przekonac?:)

PiotrLegnica @ 10 lutego 2010 o 23:28:

> Ano zacznie, jak klient zacznie zglaszac zastrzezenia co do wydajnosci programu.

Premature optimisation blah blah. Na pewno znasz to zdanie. Jest duża szansa, że gdzieś jest lepsza implementacja, jeśli ta jest niewystarczająco dobra. Ostatecznie — opis algorytmu i piszemy, zresztą już o tym mówiłem. Nadal nie wiem, czego tu się trzeba uczyć.

> To spytaj w pierwszej lepszej

Bardzo konkretnie. BTW, wydawało mi się, że jednym z argumentów tego postu jest ‚nie pieniądze tylko pasja’. Może źle czytam. 16h snu, bleh.

> skad pomysl ze chce Cie przekonac?

Er, dyskusja?

wsumie dobrze napisane, ja np nigdy sie nie spytalem jaki jezyk wybrac by zarabiac, jak juz to pytalem sie jaki jest bardziej aktualnie trendy badz od ktorego zaczac, niestety jakos mi to nie wchodzi lecz usilnie pruboje swoich sil i nie po to by zarobic a dla samego siebie. Poznania jak to dziala ulatwienia sobie zycia kiedy nie ma alternatyw badz kiedy trzeba ustawic system pod swoje wymagania

„Nieważna jaki język, ważne żeby spędzić minimum 10k godzin programując aktywnie, rozwiązując problemy algorytmiczne jednocześnie. Potem to już nie będzie miało znaczenia i tak.”

Odróżniajmy proszę język od całej technologii; mało kto sam tworzy sobie wszystkie potrzebne klocki w „gołym” języku, większość programistów musi umieć skorzystać z bibliotek „standardowych” i dodatkowych frameworków. A tu niestety praktycznie każde środowisko trzeba poznawać od zera. Mogę mieć świetnie opanowane C++ i .NET, ale jeśli zechcę się wziąć za PHP, to i tak będę miał kupę nauki przed sobą.

Tak na marginesie, to „10k godzin” zostało napisane na serio? Czyli programując, powiedzmy, trzy godziny dziennie codziennie, bez względu na święta, weekendy i inne dni wolne, musiałbym ćwiczyć dziesięć lat, by móc o sobie powiedzieć „dobry programista”?

BTW, widziałem parę miesięcy temu ofertę dla programisty COBOL-a. Zawsze myślałem, że ludzie z tak niszową umiejętnością są bardzo wysoko cenieni… ale oferowana stawka to było mniej-więcej tyle, co koder javy czy .net dostaje rok czy dwa po studiach.

Zbyt niszowe == tanie, bo pracodawca wie, że i tak weźmiesz, gdyż to jedyna taka oferta w promieniu 1500km?

– Nie wiem nad jakimi projektami do tej pory pracowales, ale w duzych firmach, ew. firmach osblugujacych duze przedsiebiorstwa ‚premature optimisation’ jest jak najbardziej zasadne. Klient juz na etapie testow zglasza zastrzezenia co do wydajnosci i kupa ze sprzedazy. Nie pisze sie ‚byle by dzialalo’ tylko ‚by dzialalo dobrze’.
Mam ci podac widelki? Dobre. A jeszcze jakies fajne pomysly? Rusz glowe tudziez inna czesc ciala i poszukaj. Na tacy ci danych podstawial pod nos nie mam zamiaru. Albo moze w druga strone, przekonaj mnie ze tak nie jest, pokaz ze klepacz kodu zarabia wiecej od projektanta…

Hmm, AFAIR pytanie z tematu bylo jaki jezyk wybrac w zwiazku z rozwojem kariery, a tu pieniadze raczej dosc spory udzial maja…

Tam od razu dyskusja :) Rzucilem tylko truizmem. Bez znajomosci algorytmow jestes dupa a nie programista. I to powie ci kazdy normalny koder. Poza tym w przytoczonym gdizes niedaleko artykule widac jak pieknych programistow mamy. Proste zadanie i nie potrafia napisac kodu. A, i na koncu mojego wpisu jest ‚:)’ – http://en.wikipedia.org/wiki/Emoticon :)

PiotrLegnica @ 10 lutego 2010 o 23:46:

> Nie pisze sie ‚byle by dzialalo’ tylko ‚by dzialalo dobrze’.

Hello, this is planet Earth. How was your trip from Utopia?

Widełki… nie szukam, bo szczerze nienawidzę projektowania, i nie robiłbym tego za żadne pieniądze.

> Bez znajomosci algorytmow jestes dupa a nie programista.

Których algorytmów? Znasz wszystkie algorytmy? Po nazwach, czy na pamięć? My point still stands.

Jak zadanie naprawdę nie jest ponad moje siły, to z pełnym opisem i dostępem do Internetu je zrobię. Algorytm z pamięci? Prawdopodobnie mogę nazwać. Albo i nie. Mam wystarczające problemy z pamięcią i bez trzymania w niej ogólnodostępnych bzdur przez czas nieokreślony.

„Odróżniajmy proszę język od całej technologii; mało kto sam tworzy sobie wszystkie potrzebne klocki w „gołym” języku, większość programistów musi umieć skorzystać z bibliotek „standardowych” i dodatkowych frameworków. A tu niestety praktycznie każde środowisko trzeba poznawać od zera.”

Tró. Z tym, że nauka środowiska jest raczej mniej zasobożerna niż nauka samego języka.

Do tego dochodzi jeszcze nieświadomość wielu początkujących programistów tego faktu, iż zaczynając pracę w jakiejkolwiek firmie, zmuszeni będą nauczyć się nie tylko środowiska, w którym sie tam pracuje, ale rónież konwencji, różnych dodatkowych narzędzi, systemu uprawnień, procedur(moje ulubione słowo) i całej reszty tego tałatajstwa, która sprawia, że ponoć tydzień pisania w domu jest wart miesiąca w firmie (twierdzenie znalezione gdzieś w sieci, nie moje! :) )

Ale ja nie twierdzę że trzeba wszystko znać na pamięć.
Problem w tym, że ludzie nie rozumieją algorytmów podstawionych pod nos i nie potrafią ich przełożyć na kod. I tego trzeba się uczyć.
Sam również nie znam wszystkich algorytmów, co więcej, większości pewnie po nazwie też bym nie poznał.
Ale mając dany algorytm przed oczyma jestem w stanie bez większych problemów napisać program. W C#, JS, C++ czy PHP. (pomijam tu oczywiscie cechy specyficzne dla danego jezyka – w JS wskaznikow raczej nie zaimplementuje).

A co do wycieczki, jeszcze nie wrocilem.
Ja pracuje w firmie, w ktorej jest caly dzial QA, bodajze ze trzy razy wiekszy niz developerski, ktory zajmuje sie testami – rowniez wydajnosciowymi. Jesli dana aplikacja nie spelnia wymagan wraca do devow – klient na pewno tego nie zaakceptuje.

Nie mowie tu w kontekscie pracy dla Supekomptech z Programowic Wielkich piszacej komunikator czy inne badziewie. Mowie o pracy dla najwiekszych globalnych koncernow. Odbije pileczke i tobie poradze przyjrzec sie blizej rzeczywistosci w ktorej operujesz. Byc moze w malych firmach bylejakosc jest standardem. Cale szczescie ze czesc firm jednak stawia sobie za zadanie dostarczanie dobrego oprogramowania :)

sory ze tak jeden pod drugim.

cytat z podlinkowanego artykulu:

„Napisz program, który wypisuje liczby od 1 do 100. Ale dla wielokrotności trójki wyświetl „Fizz” zamiast liczby oraz dla wielokrotności piątki wyświetl „Buzz”. Dla liczb będących wielokrotnościami trójki oraz piątki wyświetl „FizzBuzz”.

Większość dobrych programistów powinno być w stanie napisać taki program na papierze w przeciągu kilku minut. Chcesz poznać coś strasznego? Większość absolwentów informatyki nie potrafi. Widziałem również samozwańczych starszych programistów, którym napisanie rozwiązania zajęło więcej niż 10-15 minut. ”

Sad but true…

PiotrLegnica @ 11 lutego 2010 o 00:19:

> cytat z podlinkowanego artykulu:

Szkoda, że nie oryginał, który zresztą czytałem dawno temu. To jednak bardziej testuje znajomość języka niż tej mitycznej algorytmiki.

> Problem w tym, że ludzie nie rozumieją algorytmów podstawionych pod nos i nie potrafią ich przełożyć na kod. I tego trzeba się uczyć.

Będę uparty i powiem, że to nie nauka algorytmów, tylko angielskiego. No, i mindset. O tym też mówiłem. :P

> Odbije pileczke i tobie poradze przyjrzec sie blizej rzeczywistosci w ktorej operujesz. Byc moze w malych firmach bylejakosc jest standardem.

Jak dotąd? Open source i okolice. Jakie są standardy w firmach — dunno (TBH za trochę ponad miesiąc dopiero kończę 18).
Za to sporo czytam (bom leń, sad but true ;)) — kod, blogi, artykuły, takie tam. I widzę jak soft działa. Ten zamknięty też.

A premature optimisation — nah. Jeśli QA zawróci kod, to tak, ale spędzanie kilku godzin nad jednym małym fragmentem kodu bez wyraźnego powodu to IMHO strata czasu.

> Ja pracuje w firmie, w ktorej jest caly dzial QA

Good for you. Ale to nie cały świat.

PiotrLegnica @ 11 lutego 2010 o 00:22:

– Powiem tylko tyle: porozmawiamy jak popracujesz w jakiejs wiekszej firmie. Uwierz mi, ta wiedza przychodzi z doswiadczeniem, niestety…
A ten test sprawdza zdolnosc myslenia a nie jezyka… (czyli ….a….tak dokladnie…:) )
Heh, masz tupet kolego, ‚to nie caly swiat’?, dobrze ze ty taki oblatany :].
Btw. nie twierdze ze trzeba np taki encryption od postaw implementowac czy od razu rozumiec jego logike. Ale jesli sie okazuje ze szyfrowanie danych zajmuje przykladowo 16 godzin, bo u klienta do bazy wplywa kilkanascie milionow rekordow z rozynch zrodel, to wtedy biblioteki nic ci nie dadza…
Na koniec (z mojej strony EOT) zacytuje tylko kolege z jednej z firm w ktorych pracowalem, wybitnego wrecz programiste, kierownika dzialu programistow, ktory majac doswiadzcenie z dziesiatkami osob programujacych w tamtej firmie stwierdzil:
Zwykly programista kiedy dostaje zadanie siada i zaczyna pisac. Dobry programista w tej samej sytuacji siada i mysli.
Z teog co piszesz chyba wynika ze zaliczasz sie jednak do tej pierwszej kategorii. Ani mindset ani angielski nie pomoga jesli nie potrafisz myslec.
EOT
PS. W moim przypadku fizzbuzz w C# – 90s. Pozdrawiam.

@PiotrLegnica: Niestety muszę Cie zmartwić ale nie masz racji. Większość osób tutaj się wypowiadających to zawodowi programiści (albo coś koło tego) i wiedzą jak to wygląda od kuchni (nie chcę Ci zabierać niewątpliwych zasług, ale jakoś nie chce mi się wierzyć, że osoba rocznik ’92, chodząca do liceum, ma większe pojęcie o tym biznesie niż programiści z kilkuletnim stażem). I język na prawdę jest sprawą drugorzędną. Od pół roku pracuję jako programista Javy. Styczność z tym językiem teoretycznie miałem dwa razy. Teoretycznie, bo pierwszy raz to był przedmiot o programowaniu obiektowym na studiach (część z Javy olałem całkowicie) a drugi to przedmiot o programowaniu aplikacji webowych (JEE i .NET), gdzie zaliczenie wyglądało mniej więcej w tym schemacie: wziąć kod od kolegi, zrozumieć co robi, trochę przerobić (żeby się za szybko nikt nie pokapował, że to nie moje), oddać, zaliczyć. Po pół roku od ostatnich zajęć z Javy poszedłem do pracy. Nauka podstaw języka oraz środowiska zajęła mi… jakieś 2-3 miesiące (dzięki dobremu IDE). Ale mimo tego wszystkiego nadal są pewne problemy, których nie da się tak łatwo nauczyć. Choćby komunikacja w zespole (bo pomijam już moje zapominalstwo, to moja osobista wada ;P) czy inne rzeczy niezwiązane bezpośrednio z klepaniem kodu.

I wykazałeś się nieumiejętnością czytania ze zrozumieniem. Pasja w tym co się robi jest ważna (może i najważniejsza). Ale to nie znaczy, że mamy programować za darmo. To jest nasz sposób na życie. Jesteśmy cholernymi szczęściarzami, że możemy robić kasę na czymś co lubimy. Ale podchodzenie do tematu w kategorii „będę robił to, za co mi lepiej płacą” obraża prawdziwych programistów. Nie każdy może być hackerem, ale praktycznie każdy do tego w pewien sposób dąży. To co robimy jest wartością samą w sobie. Projektu nie zaczynamy od postawienia sobie pytania „co musiałbym zrobić, żeby wycisnąć 3k więcej?” (no chyba że ktoś ma raty za mieszkanie do spłacenia, ale to inna kwestia), ale „co muszę zrobić, żeby ten projekt był dobrze wykonany”.

@masakatsu: nie ma dobrego języka. Lub inaczej. Dla każdego jest inny język dobry. A agresywny ton? Może, trochę. Mój blog, mogę tutaj nawet bluzgami rzucać jak mam ochotę. A to co napisałem było dość łagodnym potraktowaniem (tiaaa… w obrażaniu ludzi mam całkiem niezłego skilla).

A i jeszcze o intelu: swego czasu ich ulubionym testem rekrutacyjnym było danie do nauki jakieś wymyślonego języka programowania. Kandydaci mieli na to bodajże godzinę, a potem musieli napisać jakiś mały programik. Dlaczego taki sprawdzian? Znając pewną liczbę języków programowania poznawanie kolejnych przychodzi praktycznie z marszu. Dodatkowo sprawdzenie jak kandydat radzi sobie ze stresem oraz (co najważniejsze) umiejętność myślenia na wyższym poziomie niż dany język programowania.

– @Matthew: draniu ubiegles mnie :) Chcialem jeszcze wlasnie dodac, ze na pewnym poziomie jezyk jest w zaasdzie nieistotny – wiekszosc jezykow proceduralnych ma bardzo duza czesc wspolna, roznia sie glownie skladania i bibliotekami. Jezyki obiektowe sa niemal identyczne, z wiekszych roznic wskazac mozna przykladowo podejscie do dziedziczenia, polimorfizmu i t ego typu abstraktów. Skutkuje to tym, że od pewnego momentu czas od rozpoczecia nauki danego jezyka do pisania w nim kodu poswiecasz niemal wylacznie na poznanie cech dla danego jezyka specyficznych. Plus ewentualnie srodowiska czy IDE. I dodam jeszcze ze ‚poziom myslenia’ wzrasta wraz z doswiadczeniem, co niekoniecznie przeklada sie na ilosc godzin spedzonych na pracy w danym jezyku. Przychodzi nagle czasem moment, ze kod, ktory w normalnych warunkach dziala bezproblemowo, zaczyna sie sypac bo danych jest np za duzo, albo wystepuja timeouty. Poczatkujacy koder widzi tylko kod. Doswiadczony widzi kod i szereg mozliwosci i kontekstow w ktorych dany kod moze zostac uruchomiony. No i tak jak wspomanielm wczesniej – przychodzi tez taki moment ze ‚byle by dzialalo’ absolutnie nie jet opcja a obecnosc badz tez nie kilku 10^(3,4,5,6) PLN/EUR/USD w twojej kieszeni zalezy nie od tego CZY cos napisales, ale JAK – wiele firm bardziej intersuje przesuniecie deadline’u niz otrzymanie wadliwego softu. Wystarczy nadmienic ze duze firmy przeprowadzaja testy oprogramowania rowniez u siebie , co kosztuje realne pieniadze, w zwiazku z tym taniej i korzystniej dla nich jest dostac RAZ dobry soft, niz dwa razy mierny. Pozdrawiam.

– BTW. ciekawe czy intel kazal sie uczyc whitespace’a ?:) http://compsoc.dur.ac.uk/whitespace/index.php

„Zwykly programista kiedy dostaje zadanie siada i zaczyna pisac. Dobry programista w tej samej sytuacji siada i mysli.

Z teog co piszesz chyba wynika ze zaliczasz sie jednak do tej pierwszej kategorii. Ani mindset ani angielski nie pomoga jesli nie potrafisz myslec.”

To ja jestem gdzieś po drodze, bo gdy dostanę zadanie siadam, i zaczynam klepać te część kodu, która przychodzi automatycznie bo pisało się ją już parę razy i można ją robić z zamkniętymi oczyma (integracja frontendu z CMS) a w międzyczasie myślę o zaawansowanych modułach ;-)

Ogólnie zgodzę się z chłopakami krytykującymi Piotrka – popracuj w firmie to zobaczysz jak to wygląda na prawdę – żaden blog, żadna książka etc. nie oddadzą Ci atmosfery jaka panuje w firmie, jak zmienia się przed (i po przekroczeinu) deadlinem etc. Pomijam już fakt, że firma firmie nie różna a i ze stażem atmosfera może się zmienić. Kiedy kilka już lat temu zatrudniłem się w obecnej firmie skupiałem się na klepaniu kodu jak firma kazała. Potem zaczęło się wytaczanie własnych standardów i podciąganie firmy do nich. Teraz już mi się przestaje chcieć ;-)

No i chyba nigdy nie odrzuciłem projektu, bo ma mały budżet (a mam taką możliwość) :P

Z postem nie sposób się nie zgodzić – ale o tym, że język nie jest najważniejszy wiedzą studenci informatyki na każdej uczelni (a przynajmniej ci, którzy dotrwali do drugiego semestru). Na studiach nikt nie pyta czy „umiesz” .NETa, JavaSE, JaveEE – dostajesz projekt, deadline i masz go zrobić.

Patrząc jednak na siebie z okresu początków studiów – TEŻ zadawałem takie pytania. Pamiętam jak z wieloma ludźmi toczyłem dyskusje dlaczego javy nie warto w ogóle dotykać, czy warto jeszcze się uczyć C/C++ (bo przecież umiera)- teraz te pytania wydają mi się śmieszne (jak zresztą całe tamte moje pojmowanie czym jest informatyka), wtedy wydawały się kluczowe.\

Patrzenie na programowanie przez pryzmat konkretnego języka programowania dotyka każdego, bo nie sposób nauczyć się go w inny sposób – tak działa ludzki umysł: nieświadoma niekompetencja – nie wiemy ile i czego nie wiemy, świadoma niekompetencja – zdajemy sobie sprawę jak dużo nauki nas czeka, świadoma kompetencja – potrafimy programować w danej technologi z otwartymi manualami, nieświadoma kompetencja – czyli „manuale – po co to komu?”.

Co ma więc zrobić taki początkujący programista (który być może uważa siebie już za doświadczonego), kiedy nie robił jeszcze ani jednego dużego projektu, zaimplementowanie listy dwukierunkowej to dla niego sukces a to co znajduje się pod warstwą języka jest jeszcze czarną magią.

Odbiegając od tematu: z chęcią zobaczyłbym przebieg kariery n3mo, bo widzę, że lansuje się tutaj na jakiegoś super-doświadczonego (sory, ale zagrywki w stylu „porozmawiamy jak popracujesz w jakiejś większej firmie” są poniżej pasa, bo z definicji zamykają usta nawet tym, którzy mówią coś mądrego a nie mają doświadczenia zawodowego w pracy „w większej firmie” – WTF?) a pisze głównie truizmy powtarzane po stokroć przez różnych ludzi (wystarczy wejść na takiego reddita czy so).

Ach, zapomniałem. Mottem tego bloga jest „Talk is cheap. Show me the code” – nie gadajcie więc ile to języków umiecie, tylko pokażcie nam co w nich napisaliście!:)

matekm: nie ma sprawy, NDA już leci mailem… ;)

Wiesz, zainteresowani mogą po prostu zaimplementować np. jakieś B-drzewo czy inny nietrywialny algorytm i udostępnić na wolnej logice;)

„wolnej licencji” – praca i pisanie komcia nie popłaca

Ale czego by to dowiodło? Że zamiast użyć jakiejś przetestowanej przez tysiące programistów biblioteki z gotową implementacją drzewa dłubiesz takie rzeczy od zera? ;)

PiotrLegnica @ 11 lutego 2010 o 12:05:

> A ten test sprawdza zdolnosc myslenia a nie jezyka…

Nom. I będę się upierać — to nadal nie ma nic wspólnego z algorytmami per se.

> Z teog co piszesz chyba wynika ze zaliczasz sie jednak do tej pierwszej kategorii.

Ja? Pewnie. Siadam i piszę, a dopiero jak już działa to optymalizuję i refaktoryzuję; o ile mi się chce. Pracując za pieniądze robiłbym tak samo, minus lenia. Hopefully.

> I język na prawdę jest sprawą drugorzędną.

Ale ja to wiem. To nie zmienia faktu, że od czegoś trzeba zacząć i nie jest to sucha teoria.

To na czym polega nauka języka po poznaniu paru też — been there, done that.

> jak zmienia się przed (i po przekroczeinu) deadlinem etc

I naprawdę wtedy wszyscy próbują zrobić z kodu coś idealnego, czy jednak po prostu dostarczyć coś działającego? Jednak te kolejne wersje z jakiegoś powodu powstają. I zwykle nie jest to (tylko) nowa funkcjonalność. Chociaż może i dla softu in-house są jakieś inne standardy, niż dla tego, co reszta świata dostaje. I mówię o tym, co duże firmy/korporacje produkują.

A wracając na chwilę do optymalizacji:
1. niedokończony kod się ciężko profiluje (to tak ad. premature opt)
2. duża część aplikacji nie jest performance-critical; może nawet większość

> tylko pokażcie nam co w nich napisaliście!

Dużo mojego kodu leży na Bitbucket, jak bardzo chcecie się pośmiać. :P

I think we’ve gone offtopic.

O czym Wy w ogóle tu gadacie? Chcecie się oceniać na bazie jakiejś małej biblioteczki? Hahaha. Poza tym jak temat upada do poziomu „pokaż mi swój kod, bo nie wierzę, że jesteś taki fajny za jakiego się uważasz”, to znaczy, że jest źle i należy zrobić w tył zwrot ;)

Poprę głosy ganiące „przedwczesną optymalizację”. Optymalizacja musi być sterowana priorytetami (trzeba zaczynać od rzeczy zajmujących najwięcej czasu, bo tam zyski będą najbardziej widoczne), a żeby poznać priorytety trzeba mieć w miarę kompletny kod, bo inaczej nie ma czego przez profiler (czy podobne narzędzie) przepuścić.

Poza tym jeśli się okaże, że soft się ładnie skaluje, to wzmocnienie sprzętu może być tańsze od czasu programistów. Ew. że użytkownikom jest obojętne, czy na wyrenderowanie billingu czekają 2s, czy pół minuty, bo robią to raz na miesiąc.

„Chcecie się oceniać na bazie jakiejś małej biblioteczki” <- zdecydowanie nie to było moją intencją! Ja tam nikogo nie chce oceniać – nie czuje się na siłach, żeby to robić.

– @matekm – Bardzo nieladnie kiedy ktos argument relatywny traktuje w kategoriach absolutnych. Nikt tu sie nie lansuje na uberkodera, ale wypowiedzi osoby, ktora W OGOLE nie pracowala w firmie dyskredytujace wiedze i punkt widzenia osoby z JAKIMSTAM doswiadczeniem sa smieszne i na nic wiecej, niz na ‚poczekamy, zobaczymy’ nie zasluguja. Punto.

– btw te ‚truizmy’ skads sie biora…ciekawe skad – jak myslisz?:>

– Zgadzam sie, tylko uwazaj bo zaraz ktos ekh…tekm zarzuci ze truizmami strzelasz na lewo i prawo :>

no i powiedz, że ten ekh…tekm nie będzie miał racji:D

PiotrLegnica @ 11 lutego 2010 o 13:46:

Mała retrospekcja: zaczęło się od pierwszego komentarza n3m0 pt. „Algorytmy, algorytmy i jeszcze raz algorytymy.”. To, że jest dużo osób które nic nie potrafią, to ja wiem. W końcu sporo czasu spędziłem w okolicach PHP i phpBB. ;)

I nie mówię, że fizzbuzz niczego nie sprawdza. Mówię tylko, że to mechanika nie algorytmika. Czy widzisz tu pętlę i warunki, i elementy języka i biblioteki.

> Dobry programista siada i myśli, potem pisze

Może to dlatego, że całe 7 lat wszystko piszę sam. To nie sprzyja projektowaniu.

dwutleneksiarczanu @ 11 lutego 2010 o 15:36:

Nigdy nie byłem informatykiem, a o programowaniu nie mam pojęcia. Chciałem kiedyś obrać taki kierunek ale jednak coś pociągnęło mnie na gastronomię. Przez jakiś czas myślałem żeby jeszcze nie rezygnować i wybrać się na studia, jakiś kierunek związany z informatyką etc. ale stwierdziłem, że to jednak nie dla mnie. Może nie jest mi dane zostać „komputerowym sensei”. Mimo wszystko już Was zapraszam do restauracji, którą kiedyś(mam nadzieję) otworzę. :D Haha.

„Jezyki obiektowe sa niemal identyczne”
o! ciekawe co mówisz… chętnie bym posłuchał jakiegoś dłuższego uzasadnienia bo mi się wydają bardzo zróżnicowane (przyznaję że nie bardzo się znam — studęt zaoczny).

Składnia C++, C# czy Javy jest bardzo zbliżona. PHP, Javascript czy Python też są podobne do tych trzech. Mniej lub bardziej. W składni występują na prawdę bardzo niewielkie różnice. Bardziej znaczące różnice występują w realizacji obiektowości, ale tam też nie ma odnajdywania koła na nowo – są tylko pewne niuanse. jak na przykład to, że w javie metody przy dziedziczeniu są wirtualne z automatu, a w cpp i cs trzeba to napisać wprost

@mt3o, a, myślałem że piszesz w nieco szerszym kontekście. Skoro takie buty to się właściwie z Tobą zgadzam.

Btw, mam do Was pytanie:

czy ktoś przeczytał kiedyś książkę o semantyce języków programowania, z ogólnym i poglądowym potraktowaniem tematu ? Ja przyznam że przejrzałem tylko dwie (jedna zajmowała się tylko językami obiektowymi). A pytam bo mam wrażenie że ludzie nie czytają takich bzdur, czego skutkiem drobne problemy w dyskusjach podobnych to tej która się tu toczy. Chciałem to pytanie zadać już dawano przy okazji takich wpisów ale zawsze zapominam…

Wiesz, nie ja to pisałem, o podobieństwie języków obiektowych. Może autor ma większą wiedzę, pisałem w oparciu o własne doświadczenia. Wiem, że są magiczne języki których mi zwykłemu śmiertelnikowi nie będzie dane ogarnąć, jak na przykład list :)
Książki o semantyce..? Nie… Może uczelnia mnie do tego zmusi. Możesz napisać coś więcej?

– A moze by tak nowy watek z trakbackiem do obecnego? Semantyka raczej z wyborem jezyka niewiele (nie mowie ze nic :) ) ma wspolnego…

obawiam się że szablon mojego jogga nie bardzo się nadaje ;) pytałem przy okazji i tyle ;)

mt3o, list ? nie kojarzę.. może lisp ? Owszem ma toto obiektowość z wielokrotną specjalizacją argumentów co jest dość egzotycznym rozwiązaniem. Zresztą cały system obiektowy jest tam tylko konkretną „aplikacją” systemu wyższego rzędu. Traktuje o tym książka „The Art of the Metaobject Protocol”, okładka mi się bardzo podoba ;)

Noo, Tennenta przeglądałem, klasyka. Jak to z klasyką bywa ciężkostrawne to i się nie przykładałem ;) za stary jestem na umysłową gimnastykę.

To drugie to:
Foundations of Object-Oriented Languages: Types and Semantics.
Autor Kim B. Bruce, wyd. The MIT Press.

Oj czepiasz się. :P To tylko literówka.

Stanisław 'dozzie' Klekot @ 13 lutego 2010 o 13:33:

@PiotrLegnica:

>> A ten test sprawdza zdolnosc myslenia a nie jezyka…
>
> Nom. I będę się upierać — to nadal nie ma nic wspólnego z algorytmami per se.

Tylko widzisz, znajomość algorytmów to nie wszystko w programowaniu. Jeszcze trzeba umieć tak zaprojektować aplikację, żeby to łatwo się konserwowało i rozszerzało. Taki higher level knowledge.

Ale to zdanie wyrwane z kontekstu. Twoim zdaniem „ten test”, którym jest napisanie fizzbuzza, nic nie sprawdza. Otóż sprawdza. Podczas rekrutacji pojawiają się ludzie z tragicznymi umiejętnościami — i jest to bardzo duża część kandydatów. Ten test ma takich szybko odsiać, bo małe szanse że poradzą sobie z jakimkolwiek trudniejszym zadaniem.

>> Z teog co piszesz chyba wynika ze zaliczasz sie jednak do tej pierwszej kategorii.
>
> Ja? Pewnie. Siadam i piszę, a dopiero jak już działa to optymalizuję i refaktoryzuję; o ile mi się chce. Pracując za pieniądze robiłbym tak samo, minus lenia. Hopefully.

Właśnie. Dobry programista siada i myśli, potem pisze, a dopiero na końcu optymalizuje. Przepisanie całego programu z powodu źle wybranej architektury nie zalicza się do refaktoryzacji.

Warto poznać C w systemie Plan9.

Rozwiazanie tego niby testu mialem w glowie po 10s(pozostalo wklepanie kilku linijek kodu), ale czego to ma dowodzic?

Nie zgodzę się co do programistów COBOLa. Żyję, mam się dobrze, robię 30 pompek i ani jednego siwego włosa ;) Faktem jest jednak to, że to mało popularny język. Cały tekst całkiem fajny lecz nie jest odkrywczy.

@koziołek: jakbym zawsze pisał coś odkrywczego to nie siedziałbym teraz na uczelni, a gdzieś w hameryce zarabiając taaaaaaaakąąąąąąą kasę. ;)

10latkodowania @ 10 marca 2010 o 10:53:

10 lat jestem programistą. Oto moja rada dla kotów. Jeżeli chcesz mieć pracę to Java lub C#. Jeśli chcesz zakładać firmę i klepać stronki to PHP. Można się dodatkowo nauczyć JavaScriptu. Wszystko inne to bzudry (narazie)….
Pozdrawiam

„Dzięki poświęceniu swojemu hobby mogli osiągnąć to co teraz mają” – dobrze powiedziane – podoba mnie się:)

@10latkodowania: po co JavaScript jak można jQuery

10latkodowania @ 10 marca 2010 o 16:08:

@Łukasz K.
C#, Java czy JavaScript to są skróty myślowe. Używając tych terminów mam na myśli całe „ekosystemy”. Np. mówiąc C# mam na myśli Windows, .NET, ASP.NET, WCF etc. Mówiąc Java mam na myśli Unix, Linux, JSP, Apache, BEA Logic, wszystkie inne web serwery, Oracle, itd. itd. C# and Java to wrota do dwóch największych „ekosystemów” softwareowych. Więc wybór języka programowania to tak naprawdę bardzo poważny wybór a to całe pitolenie, że nie ważne w jakim języku kodujesz wystarczy żebyś był kreatywny i znał „algorytmy”, to jest bullshit. Jeśli pracujesz w dużej firmie, która strategicznie zdecydowawła się na jakąś technologie, nikt nie pozwoli ci pisać niczego poważnego w jakichś nowych właśnie modnych języczkach. Chyba, że swoje wypociny zachowasz dla siebie i sam będziesz ich używał.

jQuery jest dla mnie częścią JavaScript.

@10latkodowania: C# wcale nie jest największym ekosystemem software’owym. Jest go mniej niże takiego C++ czy PHP. Wg. wskaźnika TIOBE najpopularniejsze są Java, C, PHP, C++, Basic a dopiero potem C#. W Polsce może jest inaczej, ale u nas wykorzystują każdy chłam który przyjdzie z zachodu od wielkich korporacji (hmmm… właśnie straciłem czytelników z dotnetowego ala wykopu xD).

10latkodowania @ 10 marca 2010 o 16:20:

@Matthew
Piszę o tak zwanych LOB-ach (Line of Business applications), czyli oprogramowaniu które pisane jest na potrzeby dużych firm. Raczej w C tego już nikt nie pisze. Tu jest wybór C# lub Java.
Poza tym z tego co wiem na Tiobe część procentów z C++ należy się .NET gdyż ten język istnieje także dla .NET to samo VB. Gdyby to zebrać do kupy to myślę, że cała platforma .NET była trzecia jeśli nie druga na Tiobe.

Weź również pod uwagę wiek języków czy też frameworków. .NET jest bardzo młodą technologią a jeślie weźmiemy jej popularność to na prawdę ma się czym pochwalić. Moim zdaniem, choć nie do końca obiektywnym, bardziej subiektywnym (na co dzień pracuję w .NET), tylko takie kobyły mają pewną przyszłość. Po 1: rozwijają się bardzo szybko oraz w dobrym kierunku (mam na myśli m.in. f#), po 2: pisze się w nich na prawdę szybko i przyjemnie, po 3: Microsoft i to, jak popularny jest Windows, po 4: community, po 5: znakomicie integrują się z innymi technologiami MS – ASP, SQL Server itd…

@10latprogramowania: w taki sam sposób w czasach przed dotNetowych można było powiedzieć, że większość projektów w WinAPI jest pisania (bo z tego co jakiś mądry pan z m$ mówił na jednej z konferencji .NET ma zastąpić winapi + pozwolić na przenoszenie aplikacji desktopowych do webowych z marszu). Poza tym jest jeszcze coś co z miejsca skreśla C#/.NET. Brak przenośności (nie, Mono nie gwarantuje przenośności). Może ten argument do niektórych nie przemówi… cóż, dalej używajcie tej imitacji dobrego software’u. ;)

@xyz: .NET jest popularny bo M$ go wciska wszędzie gdzie popadnie. Poza tym… sorry, ale nie samym ms świat żyje (a co do SQL Servera… cóż, myślę, że ludzie którzy nie są zakochani w produktach małego miękkiego rzucili by ładną stertę bluzgów pod adresem tego wspaniałego serwera SQL). Jestem niemalże pewien, że w C++/Qt pisze się aplikacje tak samo szybko, jeżeli nie szybciej, jak w C#/.NET (bo, że od Javy SE pisze się szybciej to się nawet ostatnio przekonałem, no… chyba że jestem takim zajebistym programistą, że nie znając technologii do końca piszę szybciej aplikacje niż ludzie którzy ją znają ;P).

10latkodowania @ 11 marca 2010 o 20:30:

Po tym co napisałeś zastanwiam się dlaczego twój blog jest w moim reader-rze?? Swój wpis na blogu powinnieś zatytułować „Jakiego języka programowania się nauczyć? I dlaczego Javy?”

Ostań się w pokoju

@10latkodowania: niestety nie odpowiem Ci na to pytanie. Ale chyba nikt Cie do tego nie zmusił prawa? I nie rozumiem dlaczego miałbym dopisać Javę do tytułu? Nie szczególnie ją lubię. Ale przynajmniej, w przeciwieństwie do C# i .NETa, jest w miarę otwarta i nikt nie żąda ode mnie kasy za możliwość programowania w niej. A już na pewno, swoimi praktykami, nie próbuje zmusić świata do używania jednego, właściwego rozwiązania.

Ale jak na programistę z 10 letnim doświadczeniem masz takie dość… hmmm… kretyńskie poglądy. Twierdzenie, że wszystko poza Javą, C# i PHP to bzdury? Fakt, może Polska to informatyczne zadupie, ale wybacz. Mimo wszystko programuje się w większej liczbie języków i każdy znajdzie coś dla siebie.

Szkoda tylko, że nie zrozumiałeś przesłania tego wpisu. Jak również odrzucasz takie fundamenty jak C. Ale nic, skoro pewnie już tutaj nie zajrzysz to życzę dalszego klepania kodu, ku chwale hamerykańskich korporacji. :)

@Matthew: a czy ktoś każe Ci płacić za programowanie w .NET? Widać mało pisałeś w tej platformie, skoro twierdzisz, że w C++/Qt pisze się szybciej. Napisz mi aplikację, która będzie coś wyciągać z jakiejś bazy, powiedzmy z jakimś joinem i niech to powiedzmy w jakiś tam sposób posortuje. Ciekaw jestem, ile zajmie Ci to linijek… Bo mi w Linq jedną :) Oczywiście nie namawiam Cię do klepania w .NET, po prostu dziwię się osobom, które krytykują technologię tylko dlatego, że jest od MS. Najciekawsze jednak jest to, że większość z tych osób nawet Visuala nie widziała i pisząc twardo w jakimś Opensource’owym narzędziu próbują wmówić, że jest super… Otóż nie – nie jest super… Nie znam IDE o tak zaawansowanych możliwościach oraz o porównywalnym komforcie pracy. Powiesz, że musisz za to zapłacić? Otóż nie, kolejny raz jesteś w błędzie – MS udostępnia narzędzia w wersji Express zupełnie za darmo, nawet do zastosowań komercyjnych. Pozdrawiam wszystkich siplasplasów :)

BTW: Może pochwalisz się, w czym piszesz na co dzień?
Peace

Mój błąd – nie doczytałem :)

@xyz: Linq, SQL, JPQL czy inne, wyciągnięcie czegoś z bazy i posortowanie to zawsze będzie jedna linijka. Problem leży gdzie indziej. Jak łatwo jesteś w stanie podłączyć się do tej bazy, czy dane podłączenia można wpisać (znaczy adres serwera), jak łatwe będzie zrobienie dodatkowych pól do filtracji (np, chcemy pokazać tylko Kowalskich).

Nie krytykuję technologii za to, że jest od M$. Chociaż głównie polityka M$ wpływa na tą krytykę. C#/.NET w rzeczywistości jest nieprzenośnym rozwiązaniem. A zobacz taką Javę Suna. Oni też mogli dać Javę tylko na Solarisa i mieć wszystko gdzieś. Ew. łaskawie pozwolić na zrobienie własnych środowisk do odpalania Javy na innych systemach.

A zapłacić to musisz choćby za Windowsa, żeby w nim pisać. Co do wersji Express… ciekawe jak bardzo musi być obcięta względem normalnej (nie wiem, ja zawsze w C# czy SQL Serverze robiłem na pełnej wersji).

A piszę w C++/Qt a do niedawna w Javie. Chociaż mógłbym zarabiać połowę tego co dostawałem za Javę w zamian za możliwość kodzenia w C++.

Programowanie nie zaczyna się i nie kończy na C# czy .NET czy Objective-C (to dla fanów Apple’a). Namawianie kogoś do nauki czegoś tylko dlatego, że może za to będzie kasa jest głupotą. A już tym bardziej gdy prowadzi do monopolu jakiejś firmy.

@Matthew: zrozum w końcu, że w środowiskach korporacyjnych aplikacje pisane w C#/.NET nie mają być przenośne między windowsem/linuxem/unixem/etc. One mają działać na sofcie na które są pisane a nie na każdym.

Krytyka M$ powodowana fascynacja OS jest śmieszna i chyba występuje tylko u fanatyków i studentów pierwszych lat informatyki(no nie wszystkich oczywiście).

co do Windowsa, no cóż, za dobre produkty się płaci. Ty planujesz całe życie pisać soft za darmo?

C++ komentować nie będę, rozumiem, że w pewnych zastosowaniach jest on świetnym rozwiązaniem nadal, ale samodzielne wybieranie go przy możliwości kodowania w wielu wygodniejszych narzędziach jest dla mnie obecnie niezrozumiałe…

koduje się w tym w czym jest kasa, a monopol na rynku jest czymś naturalnym jeśli konkurencja nie potrafi zrobić równie dobrego produktu…

@k.: ale ja to świetnie rozumiem, tylko… pisanie aplikacji dla korporacji które się uzależniają od M$ to nies jest 100% projektów. Poza tym (czego chyba nie zauważasz sądząc po tym co napisałeś później) C#/.NET to nie jest cud, miód i najbardziej zajebista platforma deweloperska na świecie.

A śmieszne to jest upieranie się niektórych, że produkty M$ są cudowne. Niektóre im wyszły, ale większość jest beznadziejna. Czemu mam płacić na windę skoro jest ona znacznie gorszym środowiskiem deweloperskim niż Linux? Wybacz, ale patrząc na to co napisałeś widać, że nie masz pojęcia o _całym_ rynku IT (bo pewnie tej części za którą ktoś Ci płaci przy kodzeniu w .NET to jak najbardziej).

I twierdzenie, że C++ nie jest wygodny? O litości. To, że niektórzy są programistycznymi analfabetami (to Ci którzy programują, a nie potrafią porządnie tego robić, nie Ci którzy nie programują w ogóle) nie znaczy że C++ (C czy dowolny inny język) nie jest wygodny (biblioteki też są ważne). Jeżeli ktoś twierdzi, że dany język jest beznadziejny dlatego, że nie potrafi go używać, nie znaczy, że tak jest, tylko że jest idiotą.

A pchanie się z własnej woli w gówno (sorry, nie znam dewelopera, który z własnej woli wraca do programowania pod Windą jeżeli faktycznie spędził trochę czasu pracując pod Linuksem czy innym uniksem), bo tam rzekomo jest kasa jest głupotą. Nie pozna się innych technologii a chwali się to co jest na tyle idiotoodporne, żeby każda sierota potrafiła w tym programować.

Monopol jest konsekwencją bandy debili siedzących w zarządach i wybierających nie to co lepsze, ale co ma lepszy marketing. Bo twierdzenie, że konkurencja nie potrafi zrobić równie dobrego produktu w stosunku do M$… Wybacz, ale praktycznie na każdym polu są produkty lepsze (może poza pakietami biurowymi) niż te które zrobił mały miękki.

oj oj, chodzi o to, że duże firmy wybierając technologię wybierają całe platformy, wybierają to co jest pewne, że nie zniknie w ciągu 2-3 lat kiedy ich produkt się rozkręci. pewien poziom bezpieczeństwa może tylko zapewnić firma typu m$, niestety ale w biznesie nie można polegać na niektórych rozwiązaniach OS które umrą w chwili kiedy developerzy znudzą się ich rozwojem – a taki scenariusz też trzeba brać pod uwagę.

ja się zbytnio nie upieram, że produkty m$ są lepsze, ale mówienie, że są złe to jakby przyznawanie się, że ostatnio widziało sie je 10 lat temu… troche nie trafiłeś z tym rynkiem IT bo tak się składa, że nigdy nie programowałem w .NET za pieniądze, w pracy świadomie wybieram rozwiązania OS i wszystkie te które uważasz za lepsze – ale fakt ten nie przeszkadza mi w zauważaniu tego w czym rozwiązania m$ i inne płatne są lepsze. Na krótką metę niektóre rozwiązania darmowe się sprawdzają, ale w pewnym momencie jeśli ktoś nie zacznie pompować w nie pieniędzy to nie mają szans do rozwiązań za którymi stoi wielki biznes i forsa i żadna ideologia tego nie zmieni.
Dlatego właśnie najnowsze wersje produktów firmy M$ są jakościowo b. dobrymi produktami. Nie oznacza to, że nadają się do wszystkiego, ale mówienie że są gorsze/że są gównem/że nikt nie chce w tym programować z własnej woli jest najzwyczajniej śmieszne :) żebyś nie myślał, że opowiadam bajki to pogadaj sobie z ludźmi z 5 roku na ETI, tam jest sporo osób które z własnej woli programują pod windą w .net…

Monopol jest konsekwencją różnych rzeczy, np. tego, że m$ przez wiele lat starał się ułatwiać programowanie na swojej platformie a środowisko open source produkowało równolegle kilka projektów zawsze, np. toolkitów i środowisk gui (kde/gnome/w **** innych, gtk/qt/i kilka innych). W hierarchii najpewniej nie jest to najlepszy przykład ale daje pewien obraz tego jak czas i środki były marnotrawione, często tylko z powodu głupawych różnic ideologicznych…

Jeśli chodzi o sam C++ to wybacz ale potrafię go używać i z pełną świadomością uważam go za mało wygodny, porównaj sobie co w standardzie(a nie w dodatkowych bibliotekach) daje c++ a co np. python albo php, no ostatecznie java i jak szybko pisze się w C++ a jak w pythonie…

@k. OS umrze? Na OS nie będzie pieniędzy? Większość deweloperów linuksa jest opłacanych. Są zatrudniani w firmach i robią tylko i wyłączeni to. Oracle, IBM, Intel, trochę Apple, Google, itp. Te firmy płacą masę kasy na oprogramowanie OS. Dlaczego? Bo do ich zastosowań jest po prostu lepsze. Ostatni przykład dużych giełd. Przerzucają się na OS, bo M$ s****ił sprawę i dostarczył oprogramowanie (Winda i C#/.NET) które nie daje sobie rady i nie spełnia wymagań pracowania na giełdzie.

Ludzie na 5. roku ETI? A ilu z nich to wybitni programiści? I czemu .net? Bo M$ płaci żeby na ETI był .net. Bo prowadzący narzucają takie rozwiązanie. I słabsi studenci wybierają .net dlatego że są za słabi na robienie w czymś innym. Wybierają Windę bo nie potrafią ogarnąć Linuksa. Problem w tym, że jakby potrafili to zasuwaliby w nim szybciej i wydajniej niż na windzie.

Monopol M$ spowodowany jest tym, że wcisnął swój system gdzie się da. Później stwierdził, że zarzucamy WinAPI, dajemy .NET, pozwalamy w tym robić na webach, trochę marketingu i teraz wszyscy mają robić w .NETcie albo zostają bez roboty. No tak, oczywiście, doskonały przykład jakości ich oprogramowania.

Hmmm… to porównaj możliwości C++/Javy/Pythona/C# bez biblioteki standardowej. Może i głupi przykład, ale zauważ że to co nazywasz możliwościami to nic innego jak dodatkowa biblioteka do języka. Bez niej każdy język jest bezużyteczny. Twierdzenia, że nie będę robił w C++, bo w stdlib nie ma X, a w C# jest. A może istnieje biblioteka dla C++ która jest lepsza niż to co daje C#? Problem w tym, że jak czegoś nie ma w C# to się szuka nowych bibliotek albo pisze własną, a jak nie ma C++ to się mówi że gówniany język.

nie twierdze ze OS umrze, ale nie wszystkie gałęzie OS mają się tak dobrze jak np. kernel, są takie w które kasy nikt nie pompuje… ponadto nikt nie ogarnia wielu segmentów OS aby były ze sobą kompatybilne tak jak to się ma w dużych firmach. Ma to swoje plusy i minusy, ale z pewnością produkty m$ wybierane są np. z tego powodu, że dobrze się integrują między sobą.

zdefiniuj wybitnego programistę to oszacuję ilu pasuje do wzorca. Mylisz się co do tego, że słabi studenci wybierają .NET, mylisz się i to srogo, wybacz ale nazwiskami rzucać nie będę aby Ci udowodnić jak bardzo.

System M$ był łatwiejszy przez wiele lat dla ZU i b. dostępny i wszystkie jego wady związane ze stabilnością nadal nie przeszkadzały tak jak wymagane umiejętności przy systemach konkurencji. Ponadto nie wszyscy mają możliwość pracowania na systemach linuxowych/unixowych, są pewne fragmenty gospodarki dla której oprogramowanie jest dostępne tylko na platformę Windows i nie ma zamienników.

Mylisz się, język należy traktować jako język+biblioteka standardowa, z prostego powodu: bibliotekę standardową znają wszyscy programiści którzy piszą w danym języku, bierzesz czyjś kod i rozumiesz o co w nim chodzi. W sytuacji kiedy nie ma biblioteki standardowej zapewniającej większość potrzebnych rzeczy (np. C++) to każdy może używać dowolnej innej biblioteki do danego zadania co powoduje że po kilku projektach znasz kilka różnych rozwiązań do wątków, sieci, logowania błędów, dokumentacji, etc…

*ja nie napisałem, że C++ to gówniany język! ja napisałem, że jest MAŁO wygodny do standardowych zastosowań w porównaniu do innych wymienionych języków*

@k.: akurat z punktu widzenia dewelopera, w gałęzie które jego interesują są pompowane pieniądze lub jest tak dużo ludzi i wsparcie że nie umrą. Co do integracji, zgodzę się tyle, że oczywistym jest, że produkty wypuszczone w ramach jednej firmy bardzo dobrze się integrują, ale ciężko mi stwierdzić jaki wpływ to ma na wykorzystanie w firmach (chyba że mówimy o Office i pisaniu do niego w Visual Basicu). Trzeba by rozpatrzyć konkretne przypadki dziedzin, żeby powiedzieć co lepsze.

Nie mówię, że _tylko_ słabi studenci. Druga rzecz, że dobry student informatyki != student z wysoką średnią.

Systemy komercyjne? Znaczy co? Pomijając, że Windows to też system komercyjny (rozumiem, że jako komercyjne określasz tutaj uniksy jak solaris czy inne, ale trudno tu porównać rzeczy wykorzystywane na serwerach i u pani Zosii w księgowości). Nie wiem jak dla innych, ale dla mnie ważniejsza jest stabilność i brak awaryjności systemu niż jego łatwość użytkowania.

Wiem, że takie coś się nie porównuje tylko… Jak można w ogóle porównywać język do pisania systemów/bibliotek (jakim niewątpliwie jest C/C++) oraz język, którego celem jest wykorzystanie pisania aplikacji desktopowych czy web service’ów? Nawet Java sama w sobie nie pozwala łączyć desktopa i web, tylko właśnie poprzez dodatkowe biblioteki w JEE. Dlatego mówiąc o wygodzie języka (w ogóle czemu na to weszliśmy? Wpis miał na celu pokazanie że ważniejsze od nauki konkretnego języka jest nauka programowania jako takiego, a później ktoś zaczepił, że C#/.NET jest wspaniały i nic innego się nie liczy).
Nie przesadzajmy z tym, że po kilku projektach. W ramach firmy najczęściej zostaje się przy jednym sprawdzonym rozwiązaniu.

Zdefiniuj co to jest standardowe zastosowanie. Bo jeżeli uznasz to za pisanie aplikacji pod Windą to faktycznie. Jeżeli jednak dopuścisz używanie bibliotek to już mogę podyskutować i zrobić małe zawody w czym łatwiej się pisze kawałek kodu, który ma zrobić X.

nie twierdzę, że dobry student informatyki to taki który ma wysoką średnią – nawet o tym nie pomyślałem, chodziło mi o osoby o których umiejętnościach sam coś wiem. Ale poruszyłeś ciekawe temat średniej – tak się składa, że innego wyznacznika który da się zmierzyć raczej nie ma w kontekście studentów. Więc lepiej nie dyskredytować osób z wysokimi średnimi, mimo wszystko większość osób z wysokimi średnimi jednak umie więcej niż mniej…

dla Ciebie może i stabilność jest najważniejsza ale życie pokazało, że w większości przypadków(zwykłych userów) nie ma to takiego znaczenia – m$ zawładną rynek tym, że był prosty i przyjazdy dla usera, a stabilny jest dopiero od kilku lat. Obecne produkty m$ są i proste dla userów i stabilne, natomiast z produktami darmowymi i odpowiednikami(kde/gnome/etc) to już jest różnie. Np. pomijając ubuntu i może niektóre najnowsze dystrybucje linuxa zawsze było masakrycznie źle ze sterownikami i wsparciem dla sprzętu. Nie pisz proszę, że to wina producentów bo to oczywiste, ale co to obchodzi ZU ? :)

A niby dlaczego nie można porównywać ? skoro w każdym z tych języków da się pisać aplikacje użytkowe to można porównać w którym łatwiej….

Od początku pisałem o wygodzie kodowania, no to proszę o co mi chodzi: w pythonie masz tablice, zbiory, slowniki wbudowane i korzysta sie z nich banalnie prosto, robienie watkow to doslownie 2-3 linijki kodu, gui przy pomocy qt4 – bajecznie proste, pobieranie danych z sieci po http: 1-2 linijki kodu, wyrazenia regularne podobnie, operacje na ciagach – bajecznie proste, operacje na wielkich liczbach – wbudowana defaultowo, zreszta bez sensu wymieniach: http://docs.python.org/library/index.html
i nie czepiaj się już tych aplikacji pod windą(sam nie programuję w windzie), ja rozumiem, że masz ideologiczny wstręt do tej platformy ale naprawdę ona nie gryzie…

@k. Student z wyższą średnią wcale nie musi być lepszym programistą. Średnia i ilość posiadanej wiedzy to nie wszystko.

Nie pamiętam, abym z linuksem miał jakieś większe problemy ze sterownikami niż z windą. O dziwo w Linuksie większość rzeczy które mam działa OOTB. Problem ze ZU jest taki, że jak mu coś nie działa to zawoła kolegę syna i ten mu zrobi. Nawet nie wie że istnieje alternatywa, która w 100% mu się sprawdzi i nie będzie miał takich problemów.

To zacznijmy porównywać C# i .NET z asmem. W takim czymś C#/.NET to w ogóle wyjechana w kosmos technologia.

Uhu… jedyne co pokazałeś, że ktoś napisał trochę bibliotek do Pythona i zostały one włączone do biblioteki standardowej (swoją drogą ostatnio ktoś wspominał, że python jako język jest całkiem zacny, ale ma powaloną bibliotekę standardową, o cokolwiek mu chodziło). Ale skoro w pythonie tak wygodnie się pisze to czemu jego wykorzystanie jest bardzo małe? A tak jeszcze odnośnie wykorzystania Qt w Pythonie. Nie wydaje mi się, żeby wchodziło to do stdliba. Ktoś musiał napisać do tego bindingi (w końcu Qt w C++ pisane), bo była taka potrzeba. Tak samo z innymi. Widać w C++ nie ma potrzeby ciągłego modyfikowania biblioteki standardowej. Jest jeszcze boost, który ma biblioteki do manipulowania grafiką i grafów, wątków, regexów, wykorzystania pythona, sieci, metaprogramowania itp. Ale co z tego skoro zastosowania Pythona i C++ przeważnie się różnią.

Nie mam ideologicznego wstrętu (na jednym z kompów cały czas chodzi winda (głównie przez gry, ale jednak ;P)). Jestem przebrzydłym pragmatykiem. Wybieram to co wygodniejsze, łatwiejsze w obsłudze, zapewnia większą produktywność i jest bardziej niezawodne. Produkty M@ (w większości) nie zapewniają mi tego. Pierwsze spotkanie z C# bardzo mi się podobało, niestety, im dalej w las, tym więcej **** szło. Druga rzecz, że wolę wykorzystywać OS, ale ze względów praktycznych. A C#/.NET jest zamknięty niczym puszka sardynek.

chyba nie zrozumiałeś tego co napisałem o średniej. jeśli uważasz, że średnia jest takich złym wskaźnikiem to jaki jest lepszy? jeśli weźmiemy średnią tylko z niektórych przedmiotów, które trzymają wysoki poziom to otrzymujemy b. dobry wskaźnik jakości programisty…

ty może nie miałeś ale są ludzie którzy mieli. w czasach kiedy jeszcze standardem były modemy produkowano olbrzymią ilość urządzeń tzn. win-modemów które działały tylko na windowsie bo na linuxa nie było sterowników i był to realny i duży problem. To samo tyczy się mało popularnego sprzętu. Ponadto instalacja sterowników w windowsie jest ustandaryzowana tak całego oprogramowania, natomiast w linuxie to trzeba jeszcze wiedzieć jak taki sterownik zainstalować, jak się sprzet nazywa, czasem trzeba bawić sie z parametrami sterownika – no jak nie masz taki doświadczeń to chyba za dużo na tym linuxie nie robiłeś bo to raczej nic nadzwyczajnego.

proszę bardzo, wygodna programowania w c# i .net jest większa niż w ASM. Chyba się zgodzisz ?

no to się dowiedz o co mu chodziło jak piszesz. Masz tam praktycznie wszystko co jest potrzebne w większości zastosowań. To, że się w czymś wygodnie pisze to wcale nie znaczy, że wykorzystanie w każdym segmencie software’u musi być duże, skad taki pomysł ? w javie się wygodnie nie pisze aplikacji JEE a jest b. popularna.
Hehe, bo C++ się nie rozwija :D a boost zdaje się nie jest w bibliotece standardowej?
No nie wiem co z tego, ja mówiłem, że w c++ się mało wygodnie programuje a nie, że nadaje się do tego samego co python…

Ostatnim paragrafem właśnie udowodniłeś, że masz ideologiczny wstręt bo piszesz o tym, że c# jest zamknięte. No ja jak już pisałem to specem od .net nie jestem bo w tym nie piszę ale z tego co pamiętam to specyfikacja jest otwarta więc chyba się tu mylisz i to bardzo. I strzelasz sobie w stopę bo naprawdę ciężko zarzucić całej technologii .net, że jest trudna w obsłudze i mało produktywna…

Dla zainteresowanych, alternatywny punkt widzenia:
http://blog.matthew.org.pl/2010/02/10/jakiego-jezyka-programowania-sie-nauczyc

Aniserowicz to przynajmniej jakiś poziom prezentuje :)

Jakiś straszny ignorant z tego Matthew… Przecież wiadmomo że języki w swojej istocie mają już wpisany zakres działanianp nie oprogramujesz pralki w php, nawet jeśli tworzysz swoje projekty z pasją… Pytanie czy zarobisz większe pieniądze na tworzeniu serwisu WWW czy na oprogramowaniu np dla operatorów sieci komórkowych na wielu platformach w wielu krajach nie jest takie głupie…

Na postawione w temacie pytania odpowie ktoś o troszkę szerszym pojmowaniu rzeczywistości niż ktoś kto mówi „jak do dzieci”, ktoś kto potrafi patrzeć na rzeczy z trochę większą abstrakcją jeśli wiecie co mam na myśli…

PS. TYLKO ktoś kto potrafi myśleć analitycznie i na dużo większym poziomie abstrakcji niż tu prezentowany może MYŚLEĆ o tym, aby być dobrym developerem, a w przyszłości architektem rozwiązań IT… ŻENADA

Matthew a czy rankingi TIOBE również prowadzone są przez i dla osób, które „nigdy nie osiągną przyzwoitego poziomu” oraz dla osób, które „o wyższych szczeblach kariery nie mają co marzyć”???

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

ŻENADA do potęgi n!

Droga Dagmaro, również podzielam Twoje zdanie na temat tego że Matthew to straszny ignorant. Dodam jeszcze od siebie że jest wrednym dupkiem. Jednakże nie mogę podzielić Twojej opinii na temat niemożliwości zaprogramowania pralki w php, skoro mamy Linuksa w tosterach i ekspresach do kawy?
Oczywiście, to pytanie nie jest głupie. W ustach młodej osoby, która jeszcze nie jest zaznajomiona ze światem IT określiłbym je jako… naiwne. To takie miłe określenie, żeby nie pisać kilku mocniejszych słów, które mimo że prawdziwe nie trafią do ludzi (pewnie dlatego, że większość nie potrafi przyznać się do tego, że nie lubi prawdy). Weźmy takich ludzi od facebooka, jako programiści aplikacji webowych zarobili znacznie więcej niż klepacze kodów popularnych języków. To kolejny dowód na to, że nie ważne w czym się pisze ale jak się pisze.

PS. Bądź tak dobra i odezwij się do mnie na e-mail/jabber/gg (są na stronie „O mnie”) z chęcią pociągnę ten temat w innej formie niż komentarze do tego wpisu (są stosunkowo niewygodne do rozmowy).

Drogi Matthew,
Wiesz, że pralki oraz aparaty fotograficzne są najpowszechniejszym zastosowaniem sztucznej inteligencji, która tak szumnie przez media przypisywana jest robotom? Nie wiem jak skomplikowane programy mogą posiadać tostery … Cóż, ostatecznie wirtualna maszyna javy nada się i do tostera.

Przeanalizujmy:

Projekt A. Pisany z wielką pasją. Cel: oprogramowanie tostera w PHP przy założeniu że przeciętny toster nie posiada monitora.

Projekt B. Pisany w metodyce agile przez styranych przez życie całkiem przeciętnych developerów bez pasji z 1 porządnym architektem. Cel: zastosowanie sztucznej inteligencji w pralce, co pozwoli przeciętnemu obywatelowi świata na zrobienie prania bez uszkodzenia pranych tkanin.

Hmm, 3 pytania otwarte – 1. Który projekt będzie miał więcej użytkowników (jest bardziej użyteczny dla społeczeństwa), 2. Który deweloper będzie miał poczucie, że robi coś istotnego, co sprawi, ze nie popadnie w depresję po 3 lat w zawodzie, 3. czy pasja tutaj nie utożsamiła się z… chęcią pokazania światu że się da? Nawet jeśli to bez sensu :)

PS. JA bije się w pierś, bo zanim napisałam swoje dość mocne komentarze nie zorientowałam się że jestem na czyimś blogu, założyłam że to jakieś forum wyszukane przez googla. Nie psuję już klimatu. Życzę pasji bo bez tego nie da się być szczęśliwym, ale życzę też więcej pokory i rozsądku. Programiści PHP naprawdę zarabiają znacznie mniej niż np java, c++, a ich praca w 80% jest bardzo rutynowa – kolejny serwis kolejny miesiąc kolejna wypłata i koło się zamyka. Ostrożnie planujcie swoją przyszłość, ZADAWAJCIE PYTANIA CO SIĘ OPŁACA!!! Ale opłaca nie tylko w wymiarze finansowym…

Pozdro ;)

1. B
2. A
3. Tak

Droga Dagmaro, nie pasja, czy chęć udowodnienia że się da jest problemem. Moim zdaniem człowiek powinien robić to co lubi i w czym jest dobry, a pytania czego mam się nauczyć żeby robić kasę w IT są zwyczajnie głupie. Na wszystkim da się zrobić pieniądze tutaj. Kwestia jak bardzo dobrym się jest. Człowiek który robi to co lubi pracuje wydajniej (dlatego ja nie piszę w C#, staram się unikać Javy, a swoje rzeczy piszę w C++, bo mi osobiście pisze się w tym lepiej). Na całym świecie jest niedobór informatyków, więc ktoś dobry nie będzie miał problemów z zatrudnieniem. Chodzi też o twierdzenie, że nie warto się uczyć np. C++, bo jego popularność spada. Co jest oczywiście kompletną bzdurą, bo raz, że mówią to fanboye innych języków, a dwa wykorzystanie języka nie zmienia się z dnia na dzień. Oczywiście, dobrze jest uczyć się czegoś, żeby się rozwijać (i tutaj pytanie o opłacalność jest jak najbardziej na miejscu), ale patrzenie na to co robić tylko ze względu na kasę jest głupie i tego się nie zmieni (chyba że do końca życia chce się być klepaczem kodu w wielkiej firmie a po pracy zapominać co to jest komputer).

PS. Mogłabyś jednak do mnie napisać na priva? Z chęcią bym pogadał.

Dobra robota :D takie coś powinno być przedstawiane wszystkim zadającym pytania typu „od jakiego języka zacząć”.

Świetna praca, akurat jestem gimnazjalistą i idę w tym kierunku i myślę że bardzo mi pomogłeś z dokonaniem wyboru zacznę od jakiegoś mniej popularnego języka

Tylko python!

Ja z początku też zadawałem to pytanie bo nie wiedziałem nic o tym, żadna nazwa mi nic nie mówiła (no może oprócz c++) tylko, że ja pytałem bo chciałem sobie poprowadzić własną stronę internetową, a jak zainstalowałem sobie tam jakiegoś cmsa to w ogóle nie wiedziałem o co chodzi z tymi plikami. Tak więc ja pytałem tylko ze względu, że lubię wiedzieć gdzie co zmienić w pliku aby wyszło tak jak chcę.
Jeśli chodzi o to żeby się uczyć bo chcę zarabiać tyle i tyle to jednak jest to głupie pytanie i jestem skłonny się zgodzić z tym artykułem. Na rynku jest duże zapotrzebowanie na programistów i nie tylko jednego języka. Jak wszyscy się będą uczyć c++ bo jest znany to większość nie znajdzie roboty, a tylko najlepsi.

Uffff skonczyles. Teraz powiem Ci jak to wyglada z poziomu pracodawcy/biznesu. Mam gdzies czy programowanie jest Twoja pasja czy nie, czy potrafisz programowac w 3 czy 30 jezykach. Ja zakontaktowalem projekt i szukam ludzi, ktorzy mi to zrobia tanio, dobrze, szybko i z glowa (elastycznie). Jakies takie gadki o pasji itp mnie nie interesuja, a nwet dziala na niekorzyc goscia, ktory mi mowi ze programowanie jest jego pasja i robi to 12 h dziennie. W firmie wymaga sie odpowiednia komunikacja z reszta zespolu i klientami. Wazne zeby nie wywyzszac sie (Ty to robisz) nad innymi. Ja jako szef chce zatrudnic studenta, ktory nie ma pojecia o wzorcach itp. ale umie kodowac. Ja mu zrobie funddamenty, kluczowe miejsca a on wypelni reszte (zrobi najlatwiejsza czesc, czesto najbardziej obszerna) I Ty jako pracownik MASZ OBOWAZEK sie z nim dogadac, ewentualnie pomoc, a nie mowic, ze jest glupi. Tacy jak Ty nigdy nie wychodza poza pewny pulap(nawet jesli maja wiedze), bo sa uszczeleni przez takich ja, bo nikt sobie nie pozwoli na sianie fermentu w firmie. Kazdy pracownik musi byc doceniony, wtedy pracuje wydajniej i ma motywacje do rozwoju, a Taki gosciu jak Ty zazwyczaj probuje podskakiwac, domagac sie awansu i zostaje wywalony. Musiscie zrozumiec, ze kierownik poza wiedza musi miec dar dogadywania sie z ludzmi, bajeroania klientow itp a facet ktory, spedza przed klawiatura 12h dziennie napewno nie jest w stanie tego zrobic. Najlepszymi pracownikami sa wlasnie ludzie inteligetni, ktorzy sa wstanie odniesc sukces w wiekszosci dziedzin, wybrali sobie informatyke, nauczyli sie odpowiednich technologii/jezykow. To sa swiatlli ludzie, ktorzy wiedza co chca(odniesc sukces i swietnie zarabiac – sa chciwi, ja to lubie, takim place ponad 10K, bo sa zdeterminowani i nie rzekaja, przpychaja projekt nawet sila)… a nie facet ktory siedzi 12h dziennie (moze umie wiecej od tego poprzedniego, ale mi jest potrzebna tylko czesc jego wiedzy programistycznej, a napewno nie spelnia moich oczekiwac w strfach poza progrmistycznych)

Acha, co do pasjonatow – programista musi umiec robic kod nie dokonca ladny, to jest biznes, sa terminy itp czyli: firma robi to za co jej zaplacono, a nie to co uwaza nawiedzony, zarosniety programista

pa: zatrudniam 30 programistow, 6 architekow/kierownikow (kazdy z nich jest odpowiedzialny za min 2 projekty)

Jeszcze jedno… pewnie teraz bedziesz chcial obalic wszystkie moje tezy, ale dodam, ze startowalem jako wolny strzelec. Zakladajac firme mialem 15K kapitalu, wiekszoc robilem sam, zatrudnialem pracownikow zdalnie. Po 10 latach mam firme, ktora produkuje rownolegle min 10 projektow, srednia pensa to 8K brutto, kilkumilionowe zyski rocznie… nie chwale sie, ale chce pokazac reszcie, zeby poza swoja dzidzina rozwijali sie na innych plaszczynach i uczyli tych technologii popularnyc(wydajnych produkcyjnie) bo postawa autora artykulu jest dobra, ale na uczelni. Jesli ktos chce zostac naukowcem to ok, Jva, .NET nie sa zdecydownie dla niego, ale jesli ktos chce robic mamone musi myslec ;) A co do wyminionych niszowych jezykacj, sa one nadal uzywane… z podkresleniem na slowo „nadal”. Bankami nie kieruja frajerzy, wczesniej czy pozniej zleca nowy system, ktory bedzie tanszy w utrzymaniu i da wieksze mozliwosci.

@Grzesiek: nie będę nic obalał z prostego powodu: nie pamiętam co napisałem (było to dawno temu w trawie) i nie specjalnie wiem do czego się odnosisz (sądzę nawet że co innego chciałem przekazać a Ty mówisz też zupełnie o czymś innym). Opierasz swój biznes na kilku analitykach i klepaczach kodu w postaci studentów, ok. Na prawdę nic mi do tego i póki nie będę u Ciebie pracował (a że nie zostawiłeś żadnej „wskazówki” jaką firmę prowadzisz to raczej to szybko się nie zdarzy) to na prawdę zupełnie mnie to nie interesuje. Firma odnosi sukcesy i pracownicy są zadowoleni? Dobrze dla Ciebie i życzę dalszego owocnego rozwoju.

Witam. nie piszę tutaj żeby na czymś zarobić chciałbym się dowiedzieć jak łatwo można ogarnąć jakiś kolwiek język programisty, ponieważ interesuje mnie to i chce to ogólnie zrozumieć . można iść do szkoły jeszcze raz ale na to brakuje czasu więc stąd te pytanie;P jeżeli możesz to jakoś doradź i pomoż moj adres e mail znasz;P

Powiem tak. Nie ma sensu iść za modą i uczyć się ze względu na popularność języka. To największa głupota. Osobiście uważam że programista powinien znaleść swój język, w którym czuje się najlepiej. Nie da się tak samo dobrze (przede wszystkim szybko i sprawnie) pisać we wszystkich językach, które się umie.

Ja znam 3 języki: Delphi, C++ oraz Python. Najczęściej piszę w Lazarusie (darmowym odpowiedniku Delphi) i jest mi z tym dobrze. Czasem również używam Pythona do pisania prostych skryptów. W C++ to już w ogóle nie piszę. Mam gdzieś JAVA, C# i PHP, chociaż JAVA jest składnią podobny do C++ więc nie ma jakichś większych problemów by w tym pisać.

Co do tanio szybko i dobrze, nie jest możliwe spełnienie tych trzech warunków.

tanio i dobrze = nie będzie szybko
tanio i szybko = nie będzie dobrze
dobrze i szybko = nie będzie tanio

A pasjonat to może pisać albo własne projekty (wtedy nikt takiemu nie będzie dyktował co ma robić), z pasją można pisać programy również jako freelancer (również można wdrażać własne pomysły).

Na zpoziomie akademickim narzedzie nie jest wazne. W firmach sa bardzo wazne. na 3 roku warto sie jednak zainteresowac co jest na rynku potrzebne.

Język to nie jest żaden problem bo tego łatwo się nauczyć. Problem do doświadczenie, którego wymaga się przynajmniej w ogłoszeniach o pracę, choć dotyczy to w zasadzie również i freelance bo jak ktoś dopiero nauczył się C# a dopiero z tym zaczyna to nie radzę brać zleceń bez jakiejkolwiek podkładki w postaci własnych projektów z tego zakresu, którego dotyczy zlecenie.

Problem jest jednak nie z technologiami ale z rynkiem, ponieważ jeśli wszyscy uznają że warto uczyć się tego C# czy JAVA to może (i jest do dość prawdopodobne) dojść do nadwyżki podaży nad popytem (wysyp wielu programistów gotowych do pracy), co będzie skutkowało tym, że pracodawcy będą dyktować warunki a ci będą pracować niemal za głodowe pensje, i zawsze taki pracodawca może takiego zastąpić kimś innym.

Proponuje wziasc sie za robote, a nie rozkminiac co warto a czego nie. .NET i JAVA sa teraz popuralne i nadal beda, bo sa wygodne. Twoj post pokazuje tylko, ze jeszcze nie znasz tych platform. Sam C# to tylko mala czastka „programowania” to samo z Java.
Pozdrawaim

OK, niech .NET i JAVA będą popularne. Ale ja zauważyłem jedno. Dotychczas miałem do czynienia z trzeba językami programowania, mianowicie pascal, python oraz C++. I co można zauważyć. Pascal a właściwie Delphi jest bardzo przystępny i dobry do szybkiego tworzenia oprogramowania, łatwy w nauce i w pisaniu programów, podobnie jak Python, czego akurat nie powiedziałbym o C++. Z punktu widzenia aplikacji okienkowych, jeśli chodzi o pascal mamy Delphi, z tym że płatne a na wersjach Personal właściwie nic ciekawego nie można napisać. Ale na szczęście jest bezpłatny odpowiednik – Lazarus. W Python sprawa jest prosta, wystarczy zainstalować np. Python 2.6 + wxWidgets + Boa constructor. Obszerne wsparcie na stackoverflow i w wielu innych serwisach. Jeśli chodzi o C++, jest C++ builder, również płatny więc jako bezpłatna alternatywa (do nauki i pisania własnych aplikacji) można rozważyć wxDEV C++, korzystający z GNU C++ oraz wxWidgets i środowiska MinGW (akurat dla Windows).

To tyle jeśli chodzi o te technologie. Ale skoro piszesz, że JAVA czy .NET są takie popularne i zajebiste, to może mi podasz jaki kompilator (a chodzi mi o narzędzie RAD studio) można uczyć chociażby do ćwiczeń, czy tworzenia oprogramowania? Bo ja widzę tylko jeden, mianowicie JBuilder, który też nie jest bezpłatny. Pracodawcy wymagają doświadczenia, czy tak? A skoro mówimy o znajomości technologii to trzeba najpierw mieć jakieś narzędzia bo na czym się nauczysz a mnie chodzi tylko o open source. Myślisz że to wszystko takie proste? Narazie pozostaję przy moim ulubionym Lazarusie, ewentualnie Pythonie z BOA, C++ idzie w odstawkę. C++ jak i kompilator wxDEV C++ jest dość nieprzystępny jeśli chodzi o szybkie i przyjemne tworzenie aplikacji, o wiele prościej jest w C++ Builder ale ten przecież sporo kosztuje.

Przykro mi to stwierdzić, ale autor jest zadufanym w sobie bubkiem i egocentrykiem – przynajmniej tak przedstawia się w pierwszych akapitach.

@Autor: dlaczego uważasz, że zakałą informatyki będzie ktoś kto chce się czegoś nauczyć i nie wie od czego zacząć? Dlaczego wysnuwasz od razu pochopne wniosku, iż każdego dać ma to sławę, kobiety i pieniądze? Nie przyszło Ci, w całym Twym potencjalnym ograniczeniu, do głowy, iż większość ludzi, którzy o to pytają to po prostu normalni ludzi, którzy chcą mieć za co i z czego żyć, a w tym celu potrzebują nabyć konkretnych umiejętności? Oczywiście, poniekąd można się z Tobą zgodzić, gdyż takie podejście jest nieco bezcelowe, ale nie jest to powód, by od razu większość takich ludzi obrażać.

Zdaję sobie sprawę, że wstęp miał łączyć dydaktykę z satyrą, ale łączy bardziej żenadę z bólem dupy.

Przestałem czytac po pierwszym akapicie. I to nawet nie dlatego ze jestem „zakałą informatyki”, tylko dlatego że autor jest chamem.
Pozdrawiam

Pingback: Jakiego języka programowania się uczyć? - kontra | devstyle | Maciej Aniserowicz

Dodaj komentarz:

 

Subscribe without commenting