Chcę nauczyć się programować w sposób „przyszłościowy”, jeśli chcesz. Podczas gdy Windows dominuje na rynku systemów operacyjnych dla komputerów stacjonarnych (na razie), oczywiście nauka języka / frameworków / interfejsów API ma wiele wartości - może to ulec zmianie w miarę pojawiania się nowych urządzeń lub Windows strzela samotnie w stopę (ponad przyjazne zapowiedzi systemu Windows 8 nie wyglądają zbyt zachęcająco ...).
Czy miałbym rację, myśląc, że solidna znajomość C / C ++ w zakresie logiki zaplecza / programowania niskiego poziomu i tym podobnych, w połączeniu z niezwykle przenośnym językiem, takim jak Java dla GUI i tak dalej, byłby dobrą podstawą do rozwoju oprogramowania które okażą się przydatne na większości systemów? - Mówię o komputerach stacjonarnych, tabletach, telefonach.
źródło
Odpowiedzi:
Jeśli chcesz być przyszłościowy, najlepszą radą, jaką mogę ci dać, jest nie angażowanie się w technologię.
Więc nie ucz się API na ślepo. Dowiedz się, jak zostały poczęte. Jakie są filozofie tej sceny? Jakie są ich zalety i wady? Myśl ogólnie o oprogramowaniu, a nie o konkretnej technologii.
Możesz także pracować nad dobrą koncepcją programu, przejście do OOP, a AOP to dobry wybór IMO. Ale nie tylko rozumiem mechanizm, naprawdę pracuj nad filozofią stojącą za mechanizmem.
Nie zaniedbuj ogólnej informatyki, takiej jak struktury danych i algorytmy, ponieważ stanowią one wiedzę na temat różnych technologii, która jest zawsze przydatna.
Idź też na dobre praktyki. Często masz kilkanaście sposobów na zrobienie czegoś, ale większość z nich to bzdury: podatne na błędy, trudne w utrzymaniu, trudne do zrozumienia później lub przez innego programistę itp. . . Zazwyczaj kod jest trudniejszy do odczytania niż do napisania. Dowiedz się, jak poświęcić trochę więcej czasu na pisanie, aby ułatwić czytanie (ponieważ będziesz czytać kod więcej niż piszesz).
Naucz się skutecznych technik debugowania (inteligentne korzystanie z dziennika i debugera) i testowania (jak pisać kod, który można łatwo przetestować jednostkowo i jak zautomatyzować te testy).
Następnie potrzebujesz ogólnego zaplecza technologicznego. Mówię o bardzo szerokiej wiedzy, na przykład o tym, jak działa procesor (brak pamięci podręcznej lub przewidywanie gałęzi to dobry początek), o systemach UNIX, o protokołach sieciowych, takich jak IP, TCP i Ethernet itp. . .
Na koniec naucz się, jak się uczyć. Jeśli wiesz, jak się uczyć, możesz się dostosować.
Będziesz potrzebować solidnej wiedzy na temat konkretnych technologii, aby znaleźć pracę, ale te są bardzo przestarzałe (pomyśl na przykład o COBOL lub programowaniu internetowym w czasie wojny IE / Netscape). Więc nie polegaj na nich, aby były przyszłościowe. Będą kluczem do zatrudnienia, ale zdecydowanie nie to, co czyni świetnego programistę i co sprawi, że twoje umiejętności będą trwałe z czasem.
EDYCJA: Jeśli dopiero zaczynasz, zdecydowanie powinieneś coś zrobić. Cokolwiek, naprawdę. Gra taka jak Tetris lub wąż to dobry początek i świetna zabawa. Jeśli nie załatwisz sprawy, poświęcisz dużo czasu na naukę i naprawdę nie zdobędziesz doświadczenia potrzebnego do pełnego zrozumienia tego, czego się uczysz.
Dajmy przykład z wzorami projektowymi. Wzory projektowe są świetne i powinieneś definitywnie ich użyć. Jednak nadużywanie sprawi, że kod będzie skomplikowany i trudny do zrozumienia. Będziesz musiał zmierzyć się z problemem, który rozwiązuje wzór projektowy i stracić trochę czasu na jego rozwiązanie lub jego skutki uboczne, aby w pełni zrozumieć, o czym jest wzór projektowy. Wzorce projektowe muszą być stosowane jako małe refaktoryzacje w miarę wzrostu kodu. I będziesz wiedział, kiedy wzorzec projektowy jest potrzebny, gdy jego korzyść jest większa niż złożoność kodu wywołana jego użyciem. To wymaga doświadczenia.
Zdecydowanie więc załatw sprawy, uczą się na własnych błędach. Nie mogę nalegać na więcej: ZRÓB RZECZY !
źródło
Tym, co odróżnia dobrych programistów od złych, jest ich zdolność do programowania w DOWOLNYM języku. Jak zauważyli inni plakaty, znajomość dowolnego znaczącego języka obiektowego zapewni narzędzia do tworzenia świetnych programów i do popytu.
Również jeśli nadal jesteś w szkole, upewnij się, że masz jakieś lekcje pisania. Najlepsi inżynierowie i programiści są również tymi, którzy dobrze komunikują swoje pomysły.
Gdy zaczniesz działać, najlepszą rzeczą, aby zapobiec przestarzałości, jest nadążanie za aktualnymi trendami. Nie obawiaj się odejść z pracy dla innej, jeśli nie używają aktualnych technologii lub mają okropny proces itp. Najgorszą rzeczą, jaką możesz zrobić w swojej karierze, jest praca przy starych technologiach lub słabych procesach.
źródło
Odpowiedź od @deadalnix jest dobra. Dodałbym do tego trzy rzeczy:
źródło
Ponieważ jesteś na początku, powiedziałbym, po prostu naucz się języka, nie ma znaczenia, który z nich. Trudność nie polega na samym języku (składni), ale na zrozumieniu pojęć; a te ogólne koncepcje programowania dotyczą wszystkich języków programowania, więc nauka drugiego i trzeciego i czwartego (...) języka będzie o wiele łatwiejsza.
Tak więc na początku nie myśl zbyt wiele o byciu „przyszłościowym”. Jednak w miarę postępów staraj się biegle posługiwać się językami bardzo różniącymi się od siebie. Zasadniczo (tak jak powiedziałeś) powinieneś być pod ręką z językiem niskiego poziomu (-ish), takim jak C / C ++, językiem programowania wyższego poziomu, takim jak Java, a także językiem skryptowym (Python, Ruby itp.). Jeśli chcesz zagłębić się w naprawdę zaawansowane rzeczy, musisz także znać Zgromadzenie.
Ale nie stresuj się teraz zbytnio na ten temat. Nauka programowania zajmuje lata. Na razie wybierz język Java, C # lub dowolny inny i wybierz go. :)
źródło
If you want to go into the really advanced stuff you must also know Assembly
- Możesz to zrobić na dowolnym poziomie, wyzwania są po prostu inne.Nie. Nic z tego nie pomoże.
Dobra znajomość struktur danych i algorytmów - niezależnie od konkretnego języka programowania - jest cenniejsza niż „programowanie na niskim poziomie i tym podobne”.
„Niezwykle przenośny język, taki jak Java”, jest równie przenośny jak C i nie pomaga. Next Big Thing będzie tak różne od tych językach, że super-przenośny Java będzie to zobowiązanie, a nie atut.
Mac OS (komputer stacjonarny, tablet i telefon) odbywa się w Celu C. To może być miejsce, od którego można zacząć.
Windows (komputer stacjonarny, stół i telefon) jest wykonywany w C #. To może być miejsce na początek.
źródło