Z iloma językami programowania współpracujesz na co dzień i jak skutecznie zarządzasz zadaniami dla określonego języka [zamknięte]

22

Edytować:

Jak zarządzasz poszczególnymi zadaniami podczas pracy w wielu językach

Z jakimi różnymi językami programowania współpracujesz w codziennej obsłudze zadań?

  • Czy zmieniasz umysł podczas pracy nad każdym językiem?
  • Czy traktujesz je priorytetowo i zachowujesz każde zadanie osobno dla każdego języka?
  • Czy kodujesz etapami w oparciu o postępy każdego zadania płynnie przełączając się między językami / IDE / Środowiskiem
  • Czy stosujesz ten sam styl / konwencje kodowania we wszystkich językach (bez składni)?

Związane z:

Czy programista może jednocześnie pracować nad wieloma projektami

Aditya P.
źródło
1
Dokonanie zmiany mentalnej jest dość łatwe. Głównym mentalnym błędem, który zwykle mam, jest próba porównania Strun z .equalsjavascript. Przynajmniej zawsze mylę się w ten sposób, zamiast używać ==w Javie.
WuHoUnited
Piszę 3/4 języków każdego dnia dla tego samego projektu. Jak mam zarządzać? Znać języki. Trzymaj odniesienia pod ręką. Postępuj zgodnie z konwencjami językowymi.
Rig
Płacenie kosztów przełączania między JavaScriptem a niektórymi językami programowania po stronie serwera nie jest obecnie warte, gdy Node.js ma największy ekosystem bibliotek na świecie , i kiedy możesz pisać kod synchroniczny za pomocą asynchronizacji / oczekiwania . Paradygmat „Jeden język wszędzie” jest także używany przez Meteor (ponad 35 000 gwiazd GitHub).
Dan Dascalescu,

Odpowiedzi:

25

Dzisiaj napisałem Java, Python, C ++ i SQL (jeśli się liczy). Byłem w pracy krócej niż 2 godziny.

Jeśli robisz to regularnie, zmiana mentalna staje się znikoma. Nie ma to nic wspólnego z wielozadaniowością. To tak, jakby przez chwilę chodzić, potem prowadzić samochód, potem jeździć na rowerze, a potem pływać. Nie ma problemu, ponieważ są to rzeczy sekwencyjne.

Niezależnie od tego, chodzi o wykonanie jednego zadania przed przejściem do następnego. Zazwyczaj definiuję zadania w kategoriach konkretnej funkcjonalności, poprawki lub takiej. Często to zadanie jest realizowane tylko w jednym języku, ale może wymagać kilku z nich. Na przykład, pracując z JNI , zwykle równolegle wprowadzasz zmiany zarówno po stronie Java, jak i natywnej.

Niektóre odpowiedzi:

Czy kodujesz etapami w oparciu o postępy w każdym zadaniu płynnie przełączając się między językami / IDE / Środowiskiem

Ważne jest, aby móc płynnie przełączać się między IDE, edytorami, środowiskami. Zazwyczaj cały czas je otwieram.

Czy stosujesz ten sam styl / konwencje kodowania we wszystkich językach (brak składni)?

Jeśli jest to interfejs, nad którym rozmawiają dwa języki, to tak - nazwy zmiennych i takie muszą być podobne. W przeciwnym razie staram się zastosować typowy styl kodowania tego języka.

Joonas Pulakka
źródło
8
brzmi jak niesamowity wyścig
setzamora,
Zwykle staram się wykonać jedno zadanie przed przejściem do następnego, ale jedno zadanie może wymagać użycia więcej niż jednego języka. Konieczne jest używanie IDE polyglot, takiego jak NetBeans, i / lub utrzymywanie wszystkich potrzebnych edytorów i środowisk przez cały czas otwartych. Nie musisz więc przejmować się językiem (który jest tylko „szczegółem implementacji”) i możesz skoncentrować się na zadaniu (które jest częścią tego, co naprawdę powinieneś osiągnąć - działającym programem).
Joonas Pulakka
Byłoby miło, gdybyś mógł dodać powyższe do swojej odpowiedzi i dodać trochę o tym, jak radzisz sobie ze stylami programowania kodowania / konwencji.
Aditya P
@AdityaGameProgrammer: Dodano kilka punktów.
Joonas Pulakka
18

