Jaka jest naprawdę różnica?
Prawdziwa i ważna różnica między językiem programowania a tymi innymi językami jest następująca:
HTML i CSS opisują prezentację , podczas gdy języki programowania opisują
funkcję
Zamierzam zilustrować, dlaczego ta różnica ma znaczenie, ale pedanteria w tej kwestii jest czasem niewłaściwa.
Prawdziwa historia :
Raz spędziłem kilka miesięcy, opracowując złożony system zarządzania wydajnością przy użyciu „właściwego” języka programowania. Zautomatyzował proces gromadzenia danych z różnych innych systemów, wykonał różne operacje na tych danych, a następnie przedstawił wyniki w prostej tabeli.
Kiedy to zostało uruchomione, starszy menedżer zobaczył narzędzie napisane dla podobnej firmy i zapytał, czy możemy zastąpić to, co napisałem, używając ich alternatywy. Co więcej, był zdenerwowany, że spędziłem tygodnie na opracowywaniu mojego rozwiązania, w którym nowa aplikacja została napisana w ciągu kilku dni.
Dalsze dochodzenie ujawniło, że preferowaną opcją menedżera była prezentacja bez żadnej treści: było wiele kolorów, ikon i wykresów, ale nie było za nimi żadnej logiki . Wszystkie dane musiały być gromadzone i przetwarzane ręcznie. Pomimo ładnego interfejsu aplikacja była zasadniczo bezużyteczna.
Z przyjemnością informuję, że menedżer, o którym mowa, został przekonany, że moje podejście spełniło jego prawdziwe potrzeby biznesowe.
Znaczenie prezentacji :
Często implikuje się, że umiejętności w HTML, CSS itp. Są nieco gorsze niż umiejętności w „prawdziwych” językach programowania. To poważny błąd.
W mojej historii starszy menedżer uważał, że projekt był dla niego bardzo ważny, ponieważ początkowo był przygotowany na przeoczenie funkcji na jego korzyść. Gdyby to był izolowany incydent, mógłbym zasugerować, że kierownik był po prostu głupi. Ale tak nie było. Raz po raz spotkałem użytkowników, którzy są pod wrażeniem efektownej grafiki i niesamowitych widżetów, ale nie są pod wrażeniem surowej funkcjonalności i moich osiągnięć technicznych. Myślę, że jest tu kilka lekcji:
- Ludzie oceniają oprogramowanie na podstawie kryteriów, które rozumieją. Często rozumieją różnicę między przystojnym a brzydkim, ale rzadko doceniają niuanse techniczne.
- Ludzie oszukują pozory. To może nie być dobra rzecz, ale jest to rzeczywistość, z którą musimy żyć.
- Wygląd wpływa na to, jak ludzie myślą o oprogramowaniu. Sposób, w jaki ludzie postrzegają oprogramowanie, jest dla nich ważny. Rzeczywiście ludzie czasami wolą oprogramowanie, które sprawia, że czują się lepiej niż oprogramowanie, które jest funkcjonalnie lepsze. W rzeczywistości mogą być bardziej wydajne dzięki narzędziom zapewniającym dobre samopoczucie niż narzędziom technicznie lepszym. W tym zakresie nasi użytkownicy nie są oszukiwani. W rzeczywistości dokonują mądrego i przemyślanego wyboru.
- Jako programiści często pomijamy rolę prezentacji, ponieważ koncentrujemy się na funkcji. W pewnym stopniu jest to właściwe i właściwe. Należy jednak pamiętać, że w naszej pracy istnieje inny wymiar, który jest ważny dla naszych klientów.
Dlatego ważne są języki zorientowane na prezentację (HTML, CSS). Nie należy lekceważyć wartości dodanej osób, które potrafią skutecznie korzystać z tych narzędzi.
Znaczenie prawdziwych języków programowania
Jak zauważył PO, „prawdziwe” języki programowania są Turing Complete. Jako prawdziwy smutny maniak uważam to za niezwykle fascynujące. Oznacza to, że dla każdego programu napisanego w języku TC, funkcjonalnie równoważny program można napisać w dowolnym innym języku TC. Oczywiście nie oznacza to, że wszystkie języki są takie same. Każdy z nich ma swoje mocne i słabe strony, które czynią go mniej lub bardziej odpowiednim do określonych zadań. Jednak pomijając we / wy, oznacza to, że wszystkie programy można pisać we wszystkich prawdziwych językach programowania.
(Nawiasem mówiąc, istotną rzeczą jest TC. Deklaratywna kontra imperatywna jest tutaj red-herring. Na przykład SQL jest deklaratywny, ale jest również właściwym językiem programowania, ponieważ jest TC.)
Oczywiście to samo nie dotyczy języka znaczników, takiego jak HTML lub CSS. W rzeczywistości istnieją całe klasy problemów, których te języki po prostu nie mogą rozwiązać . Tam, gdzie mogę zaprogramować wszystko, co chcę w prawdziwym języku programowania - w tym silniki układu - po prostu nie można osiągnąć tych samych rzeczy w językach, które nie są TC.
Jak podkreślono w mojej historii, HTML i jego podobne są używane do tworzenia prezentacji. Prawdziwe języki programowania są używane do tworzenia funkcjonalności.
Dlaczego programiści są pedantyczni na ten temat?
- Programiści poświęcają wiele czasu, wysiłku i pieniędzy na rozwijanie swoich umiejętności. Ludzie w naturalny sposób cenią rzeczy, w które inwestują („twoje serce jest tam, gdzie są twoje pieniądze”).
- Programiści często odczuwają potrzebę uzasadnienia czasu potrzebnego do uzyskania wyników w porównaniu z szybkimi wynikami osiągniętymi przez projektantów interfejsu użytkownika. Aby to zrobić, muszą dokonać rozróżnienia między tym, co faktycznie robią obie grupy .
- Ponieważ pracodawcy muszą zatrudniać odpowiednich ludzi na odpowiednich stanowiskach pracy. O ile nie wyjaśnimy (często technicznych) różnic, menedżerowie łatwo wykonują niewłaściwe połączenia.
- Ponieważ istnieje prawdziwa i fundamentalna różnica, jak opisano powyżej.
Czy zawsze należy być pedantycznym?
Spójrzmy prawdzie w oczy, jako programiści jesteśmy z natury pedantyczni . To idzie z terytorium. Nie pomaga to, że wielu z nas zostało spalonych, gdy nie-programiści nie zrozumieli, co robimy.
Niemniej jednak (i szczerze mówiąc, jest to sprzeczne z moimi naturalnymi instynktami), nie sądzę, abyśmy musieli wzywać ludzi, ilekroć się wymykają .
Ważne są tutaj kontekst
i perspektywa .
Powiedziano mi, że z punktu widzenia biologa pomidor to owoc. Ale kiedy kupuję je w supermarkecie, szukam ich wśród warzyw. Dlaczego? Ponieważ techniczne rozróżnienie nie ma znaczenia w tym konkretnym kontekście. Co więcej, rozróżnienie to faktycznie przeszkadzałoby w ich przydatności: gdybym był na tyle głupi, aby na przykład włączyć pomidory do sałatki owocowej.
To samo dotyczy języków komputerowych. Czasami różnica między językami programowania a innymi językami naprawdę ma znaczenie . Dość często jednak wszyscy możemy się doskonale komunikować, gdy połączysz je wszystkie razem. W przypadku pytania powiązanego z PO, tak naprawdę nie miało znaczenia, które języki były prawdziwymi językami programowania, a które nie. Wskazanie tego rozróżnienia nie przyspieszyło w żaden sposób dyskusji. Na szczęście, oprócz dodania odrobiny hałasu (i stania się bodźcem do ciekawej dyskusji!) Pedanteria powiązana z PO miała niewielkie znaczenie. W najgorszym przypadku pedanteria może wywoływać negatywne uczucia i niszczyć relacje ... przynajmniej według mojej żony.
:-)
Jak radzić sobie z pedanterią wśród programistów
Mój kaznodzieja przyjaciel wygłosił kiedyś kazanie zatytułowane:
czy to wzgórze, na którym warto umrzeć?
Odniósł się do generałów, którzy dokonują strategicznej oceny, w których bitwach warto walczyć: czy zyski są warte kosztów?
- Czy naprawdę warto przerwać przebieg dyskusji, aby dokonać takiego rozróżnienia?
- Czy moja pedanteria wynika z poczucia arogancji czy zranień z przeszłości?
- Czy moje komentarze cenią umiejętności innych, a także własne?
Oczywiście są chwile, w których należy wprowadzić rozróżnienia. Moim celem jest, aby mój wkład wniósł wartość dodaną do naszych wspólnych wysiłków.
To przecież zadanie każdego prawdziwego programisty.