Jaką rolę odgrywa „historia kultury językowej” na platformie?

15

Ostatnio natknąłem się na toartykuł sprzed kilku lat. Argumentuje, że znaczące różnice w kulturze otaczającej VB i C #, a nie rzeczywiste różnice w języku, przyczyniają się do tego, że kodery C # są generalnie bardziej utalentowane niż kodery VB. Oczywiście spowodowało to wiele wojen o płomienie, a pytanie, czy C # ery czy VBers są głupsze, nigdy nie zostanie udzielone. To powiedziawszy, autorzy twierdzą, że kultura otaczająca daną platformę przyczynia się do jakości zespołu, może nadal być wiarygodna. Na przykład, mimo że Java jest obecnie bardziej wydajna w tworzeniu aplikacji, zespół programistów Google Go wydaje się mieć średnio wyższego kalibru niż zespół programistów Java, ponieważ aby nauczyć się Go, programista prawdopodobnie ma być bardzo wcześnie adoptującym i świstem granicznym. Krótko mówiąc,w jaki sposób kultura otaczająca jedną platformę, jeśli w ogóle, wpływa na jakość przeciętnego programisty na tej platformie?

Morgan Herlocker
źródło
Czy to dzień C # vs. VB.NET?
@ DeveloperArt- To nie jest moja intencja. W rzeczywistości pytanie, które zadałem, było interesujące, ponieważ artykuł wydaje się dzisiaj bardzo przestarzały, ale koncepcja ta może być możliwa do uratowania. Artykuł wydaje się, że wszyscy twórcy C # są geniuszami. Jestem jednym z nich, więc wiem z pierwszej ręki, że wszyscy możemy być tak samo niechlujni, gdy nastanie nastrój.
Morgan Herlocker
1
@Developer Art: Przeczytałem ten artykuł wczoraj i jestem prawie pewien, że był to link zamieszczony w odpowiedzi tutaj, który mnie do niego zabrał. Być może właśnie w ten sposób uderzył w to Prof Plum - jedno pytanie C # vs. VB.NET prowadzi do drugiego. :-)
Carson63000

Odpowiedzi:

8

Naprawdę ciekawe pytanie. Moim osobistym zdaniem jest to pytanie, które jest zbyt często zadawane i naprawdę nie ma w ogóle wody.

Dzieci ze skryptu (i firmy, które je zatrudniają) pozwalają, aby wybrany język decydował o ich statusie wśród grona „programistów”. Dobrzy inżynierowie nie mogli mniej przejmować się wybranym językiem, ale koncentrowali się na rozwiązywaniu zadanych problemów w najbardziej optymalny sposób (oczywiście optymalne to ogólne stwierdzenie, które można zastosować do wielu różnych czynników). Niezależnie od tego, czy jest to C #, VB, C ++, Python, czy odręczny zestaw, nie ma to znaczenia, ponieważ korzystanie z tej technologii w celu rozwiązania problemu ma wyraźną korzyść.

Krótko mówiąc, myślę, że bardziej wartościowe jest przyjrzenie się złożoności problemów, które rozwiązuje się regularnie, w przeciwieństwie do tego, jakiego języka używają do ich rozwiązania.

Tylko moje dwa centy na ten temat :)

Demian Brecht
źródło
2
+1: Ponadto pomysł, że istnieje kultura VB, która w jakiś sposób przekracza granice firmy, jest absurdalny. Jak zachowa się ta kultura? Tajne spotkania programistów VB poza pracą? „Związek” lub „gildia” programistów VB w celu wymuszenia tej „kultury”? Spędzając 30 lat, odbijając się w setkach sklepów IT, mogę powiedzieć, że jedyna kultura, jaką kiedykolwiek widziałem, jest czysto zlokalizowana. Wybór języka nie tworzy tej „innej” kultury, o której mowa w pytaniu.
S.Lott
1
Ciekawy. Jeśli dałeś +1, zastanawiaj się, kto obniżył głos i dlaczego: P
Demian Brecht
1
@ S.Lott: Stoję wtedy poprawiony (muszę pokochać produkt uboczny założeń;)). Częściej niż nie otrzymywałem opinie na takie tematy, nie otrzymując żadnej informacji zwrotnej, która czasem może być cenna i dostarczała mi informacji, o których wcześniej nie wiedziałem :)
Demian Brecht
1
@prof: Czy automatyzacja naprawdę sprawia, że ​​ktoś jest gorszy, czy może uważasz, że jest lepszy, ponieważ rozumie, jakie skróty mogą zastosować, aby osiągnąć ten sam efekt, ale bardziej wydajnie? :) Oczywiście jest to nadmierne uogólnienie i prawie niemożliwe jest dokładne udzielenie odpowiedzi. Jestem trochę przekonany, że koderzy Go są bardziej namiętni. Nadal możesz znaleźć ludzi, którzy tak samo pasjonują się Fortranem. To byłoby jednak prowadzić mnie do przypuszczenia, że programista Go jest bardziej pasjonatem nowych technologii i praktyk, co jest dobrą rzeczą imho :)
Demian Brecht
1
@Prof Plum: „wybór platformy / języka nie ma nic wspólnego ze średnią jakością programisty”. Poprawny. Jak może być inaczej? Najważniejsza jest kultura organizacji . Koderzy Google Go - sami - są tylko ludźmi. Organizacja ogranicza ludzi do VB lub zachęca do korzystania Go. Wszyscy są ludźmi.
S.Lott
4

