W ciągu kilku lat programowania bawiłem się wszystkim, od Ruby po C ++. Zrobiłem wszystko, od nauki podstawowej składni (Ruby) po ukończenie kilku dużych (dla mnie) projektów, które poszerzyły moje umiejętności językowe. Biorąc pod uwagę tę różnorodność (i fakt, że prawdziwa nauka języka nigdy się nie kończy), kiedy mogę powiedzieć, że znam (lub nauczyłem się) język?
programming-languages
SomeKittens
źródło
źródło
Odpowiedzi:
W którym momencie możesz powiedzieć, że „nauczyłeś się” języka takiego jak angielski lub francuski? Myślę, że większość ludzi zaakceptuje fakt, że nauczyłeś się języka, kiedy możesz go używać do komunikacji. Nie musisz znać każdego słowa ani rozumieć każdego idiomu, ale powinieneś znać większość (raczej małego) podzbioru języka, którego ludzie używają w codziennej rozmowie. Po „nauczeniu się” języka do tego stopnia możesz dalej uczyć się, gdy używasz języka codziennie i narażać się na coraz więcej. Zanim umrzesz, nadal nie będziesz wiedział wszystkiego, co można wiedzieć o języku, ale nikt nie powie, że nigdy nie nauczyłeś się tego języka.
Myślę, że tak jest z językami komputerowymi. Możesz powiedzieć, że „znasz” język taki jak C ++ lub Ruby, kiedy możesz pisać w nim użyteczne programy. Jeśli chcesz obliczyć stopień znajomości języka, użyj tych samych terminów, których używasz dla języka ludzkiego. Powiedz „Wiem trochę C ++” lub „Wiem konwersacyjny C ++” lub „Mówię biegle w C ++”, co oznacza, że wiesz wystarczająco dużo, by się do tego przyczepić, wystarczająco dużo, aby zrobić użyteczne rzeczy lub że jesteś ekspertem, odpowiednio, kolejno.
źródło
using
w języku C # lubb, a = a, b
i generatory w pythonie. W przeciwnym razie +1.To zależy od tego, kto pyta
Osoba, która pyta, prawdopodobnie ma pewne pojęcie, jakiego poziomu umiejętności oczekuje się od kogoś, kto mówi, że „nauczył się języka”.
Zasadniczo natknąłem się na dwie archetypowe skale, według których ludzie oceniają odpowiedź na pytanie „czy nauczyłeś się X?”
Dla większości frajerów jest to podchwytliwe pytanie, aby wyeliminować pozerów. Jest to już widoczne w innych odpowiedziach na twoje pytanie;). Jeśli powiesz, że się nauczyłeś, nie widzisz zakresu zadania, które jest domyślnie „doskonałością”, a co gorsza: nie masz pokory.
W przypadku większości bossów „nauczyłeś się”, jeśli potrafisz rozwiązać ich problemy , kryterium czasu jest już spełnione, jeśli Twój kod się skompiluje. Odpowiedź na jego pytanie w skromny sposób doprowadzi go do przypisania tego zadania pozerowi, który może być również krewnym.
Więc jaka jest twoja publiczność?
źródło
Myślę, że ludzie skupiają się na tym, aby słowo „wyuczony” było idealnie napięte, co oznacza, że skończyłeś się uczyć. I jak wszyscy zauważyli, języki programowania są żywymi istotami, podobnie jak języki mówione. Na przykład ktoś, kto opanował C # 2, spojrzałby na C # 3 za pomocą LINQ, Lambdas,
var
słów kluczowych, inicjalizatorów obiektów / kolekcji i metod rozszerzenia i stwierdziłby, że wiele się zmieniło od tego, czego nauczył się w poprzedniej wersji. To samo dzieje się z C # 4 zawait
,async
słowami kluczowymi i innymi konstrukcjami nowego języka.Mówimy tutaj o składni. Zapominamy, że większość języków jest połączona z frameworkiem . C # ma platformę .NET, Java ma własną platformę, podobnie jak Ruby, C ++, PHP i PERL. Pomyśl o strukturze języka jako słownictwie, a sam język to tylko składnia. Znajomość języka oznacza, że wiesz, jak zrobić zdanie w tym języku. Znajomość ram oznacza, że możesz dobrze wyrażać się w języku. Na koniec, kiedy poznasz składnię i słownictwo, musisz nauczyć się idiomów , aby pisać kod jako „native speaker”.
Powiedziałbym, że jest kilka poziomów uczenia się.
źródło
await
pochodzi z C # 5, główną nowością w C # 4 byładynamic
.Rzadko można powiedzieć, że nauczyłeś się języka. To oznacza, że skończyłeś się o tym uczyć, co jest ... głupie.
Mówienie, że wiesz, że język jest w porządku, kiedy możesz pisać kod, który nie rażąco łamie idiomy w tym języku (może po tygodniu odrdzewienia wiedzy) bez odwoływania się do odwołania do składni.
źródło
Jest to bardziej czynnik oparty na opiniach. We wszystkich terminach technicznych „Uczony” oznaczałby pełną znajomość języka, tak jak można się spodziewać WSZYSTKIEGO języka.
Uważam jednak, że w świecie programowania chodzi bardziej o to, czy umiesz płynnie programować w języku, aby zrealizować cel / zadanie. Prawdopodobnie oznacza to również, że nie znosisz języka. Pewnie, że możesz tam iść i uzyskać dyplom po latach studiów, ale to tylko po to, aby zostać zauważonym? Ty decydujesz, kiedy możesz powiedzieć, że nauczyłeś się języka.
źródło
Kiedy zaczniesz zauważać jego wady. Kiedy zaczniesz uczyć się języka, zwykle nadal jesteś zajęty uczeniem się, jak robić rzeczy lub jesteś bardzo zaangażowany w to, aby zauważyć, gdzie się nie udaje (oczywiście, chyba że zaczniesz uczyć się go z negatywnego punktu widzenia, aby zobaczyć, jak gorzej jest jak do tej pory ulubionym językiem). Powiedziałbym, że tak naprawdę nie znasz języka, dopóki nie będziesz w pełni świadomy obszarów, w których on się nie powiedzie.
źródło
Moja osobista odpowiedź na to pytanie brzmi:
Odtąd nie nazwałbym tego nauką, ale opanowaniem.
źródło
W momencie, w którym Twoja aplikacja lub komponent może czytać pocztę, tj . Prawo Zawińskiego , które stanowi:
Zostało to zaktualizowane, gdy RSS stał się popularny jako „... może czytać kanały RSS” i prawdopodobnie można go teraz zaktualizować do „... może czytać kanały na Twitterze”. ;-)
źródło
Myślę, że nauczyłeś się języka, gdy go nie widzisz. Nie widzisz cykli i dostępu do danych, ale przepływ pracy algorytmu.
Nie grasz sztuczkami z przekazywaniem parametrów i przetwarzaniem tablic, magicznymi makrami. Nie myślisz o swoim kodzie jako o materiale marketingowym, który możesz pokazać znajomym i nauczycielom, ale aby wyrazić zrozumienie problemu i wolę komputera w najbardziej czytelny sposób.
Masz przyzwyczajenia, które pomagają unikać wielu błędów po prostu przez ich przestrzeganie, na przykład: używaj {} bloków kodu i () w wyrażeniach, nawet jeśli masz absolutną pewność, że „będzie tylko jedna linia” lub „Nie jestem głupcem i wiem kolejność pierwszeństwa operatora ".
Przestajesz liczyć, ile klas, wzorców i interfejsów API znasz. Do tego właśnie służy inteligencja, referencje i samouczki, a także Google. Ale kiedy spojrzysz na problem, od razu wiesz, jakie części można podzielić, a przy pomocy jakich narzędzi i algorytmów je rozwiążesz.
To, co robisz, działa , jest eleganckie i małe . Lubisz kodować i łatwo znajdziesz swoje błędy. Tak, mistrzowie również robią błędy, ponieważ są ludźmi - ale szybko je znajdują, ponieważ ich struktura kodu prowadzi ich we właściwe miejsce.
I wreszcie uświadom sobie: nauczyłeś się myśleć, analizować i rozwiązywać problemy; w porównaniu do nich, rzeczywisty język jest drugorzędny, tylko obecne pudełko reguł i narzędzi.
źródło