Tworzy się tutaj wzór:

  • Fronton: cokolwiek działa w przeglądarce (javascript, html i css)
  • Logika biznesowa: dowolny z wielu języków ogólnego przeznaczenia
  • Backend: SQL
  • Build Script: Niektóre języki skryptowe

Więc dla mnie jest to: javascript, HTML i CSS, C #, Transact-SQL i Windows Powershell.


Czy stosujesz ten sam styl / konwencje kodowania we wszystkich językach (bez składni)?

Nie, programuję zgodnie z konwencją języka. Prosty przykład:

   // C#
   int MyFunction() 
   {
       return 0;
   }

   // Javascript
   function myFunction() {
      return 0;
   }

Stosowanie wizualnie różnych konwencji kodowania pomaga mi dokonać mentalnej zmiany języka. I odwrotnie, jeśli mój kod wyglądałby tak samo w każdym języku, popełniam błędy składniowe, zapominając, w którym języku koduję.

Andrew Shepherd
źródło
1
+1 Dobra odpowiedź. Świetnie, że możesz zachować konwencje i styl kodowania specyficzne dla języka.
Aditya P,
Cóż ... w niektórych przypadkach JavaScript zmusza cię do pracy w ten sposób z powodu nieprzyjemnego średniego niejawnego. Ale w przeciwnym razie nie
widziałbym
Poza stylem kodowania, innym sposobem na ułatwienie zmiany mentalnej między językami jest ustawienie różnych schematów kolorów dla każdego języka w edytorach / IDE.
Spoike,
5

Jak wskazuje SK-logika, zmiana mentalna nie powinna stanowić problemu, jeśli używasz dobrze wybranych języków specyficznych dla domeny. Ale często nie możesz wybrać języka, więc czasami zmiana zajmuje trochę czasu. Z mojego doświadczenia wynika, że ​​trudność polega bardziej na przełączaniu składni niż na przełączaniu stylu programowania. Jedyną irytującą zmianą, której zawsze doświadczam, jest zmiana stylu komentarzy : jeśli po prostu otworzę plik, aby szybko zmienić wiersz kodu, często wygląda to tak:

#  what
// the
;  f***
%  is
-- the one-line comment character or sequence?
Jakob
źródło
4

W mojej ostatniej pracy: Java, C ++, C #, JavaScript i VBScript.

Ale na szczęście wszystkie powyższe były w bardzo różnych kontekstach (i w kilku produktach) - więc kiedy znałeś wystarczająco dobrze każdą bazę kodu, przejście mentalne do różnych kontekstów było w rzeczywistości dość łatwe i logiczne.

Prawdę mówiąc, bardziej przeszkadzały mi przerwy w obsłudze klienta. Wewnętrzne przejście na zadanie w innym języku nigdy nie było samo w sobie problemem.

Stoły Bobby'ego
źródło
2

Pracuję w 2 językach: c # i python.

Używam ich obu w tym samym projekcie, ale oczywiście do różnych zadań.

Kiedy pracuję nad zadaniem, pracuję nad nim, dopóki nie będzie w stanie kompletnym lub dopóki nie będę mógł się na nim skoncentrować. Oznacza to, że jeśli muszę przełączać się między językami, dysonans poznawczy jest niewielki lub nie ma go wcale, ponieważ już wyszedłem z myślenia w obu językach, kiedy skończyłem ostatnie zadanie.

Wprawdzie zrobię sobie krótką przerwę, kiedy wyjdę z zadania, co prawdopodobnie bardzo pomaga.