Jakość kodu opracowana w każdym z tych języków opiera się na tych fundamentalnych filozofiach, a mniej na poszczególnych programistach

Każdy język ma wokół siebie kulturę, ponieważ każdy język został opracowany z jakiegoś powodu przez kogoś z planem i filozofią leżącą u podstaw tego, dlaczego jego język będzie lepszy w czymś niż to, co istniało w tym czasie.

Podobnie jak religie, języki programowania mają tendencję do przyciągania ludzi, którzy już mają takie same predyspozycje do głównych zasad i filozofii twórcy języka.

Przykład postrzeganej jakości rozwiązań

W jednym obozie Microsoft masz:

Filozofią C # jest to, że jest bardziej obiektowo zorientowany, promuje bardziej nowoczesne idiomy i wymaga więcej wiedzy, aby zrobić to poprawnie, a zatem powinien zapewnić więcej rozwiązań wyższej jakości. To przyciąga ludzi przez VB.

W drugim obozie Microsoft:

Filozofią VB jest to, że mogę szybko i przy niewielkiej wiedzy lub wysiłku zbudować coś, co pozwoli komuś kliknąć przycisk i zrobić coś pożytecznego i wartościowego dla biznesu, jak to nie jest tak ważne. To przyciąga ludzi ponad C #.

Oto język i policzek nabiera języków i ich filozofii:

Ludzie Perla mają tendencję do dbania o dokładnie odwrotną rzecz, o którą dbają ludzie Python.

Ludzie Java dbają o zarabianie pieniędzy.

Języki JVM (Groovy, Scala) dbają o JMV, a nie o język Java.

