Skontaktowano się z nami w sprawie niektórych prac związanych ze zdalnym sterowaniem wyświetlaczy LED przez TCP / IP, ale moje doświadczenie i przygotowania dotyczą głównie języka programowania wysokiego poziomu. Powiedziałem to osobie, która skontaktowała się ze mną w sprawie pracy, a on powiedział mi, że:
„jeśli nazywasz siebie programistą, powinieneś znać wszystkie te rzeczy”
Czy programista powinien naprawdę znać szczegóły programowania niskiego poziomu? Czy też mogę potraktować to jako koncepcję czarnej skrzynki, jako wiedzę teoretyczną, ale niekoniecznie robienie tego lub wdrażanie rozwiązań językowych niskiego poziomu, mając na uwadze, że programowanie na niskim poziomie nie jest moją wiedzą?
low-level
high-level
praca
źródło
źródło
Odpowiedzi:
Twój kontakt nie wie, o czym mówią. Istnieje wiele języków, metodologii, technologii itd., Więc jedna osoba nie jest w stanie bardzo dobrze znać wszystkich niezbędnych szczegółów. Jako programista musisz wiedzieć, jak nauczyć się, jak wykonać zadanie, i podejść do rozwiązywania problemów, które możesz zastosować, aby znaleźć rozwiązanie, bez względu na to, jakiego języka programowania potrzebujesz.
Przyjmowanie tego, czego nie wiesz, jest w porządku, ale możesz także udowodnić, że jesteś w stanie nauczyć się wystarczająco dużo, aby osiągnąć pożądany rezultat, bez względu na to, z czym masz do czynienia. Dobrzy programiści są po prostu dobrymi rozwiązującymi problemy, które mogą wdrażać swoje rozwiązania w różnych językach programowania.
Nie pracowałbym dla kogoś, kto ma takie podejście, jak twój kontakt.
źródło
Zdecydowanie nie zgadzam się z tym stwierdzeniem. To tak, jakby poprosić szefa kuchni o gotowanie czegokolwiek, kierowcę obsługującego każdy pojazd mechaniczny lub lekarza, który znałby wszystkie choroby, co jest absurdalnym założeniem.
Aby zostać programistą, trzeba wiedzieć, jak dać oprogramowanie do pisania w pewnym języku, aby wykonać pewne zadanie w sposób zautomatyzowany. Języki i zadania będą się różnić od programisty do programisty, podobnie jak potrawy, które szef kuchni wie, jak zrobić, kierowca wie, jak obsługiwać, lub lekarz wie, jak diagnozować, będą się różnić w zależności od tego, jak specjalistyczny chce być w każdym zawodzie.
źródło
Mówiony jak osoba, która nigdy nie napisała linii kodu w swoim życiu. Będzie to ta sama osoba, która poczuje, że powinieneś być w stanie to zrobić w połowie czasu, który podałeś. Nie kłóć się z idiotą.
Pokazałeś znacznie więcej wiedzy i charakteru, znając swoje ograniczenia. Ta osoba mówi o rzeczach, o których nic nie wie.
Chyba każdy cieśla powinien wiedzieć, jak wyrzeźbić ozdobny mebel. Jeśli pilot może latać jednym samolotem, może latać nimi wszystkimi.
źródło
Większość programów CS w szkole daje pewną wiedzę na temat programowania niskiego poziomu. Ja, na przykład, miałem klasy asemblera korzystające z procesora 8088 (OK ... to trochę mnie datuje). Myślę jednak, że w dzisiejszych czasach wiele szkół handlowych omija tę wiedzę - jeśli to nieprawda, poproś o komentarz.
Podsumowując, zawsze dobrze jest wiedzieć, co dzieje się na poziomie układu - poza tym języki wysokiego poziomu ostatecznie w końcu tam się znajdą, gdy zostanie uruchomione.
Jednak aby ktoś powiedział ci, że nie jesteś programistą, ponieważ obecnie nie wiesz, że programowanie na niskim poziomie jest ignoranckie. Jeśli potrzebujesz tych umiejętności do bieżącego projektu, powinieneś mieć wystarczająco dużo sprytu lub motywacji, aby nauczyć się umiejętności, których potrzebujesz, a następnie je zastosować.
Musiałbym poważnie rozważyć rezygnację z tego projektu, jeśli klient już z tobą rozmawia w ten sposób - nigdy nie wiesz, gdzie to może pójść.
źródło
Naprawdę nienawidzę tego, gdy ludzie mówią: „Musisz znać X, aby nazywać siebie programistą”. Naprawdę? Cóż, niektórzy ludzie pracują nad COBOL cały dzień i UWIELBIAM to. Mogli być w tym tak dobrzy i mieć problematyczną domenę, że obok nich wszyscy udajemy.
Poważnie, daj ludziom szacunek do rozwiązywania problemów, na jakie napotykają, w fajny i interesujący sposób. Zrozum, że świetne rozwiązywanie problemów pochodzi z różnych środowisk. Nie to, czy opanowali rzekomą „listę kontrolną” umiejętności, którą każdy powinien znać, aby wszyscy mogli myśleć w ten sam sposób. To jest DOKŁADNA przeciwieństwo tego, czego chcemy. „Lista kontrolna” wszystkich osób jest i powinna być inna. Im bardziej różne, tym lepiej. Programowanie jest rozwiązywaniem problemów w dzisiejszych czasach. Szanuj tych, którzy robią to dobrze i rozumiesz, że wszyscy przychodzą do stołu z różnymi mocami. To jedyny sposób, w jaki pomagamy sobie nawzajem skutecznie pracować jako zespół. To, że znajomość „C” lub czegoś takiego naprawdę pomaga temu jednemu facetowi, jest niesamowita, nie znaczy to, że nie
źródło
Sugeruję przeczytanie tego:
http://www.joelonsoftware.com/articles/LeakyAbstractions.html
Jak wyjaśniono, podczas korzystania z abstrakcji, niższy poziom zawsze ma wpływ na to, co robisz. Może to być związane z wydajnością, przyczyną awarii, względami bezpieczeństwa i tak dalej.
Tak więc zdecydowanie powinieneś teraz o tych rzeczach. Nie jest to szczególnie specjalista od architektury asm lub procesora. Ale wiedza wystarczająca do udokumentowania samego siebie, kiedy trzeba wiedzieć więcej, jest rzeczywiście koniecznością.
źródło
Jego argument jest dobrym przykładem logicznego błędu No True Scotsman .
Różnica między programowaniem niskiego i wysokiego poziomu nie jest jednak językiem, to dziedzina wiedzy o aplikacjach. Przypisanie wartości true może oznaczać włączenie diody LED lub włączenie zdarzeń kliknięcia myszy w widżecie. Język nie obchodzi.
Na przykład spójrz na tę bibliotekę do pracy z matrycą LED na arduino. To nie jest nauka o rakietach i naprawdę każdy programista byłby w stanie ją zrozumieć przy odrobinie wysiłku, gdyby nie postawił „niskiego poziomu, och nie!” blok mentalny.
źródło
Każdy język programowania ma swoje zalety i wady. Nauczenie się kilku, dałoby ci świetne wyobrażenie o tym, czego używać i jak efektywnie z niego korzystać po otrzymaniu projektu.
Jako programista możesz specjalizować się w konkretnej PL, wykorzystując ją jako jedyne narzędzie do rozwiązania dowolnego problemu, możesz także znać dużo PL, ale specjalizować się w niczym i wiele więcej pomiędzy tymi skrajnościami.
Może osoba, która powiedziała ci, że „Fraza” jest sfrustrowana, być może nie byłaś jedyną osobą kontaktową, z którą rozmawiał.
znajomość problemu i wiedza, jaki zestaw umiejętności jest potrzebny do skutecznego rozwiązania problemu, jest jedną z dobrych cech programisty. Niestety w twojej sprawie, ponieważ nie masz wymaganego zestawu umiejętności, być może możesz skierować swoją osobę kontaktową do innego programisty z niezbędnym zestawem umiejętności.
Twoje zdrowie,
nieszczęśliwy
źródło
Posiadanie wiedzy teoretycznej jest dobre. Bardzo ważna jest umiejętność nauki języka niskiego poziomu w razie potrzeby .
Ale jeśli chodzi o „jeśli nazywasz się programistą, powinieneś wiedzieć te wszystkie rzeczy”, kto może wiedzieć wszystko o wszystkim? Zanim jeszcze to zrobią?
źródło
Przepiszę
DO
źródło