Matt Ellen
źródło
2

Jak najmniej. Zazwyczaj obejmuje to 1. Python oraz 2. Szablony HTML, 3. HTML + CSS, a czasem 4. JavaScript. Przejście z Pythona na JS zdecydowanie wymaga zmiany mentalnej, również dlatego, że muszę korzystać z różnych narzędzi.

Dodam HTML + CSS jako niezależny od szablonów HTML, nawet jeśli nie są to języki jako takie (lub mogą, zależnie od twojej religii), ponieważ wymaga to również zmiany mentalnej i użycia innych narzędzi, choć nie jest tak złe, jak przejście na JavaScript. Fiddling z HTML + CSS z perspektywy projektowania, aby strona wyglądała jak wymagana makieta, jest innym sposobem myślenia niż tworzenie szablonów HTML. Ale jest bardziej ortogonalny w stosunku do Pythona niż JavaScript, co oznacza, że ​​muszę zmienić sposób myślenia na programowanie na inny. :)

Lennart Regebro
źródło
2

Codziennie używam:

  1. HTML / CSS
  2. JavaScript / JQuery
  3. VBScript / JScript
  4. PHP
  5. SQL
  6. C # / Asp.Net

Od czasu do czasu używam również Python, Java i XML (czy to się liczy?). Moja praca polega na edytowaniu różnych stron internetowych, które mogą być zbudowane w dowolnym języku internetowym (nawet kiedyś miał Perla) i używać bardzo różnych paradygmatów / szablonów (proceduralne, MVC, OOP itp.).

Aby odpowiedzieć na pytanie - używam głównie Notepad ++ jako mojego IDE dla pierwszych 5 wymienionych na liście, a następnie Visual Studio for Asp.Net.

Może to być ból szybko przełączający się między poszczególnymi językami - pamiętając, czy potrzebujesz średników na końcu linii, czy pętle mają nawiasy klamrowe, czy nie. Przejście z VBScript na JScript jest absolutnie najgorsze z tego powodu - oba pliki kończą się na .asp i na pierwszy rzut oka wyglądają dość podobnie, więc zastanawianie się, dlaczego dostaję błędy, zajmuje trochę czasu.

whostolemyhat
źródło
Hej, ty też musisz tu pracować! (j / k) Przepisujemy bazę kodu ASP i .NET w PHP, udostępniając nam ten sam wybór języków.
greyfade,
2

W tej chwili piszę w Ruby, PHP, Javie, C i JavaScript i będę pisać przez co najmniej 1 godzinę każdego z nich każdego dnia. Głównym problemem jest tak naprawdę znalezienie czasu, ponieważ wszystkie dotyczą niepowiązanych projektów.

Przesunięcie mentalne

Mój styl pracy jest taki, że lubię pracować przez dłuższy czas. Niestety, oznacza to, że jeśli mam tylko jedną rzecz, gdy napotkam blok myślowy z fragmentem kodu, zajmie mi to dużo czasu, aby go pokonać. Nie uważam też, że przerwa pomaga. Dysponując innymi projektami, a zwłaszcza innymi językami, aby przejść do trybu utknięcia, gdy wrócę do oryginalnego języka, natychmiast mam rozwiązanie.

Dlatego tak, nastąpiła zmiana mentalna i myślę, że dzięki temu jestem znacznie bardziej produktywny.

Priorytetyzacja zadań

Używam menedżera zadań (gTasks dla Androida) i mam osobną listę rzeczy do zrobienia dla każdego projektu. Jeśli projekt wymaga wielu języków, nie rozdzielam ich. Dzieje się tak zwykle dlatego, że będą w jakiś sposób silnie powiązane. Na przykład JavaScript i Ruby do robienia rzeczy AJAX. Jeśli języki są technicznie dla tego samego projektu, ale projekt jest tak duży, że zasadniczo nie są ze sobą powiązane, prawdopodobnie liczę je jako osobne projekty.