Wszystkie języki specyficzne dla Microsoftu (VB, C #, F #, zarządzane C ++) mają tendencję do zarabiania pieniędzy w systemie Windows.

Ludzie Erlang dbają o rzeczy, o które inni nie musieli się troszczyć, i nie doceniają tego, czego nie wiedzą.

Ludzie Lisp nie dbają o to, co inni myślą, że im zależy.

To, o co dbają te grupy, kształtuje język, jego rozwój i społeczność.

Filozofie zmieniają się wraz z doświadczeniem i potrzebą

Przyjąłem ASM i BASIC, ponieważ w 1983 roku było to wszystko, co miałeś. Chciałem pisać gry i wersje demo, to były narzędzia do tego. Głównie ASM dla wersji demonstracyjnych.

Zaadaptowałem C, a potem C ++, kiedy był to jedyny sposób na pisanie takich rzeczy, jak renderowanie 3D i prawie wszystko inne, co miało kluczowe znaczenie dla przestrzeni i czasu. To nie był ASM, więc się tego nauczyłem.

Przyjąłem VB do zarabiania pieniędzy, było to najbliższe środowisko programistyczne Scala, Director i CanDo, do którego byłem przyzwyczajony na Amiga. Zgodziłem się z filozofią szybkiego rozwoju

Wcześniej zaadaptowałem Javę, aby zarabiać lepsze pieniądze. Zarabiałem na VB do 1999 roku i zostawiłem go, gdy Java 1.2 stała się stabilna i dojrzała, a sieć w pełni się w tym momencie rozpoczęła. Miałem 4 lata doświadczenia w Javie, kiedy ludzie naprawdę zaczęli brać to na poważnie. Zgodziłem się z pisaniem raz, działam gdziekolwiek, ponieważ im więcej miejsc działa mój kod, tym łatwiej będzie go sprzedać. filozofia.

Zaadaptowałem Pythona późno na osi czasu, 2005, ponieważ podrapał mnie świąd, którego nie zrobiła Java. Musiałem szybko napisać kod, aby korzystać z niektórych bibliotek, które były dostępne tylko w C, a także potrzebowałem szybkiego prototypowania usług WWW Python był szybszy i mniej kodu, aby zrobić to samo w Javie. Coś poszło do produkcji, ponieważ Java pozostała Pythonem, wiele rzeczy nigdy nie trafiło w dzicz. Zgodziłem się z zawartymi w nim bateriami, filozofiami pojedynczego idiomu, a także innymi.

Zaadoptowałem Luę, kiedy musiałem zainstalować lekki skryptowy silnik w moich programach C ++ i Java. Było to znacznie wcześniej niż obsługa JSR233 w Javie. Zgodziłem się z osadzeniem w pełni funkcjonalnego języka skryptowego, który jest łatwy w użyciu, powinna być prostą filozofią Lua.

Przyjąłem Erlang w 2006 roku, kiedy zacząłem potrzebować ogromnej skalowalności i względnie bezbolesnego wykonywania wielordzeniowego w przypadku bardzo równoległych problemów i wykonywania wielu platform. ** Zgadzam się z jej brakiem wspólnego stanu, przekazywania wiadomości, niezmiennej filozofii stanu. * 8

Przyjąłem Objective-C, kiedy zacząłem potrzebować budować aplikacje OSX i iOS. Zgadzam się z tym, że dodał on prawo do Object Orientation do C, aby uczynić go lepszą filozofią. Również, aby zarabiać lepsze pieniądze.

JavaScript oficjalnie przyjąłem w 2009 roku, ponieważ zgodziłem się z filozofią CouchDB i używa JavaScript. Nadal nie lubię JavaScript, gdy mam do czynienia z DOM.

Nadal nie oficjalnie adoptowałem Lisp, ale w końcu zamierzam! Zgadzam się z tymi, którzy nie znają seplenienia skazani są na ponowne wynalezienie filozofii.


źródło
0

Rzeczywiście interesujące pytanie. Jest to jeden z tych, w których rozumiesz odpowiedź na poziomie podświadomości, ale staraj się ją wyrazić słowami.

Najlepiej jest to postrzegane jako pętla przyczynowości.

Kultura jest odpowiedzialna za „etniczną” kompozycję twórców przyciągniętych do platformy. Ten skład z kolei określa cechy „przeciętnego” programisty. Jakość programistów korzystających teraz z platformy wpływa na kulturę lub sposób jej postrzegania, co w konsekwencji wpływa na to, że programiści wchodzą na platformę lub ją opuszczają. W rezultacie zmienia się wartość „jakości”.

Próbowałem wymyślić konkretne zasady, ale trudno mi je uogólnić. Musimy osobno zbadać każdą platformę. Poczyniłem kilka obserwacji:

  • Szybkość, z jaką konkretna platforma jest opracowywana, rozszerzana, ulepszana, ma bezpośredni związek z jakością programistów. Ciągły przepływ nowych błyszczących funkcji i narzędzi przyciąga entuzjastycznych programistów (którzy średnio są bardziej zdolni do wysokiej jakości pracy) i odstrasza konserwatywne umysły, które są zirytowane ciągłym wysiłkiem uczenia się.

  • Mniej ograniczeń, jakie oferuje platforma, nawet kosztem większego ryzyka wystrzelenia się w stopę, przyciąga entuzjastyczne eksperymentalne umysły

  • Im bardziej złożone są rzeczy, które należy zrozumieć i opanować, aby móc korzystać z platformy, przyciąga rozwiązane osoby i odstrasza leniwych programistów


źródło
W jaki sposób ta kultura przekracza granice firmy?
S.Lott
1
@Lott Technology prawie zawsze przekracza granice kulturowe. Istnieją ogromne różnice kulturowe między różnymi użytkownikami systemu operacyjnego. Wielu grafików i inżynierów dźwięku, które wiem, pomyślałoby, że przełomem było pójście do firmy, która używała czegoś innego niż Mac. Mac wspiera kulturę wokół tych dwóch grup, w szczególności, która jest całkowicie namacalna. Języki programowania są narzędziami takimi jak Photoshop i GIMP, więc nic dziwnego, że mają wokół siebie kulturę. Gdyby tego nie zrobili, nie mielibyśmy wojen z ogniem.
Morgan Herlocker
@Prof Plum: Twoje przykłady nie są mapowane na „kulturę” opartą na narzędziach. Twoje przykłady są dokładnie odwrotne. Rzeczywista kultura (inżynierowie audio) wybierają wspólne narzędzia. Nie wszyscy użytkownicy Logic Pro muszą zostać inżynierami dźwięku, ponieważ Logic Pro tworzy kulturę. Myślę, że przykłady w twoim komentarzu (ta sama praca -> podobne narzędzia) są doskonałym dowodem na brak „historii kultury językowej”. Istnieje raczej wspólna kultura przypadków użycia lub wspólna kultura pracy użytkownika końcowego.
S.Lott