Programowanie - uzupełnienie podstaw

Witam,

Do tego postu zachęcił mnie wpis na blogu http://www.dobreprogramy.pl/Administrator-Programista-A-moze-Tester,Blog,27313.html

Jestem studentem, który jeśli chodzi o programowanie to jest samoukiem. Jedyne co miałem na studiach to podstawy pascala (pierwszy semestr), podstawy assemblera (drugi semestr). Następnie nastąpił przeskok w programowanie obiektowe w AktviNet w środowisku C#.

Aktualnie jeśli jest potrzeba napiszę inne programy w C#, które z powodzeniem używam, ale tak jak napisałem - jestem głównie samoukiem z zapewne wieloma brakami, Np nie wiem jak czytać dokumentacje bibliotek - gubię się w tym. Chciałbym też się zapoznać z pewnymi rzeczami, z którymi każdy programista powinien być zaznajomiony.

Dlatego proszę Was o pomoc. Z czym powinienem się zaznajomić, jakieś poradniki dotyczące dokumentacji? Coś co Wam pomagało zaczynać. Angielskiego się nie boję.

  1. Musisz sam się określić, w jakich języku / technologii chciałbym programować. Na temat który język lepszy / gorszy pierdyliard flame war, szkoda tylko że niezbyt merytorycznych.

  2. Studia nie uczą programowania. Ja też jestem samoukiem, programuje zawodowo od trzech lat, studiuje od dwóch i mam porównanie. Musisz się uczyć sam. Zresztą języki ciągle się rozwijają i nawet po studiach sam będziesz musiał się douczać. Więc się przyzwyczaj, tak będzie do końca Twojej kariery zawodowej.

  3. Chyba każdy język ma swoją mniej lub bardziej oficjalną dokumentację i społeczność. IHMO to najpewniejsze i najpełniejsze źródło wiedzy. Dokumentacja wbrew pozorom zwykle nie jest zbyt trudna w lekturze.

  4. Książki bywają lepsze i gorsze. Na Twoim miejscu szukałbym raczej nowszych wydań, choć mi bardzo się podoba m.in. “Thinking in C++” wydane chyba w 2003.

  5. Aby nauczyć się dobrze programować, musisz jak najwięcej programować. Tak samo z dokumentacją. Ćwiczenie czyni mistrza.

  6. Oprócz samego języka musisz poznać podstawowe toole (IDE, debbuger), opcje kompilatora etc.

W czasach gdy wszystko jest przenoszone do chmury według mnie warto programować w php, java i javascript. Przeglądając oferty pracy widzę, że najczęściej poszukiwanymi programistami są programiści java. Aplikacje niewebowe będą musiały być wieloplatformowe i działać nie tylko na windows, linuks, macOS, ale też na systemach mobilnych: android, symbian, badaOS i wiele innych. Wszystko zależy jakie programy chcesz tworzyć i na jaką platformę.

Prawda. Nie znaczy to wcale, że do końca życia będziesz zamknięty w małym świecie języka/platformy/API, ale lepiej poznać coś dogłębnie, niż sto rzeczy po łebkach.

Poniekąd prawda. Studia budują atmosferę, która sprzyja uczeniu się samemu, jeśli człowiek chce. Dają wskazówki czego można się nauczyć, co jest warte eksploracji i użyczają ludzi z wiedzą (często stricte teoretyczną, niestety czasem także ludzi niedouczonych), z których warto korzystać. No i jakie by laborki nie były, zmuszają do pracy. Przymus dobrze działa. :wink:

Przeważnie największą zbrodnią dokumentacji jest to, że trudno się w niej szuka. Ale i nauczenie się wygrzebywania informacji jest wyłącznie kwestią czasu. Przykładowo programując pod Windows MSDN najlepiej eksplorować przez Google. :S Koniec końców z czasem podstawową dokumentacją staje się sam kod (lub nagłówki bibliotek).

Z nauką C++ jest taki problem, że to szalenie złożony język o dziesiątkach pułapek, w które łatwo wpaść. Jestem zatwardziałym przeciwnikiem uczenia się C++ jako pierwszego języka.

Do 5. i 6. nic nie zamierzam dodawać.

Praktycznie każdy język ma swoją niszę. Niszą Javy są rozwiązania biznesowe i jeśli ktoś chce klepać taki kod - powinien zainwestować w Javę czas (lub ewentualnie w C# – taki np. InsERT przenosi się z C++ na C#). Z językami stosowanymi w aplikacjach webowych jest taki problem, że istnieje gigantyczna różnica między tym czego używa się w Polsce (głównie PHP) a tym, czego używa się np. w Stanach (głównie nie PHP). Warto mieć to na uwadze jeśli w dalszych planach widzi się możliwość pracy poza Polską.