Ogólnie rzecz biorąc, moim priorytetem jest „dowolna lista, która ma najwięcej zadań”, ale zawsze się przełączam, jeśli utknę na problemie.

Konwencje kodowania

To trochę mieszanka:

  • Jeśli projekt zostanie opracowany wspólnie z innymi, to oczywiście dostosuję się do konwencji przyjętych dla tego projektu.
  • Jeśli projekt jest osobisty, podoba mi się, że mój kod wygląda spójnie z dominującym stylem w bibliotece społeczności / standardowej dla danego języka. Trudno mi odczytać kod Java, jeśli na przykład wszystkie funkcje użytkownika znajdują się w obudowie snake_case. Podobnie metody camelCase w Ruby wyglądają dziwnie i nie na miejscu.
  • W przypadku konwencji, które nie są oczywiste z prostego używania języka, takich jak wcięcia, będę dążył do przyjęcia własnych standardów i stosowania ich we wszystkich używanych przeze mnie językach. W przypadku wcięcia zawsze używam 2 spacji. Dla stylu nawiasów klamrowych zawsze używam tego, co Wikipedia decyduje się nazywać Stylem Czytelności Kompaktowej Kontroli .

Poza tym: Największym wyzwaniem jest dla mnie zmiana języków stylów. Bardzo trudno jest ścigać się razem, kodując SASS razem z Ruby, a następnie zmuszając się do powrotu do CSS dla całej reszty. W mniejszym stopniu mam ten sam problem z HAML / HTML i JSON / XML.

Rupert Madden-Abbott
źródło
2

Piszę aplikacje po stronie ISP, jest też kultura „rób to, co czujesz się komfortowo”, często napisana przez wielu inżynierów sieciowych, którzy zajmują się programowaniem. Mam do czynienia z cotygodniowymi programami, które są dość dobrze napisane, co jest naprawdę przerażające. Co często spotykam i pracuję nad ...

  • Perl , często szybkie, jednorazowe skrypty lub często używane przez osoby, które znają (lub lubią) Perla. Więcej starszych materiałów znajduje się w Perlu, który znajduję. Niektóre z najgorszych rzeczy są napisane w Perlu, nie dlatego, że język jest zły, ale dlatego, że łatwo nadużywają go początkujący programiści. Nadal używam tego do niektórych rodzajów programów jednorazowych. Rzadko używam go do czegokolwiek większego.
  • PHP , dużo tego wokół, często język startowy dla dabblerów. Niektóre bardzo dobrze napisane programy, niektóre schlock. W przypadku niektórych rodzajów aplikacji internetowych wybiorę PHP, ponieważ mogę szybciej go uruchomić.
  • Skrypty powłoki , używaj go głównie do uruchamiania innych programów lub zadań, takich jak czytanie dzienników.
  • Oczekiwać , wciąż się z tym spotykaj (i gorliwi, którzy twierdzą, że to nirwana do wykonywania poleceń na urządzeniach sieciowych). Pracuję nad tym, kiedy muszę, ale gdzieś na świecie zabija się małego kociaka, gdy napotykam jeden z tych tysięcy programów o długiej linii bez jednej funkcji w zasięgu wzroku, tylko jedną długą farmę z makaronem.
  • C , rzadko używany z powodu problemów z przenośnością, ale użyję go do wykonywania określonych zadań.
  • Java , używam tego często ze względu na szerokie wsparcie biblioteki i łatwe wdrożenie. Mamy bardzo niejednorodną sieć i personel IT, który ma inny program niż mój. Dzięki Javie mogę dołączać biblioteki i nie muszę się martwić, że IT musi „uaktualnić” coś w systemie, aby zainstalować program. Najczęściej jest to mój wybrany język programowania.

W firmie są też inne języki (.net, VB, Phyton, Rails itp.), Ale nie musiałem nad nimi pracować ... jeszcze.

Edytuj, do edycji ...

Podczas pracy między językami musisz się mentalnie zmieniać. Najczęściej tracę orientację w składni. Przygotowuję kolekcję podręczników. Przekonam się, że powrót do sposobu myślenia w innym języku zajmuje około pół godziny. Im bardziej tępa jest składnia języka, tym dłuższe jest przesunięcie. Uważam, że przejście z robienia Javy na robienie Perla prawdopodobnie trwa najdłużej, jeśli nie dotykam Perla przez jakiś czas. Im więcej to zrobisz, tym łatwiej będzie.

Bill
źródło
1

Często używam sześciu lub więcej języków w ramach jednego projektu. Większość z nich jest zazwyczaj specyficzna tylko dla tego projektu.

Zmiana mentalna jest wymagana tylko wtedy, gdy używasz języka, który nie jest odpowiedni do zadania. W przeciwnym razie naturalne jest użycie najlepszego dopasowania. Różne zestawy języków są używane na różnych etapach projektu.

Logika SK
źródło
Czy jesteś kierownikiem projektu lub kodujesz w nich?
Aditya P
@AdityaGameProgrammer, koduję w nich.
SK-logika
Masz ochotę wyjaśnić opinię negatywną?
SK-logic
1

Często używam C (embedded), C ++ (desktop), Python, Matlab i VHDL (rodzaj sprzętowego języka programowania), często tego samego dnia. W moim środowisku taka zręczność językowa jest moim zdaniem niezbędna.

Często nie mogę efektywnie uzyskać wszystkiego, czego potrzebuję przy danym projekcie w jednym języku. Na przykład zarówno osadzone C, jak i VHDL są dość niskiego poziomu, więc często używam Pythona do analizowania ich wyników (lub nawet generowania kodu).

Szybkie przełączanie się między nimi nie jest problemem po chwili, jest jak zamiana młotka na śrubokręt - odpowiednie narzędzie do pracy.

Martin Thompson
źródło
1

To zależy od tego, jak zdefiniowane jest działanie ... Używam C # do tworzenia aplikacji Microsoft Surface każdego dnia. Java Używam również każdego dnia w aplikacjach na Androida. Ale staram się kształcić i zacząłem używać R, Ruby i Objective-C. Czasami potrzebuję także trochę SQL, a jeśli do pytania włączasz języki skryptowe i inne, to także JavaScipt, SPARQL i BeanShell.

Czy stosujesz ten sam styl / konwencje kodowania we wszystkich językach (brak składni)?

Staram się przestrzegać konwencji kodowania każdego języka, ale zwłaszcza między Javą a C # Mam pewne trudności z powodu nawiasów klamrowych i nazewnictwa metod wielkimi literami w C #:

public void test() {
   ...
}

vs.

public void Test()
{
   ...
}
RoflcoptrException
źródło
Każdy styl nawiasów klamrowych jest akceptowany w języku C #. Nie marnuj zbyt wiele czasu na opodatkowanie swojego mózgu. :-)
Cody Gray,
0

Tworzę aplikacje internetowe. Więc obecnie jest to:

  • XHTML
  • JavaScript
  • C # jako część
  • ASP.Net Framework (ten rodzaj jest językiem)
  • T-SQL do komunikacji z bazą danych
  • Angielski do komunikacji z ludźmi.

Redakcja: Sublime Text (z wyboru), Visual Studio 2010 (nie ma innego możliwego wyboru, jeśli chodzi o ASP.Net)

5arx
źródło
0

W swojej pracy używam Java, C, Python, Django i małych kawałków PHP. Pracowałem również nad naprawdę małym projektem w Microsoft C ++.

Nie używam ich wszystkich codziennie, ale czasami używam ich wszystkich bez problemu. W typowy dzień używam tylko jednego lub dwóch. Programowanie, które wykonuję w domu, zwykle wymaga pracy z technologiami innymi niż te, z których korzystam w pracy, takimi jak Qt lub Ruby on Rails.

jonescb
źródło