Mit wie vielen Programmiersprachen arbeiten Sie täglich und wie effektiv verwalten Sie sprachspezifische Aufgaben?

22

Bearbeiten:

Wie verwalten Sie einzelne Aufgaben, wenn Sie an mehreren Sprachen arbeiten?

Mit wie vielen verschiedenen Programmiersprachen arbeiten Sie bei der täglichen Aufgabenbearbeitung?

  • Machen Sie eine mentale Veränderung, wenn Sie an jeder Sprache arbeiten?
  • Priorisieren Sie sie und behalten Sie jede Aufgabe pro Sprache separat.
  • Codieren Sie in Schritten, basierend auf dem Fortschritt jeder Aufgabe, die nahtlos zwischen Sprachen / IDE / Umgebung wechselt?
  • Wenden Sie auf alle Sprachen den gleichen Codierungsstil / die gleichen Codierungskonventionen an (nicht die Syntax)?

Verbunden:

Ist es normal, dass Programmierer gleichzeitig an mehreren Projekten arbeiten?

Aditya P
quelle
1
Die mentale Verschiebung ist ziemlich einfach. Die größte geistige Störung, die ich normalerweise habe, ist, wenn ich versuche, Strings mit .equalsin Javascript zu vergleichen . Zumindest irre ich mich immer so, anstatt es ==in Java zu benutzen .
WuHoUnited
Ich schreibe jeden Tag 3/4 Sprachen für das gleiche Projekt. Wie schaffe ich das? Kennen Sie die Sprachen. Halten Sie Referenzen griffbereit. Befolgen Sie die Sprachkonventionen.
Rig
Heutzutage lohnt es sich nicht, die Kosten für den Wechsel zwischen JavaScript und einer serverseitigen Programmiersprache zu bezahlen, wenn Node.js über das weltweit größte Bibliotheks-Ökosystem verfügt und Sie mit async / await synchronen Code schreiben können . Das Paradigma "Eine Sprache überall" wird auch von Meteor (über 35.000 GitHub-Sterne) verwendet.
Dan Dascalescu

Antworten:

25

Heute habe ich Java, Python, C ++ und SQL geschrieben (wenn es darauf ankommt). Und ich bin seit weniger als 2 Stunden auf der Arbeit.

Wenn Sie dies regelmäßig tun, wird die mentale Verschiebung vernachlässigbar. Es hat nichts mit Multitasking zu tun. Es ist so, als würde man eine Weile laufen, dann ein Auto fahren, dann ein Fahrrad fahren und dann schwimmen. Kein Problem, denn es sind sequentielle Dinge.

Unabhängig davon ist es wichtig, eine Aufgabe zu erledigen, bevor Sie zur nächsten übergehen. Ich neige dazu, Aufgaben in Bezug auf eine konkrete Funktionalität, einen Fix oder dergleichen zu definieren. Oft wird diese Aufgabe mit nur einer Sprache erledigt, aber es können mehrere von ihnen erforderlich sein. Wenn Sie beispielsweise mit JNI arbeiten , nehmen Sie in der Regel Änderungen parallel sowohl an der Java-Seite als auch an der nativen Seite vor.

Einige Antworten:

Codieren Sie in Schritten, basierend auf dem Fortschritt bei jeder Aufgabe, die nahtlos zwischen Sprachen / IDE / Umgebung wechselt?

Es ist wichtig, nahtlos zwischen IDEs, Editoren und Umgebungen wechseln zu können. Normalerweise halte ich sie alle die ganze Zeit offen.

Wenden Sie auf alle Sprachen den gleichen Codierungsstil / die gleichen Codierungskonventionen an (keine Syntax)?

Wenn es sich um eine Schnittstelle handelt, über die zwei Sprachen sprechen, müssen ja - Variablennamen und dergleichen ähnlich sein. Ansonsten versuche ich, den typischen Codierungsstil dieser Sprache anzuwenden.

Joonas Pulakka
quelle
8
klingt nach erstaunlichem Rennen
setzamora
Normalerweise versuche ich, eine Aufgabe zu erledigen, bevor ich zur nächsten übergehe, aber für eine einzelne Aufgabe muss möglicherweise mehr als eine Sprache verwendet werden. Die Verwendung einer mehrsprachigen IDE wie NetBeans und / oder das ständige Öffnen aller erforderlichen Editoren und Umgebungen ist ein Muss. Dann brauchen Sie sich nicht viel um die Sprache zu kümmern (die nur ein "Implementierungsdetail" ist), und Sie können sich auf die Aufgabe konzentrieren (was Teil dessen ist, was Sie wirklich erreichen sollen - ein Arbeitsprogramm).
Joonas Pulakka
Es wäre schön, wenn Sie Ihrer Antwort das Obige hinzufügen und ein wenig darüber, wie Sie mit Programmierstilen für Codierung / Konventionen umgehen, hinzufügen könnten.
Aditya P
@AdityaGameProgrammer: Einige Punkte hinzugefügt.
Joonas Pulakka
18

Hier bildet sich ein Muster:

  • Frontend: was auch immer auf einem Browser läuft (Javascript, HTML und CSS)
  • Geschäftslogik: eine der zahlreichen universellen Sprachen
  • Backend: SQL
  • Build Script: Eine Skriptsprache

Also für mich ist es: Javascript, HTML und CSS, C #, Transact-SQL und Windows Powershell.


Wenden Sie denselben Codierungsstil / dieselben Konventionen für alle Sprachen an (keine Syntax)?

Nein, ich lege Wert darauf, nach der Konvention der Sprache zu programmieren. Ein einfaches Beispiel:

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

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

Wenn ich visuell unterschiedliche Kodierungskonventionen verwende, kann ich den mentalen Wechsel zwischen den Sprachen einfacher gestalten. Umgekehrt, wenn mein Code in jeder Sprache gleich aussieht, werde ich syntaktische Fehler machen, wenn ich vergesse, in welcher Sprache ich programmiere.

Andrew Shepherd
quelle
1
+1 Gute Antwort. Es ist großartig, dass Sie die sprachspezifischen Kodierungskonventionen und -stile beibehalten können.
Aditya P
Nun, in einigen Fällen zwingt Javascript Sie dazu, auf diese Weise zu arbeiten, da ein böses implizites Semikolon verwendet wird. Aber sonst würde ich keinen Grund sehen, das zu tun ...
Billy ONeal
Neben dem Codierungsstil können Sie auch andere Farbschemata für jede Sprache in Ihren Editoren / IDEs festlegen, um den mentalen Wechsel zwischen den Sprachen zu erleichtern.
Spoike
5

Wie von SK-logic angegeben, sollte die mentale Verschiebung kein Problem sein, wenn Sie gut ausgewählte domänenspezifische Sprachen verwenden. Aber oft kann man die Sprache nicht auswählen, so dass es manchmal einen Moment dauert, um zu wechseln. Nach meiner Erfahrung liegt die Schwierigkeit eher in der Umschaltsyntax als im Umschalten des Programmierstils. Die einzige ärgerliche Verschiebung, die ich immer erlebe, ist die Verschiebung des Kommentarstils : Wenn ich nur eine Datei öffne, um schnell eine Codezeile zu ändern, passiert Folgendes häufig:

#  what
// the
;  f***
%  is
-- the one-line comment character or sequence?
Jakob
quelle
4

In meinem letzten Job: Java, C ++, C #, JavaScript und VBScript.

Aber zum Glück befanden sich alle oben genannten Themen in sehr unterschiedlichen Kontexten (und in einigen Produkten). Wenn Sie also jede Codebasis gut genug kannten, war der mentale Wechsel zu verschiedenen Kontexten eigentlich recht einfach und logisch.

In Wahrheit störte mich mehr die Unterbrechung durch Probleme mit dem Kundensupport. Der interne Wechsel zu einer Aufgabe in einer anderen Sprache war an sich nie ein Problem.

Bobby Tische
quelle
2

Ich arbeite mit 2 Sprachen: C # und Python.

Ich benutze sie beide im selben Projekt, aber offensichtlich für verschiedene Aufgaben.

Wenn ich an einer Aufgabe arbeite, arbeite ich an dieser Aufgabe, bis sie vollständig ist oder bis ich mich nicht mehr darauf konzentrieren kann. Das heißt, wenn ich zwischen den Sprachen wechseln muss, gibt es kaum oder gar keine kognitiven Dissonanzen, da ich bei der letzten Aufgabe bereits aus dem Denken in beiden Sprachen herausgekommen bin.

Zugegeben, ich mache eine kurze Pause, wenn ich aus einer Aufgabe herauskomme, was wahrscheinlich sehr hilfreich ist.

Matt Ellen
quelle
2

So wenig wie möglich. In der Regel handelt es sich dabei um 1. Python plus 2. HTML-Templating, 3. HTML + CSS und manchmal 4. Javascript. Der Wechsel von Python zu JS erfordert definitiv eine mentale Veränderung, auch weil ich verschiedene Tools verwenden muss.

Ich füge HTML + CSS getrennt von HTML-Vorlagen hinzu, auch wenn es sich möglicherweise nicht um Sprachen an sich handelt (oder diese abhängig von Ihrer Religion sind), da dies auch eine mentale Verschiebung und die Verwendung anderer Tools erfordert, obwohl es nicht so schlimm ist, zu wechseln Javascript. Aus der Sicht des Designs mit HTML + CSS zu fummeln, damit die Seite wie das erforderliche Modell aussieht, ist eine andere Einstellung als das Erstellen von HTML-Vorlagen. Aber es ist orthogonaler zu Python als Javascript, was bedeutet, dass ich meine Programmier-Denkweise für eine andere ändern muss. :)

Lennart Regebro
quelle
2

Täglich benutze ich:

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

Ich verwende gelegentlich auch Python, Java und XML (zählt das?). Meine Aufgabe besteht darin, verschiedene Websites zu bearbeiten, die in einer beliebigen Web-Sprache erstellt werden können (sogar eine Perl-Sprache) und ganz andere Paradigmen / Vorlagen (prozedural, MVC, OOP usw.) verwenden.

Zur Beantwortung der Frage: Ich verwende hauptsächlich Notepad ++ als meine IDE für die ersten 5 aufgelisteten, dann Visual Studio für Asp.Net.

Es kann schmerzhaft sein, schnell zwischen den einzelnen Sprachen zu wechseln - wenn Sie sich daran erinnern, ob Sie Semikolons am Zeilenende benötigen oder ob Schleifen geschweifte Klammern haben oder nicht. Der Wechsel von VBScript zu JScript ist das absolut Schlimmste - beide Dateien enden mit .asp und sehen auf den ersten Blick ziemlich ähnlich aus. Daher dauert es eine Weile, bis ich herausgefunden habe, warum ich Fehler erhalte.

whostolemyhat
quelle
Hey, du musst auch hier arbeiten! (j / k) Wir schreiben die ASP- und .NET-Codebasis in PHP um und sehen uns der gleichen Auswahl an Sprachen gegenüber.
greyfade
2

Momentan schreibe ich Ruby, PHP, Java, C und JavaScript und werde jeden Tag mindestens 1 Stunde schreiben. Das Hauptproblem ist wirklich, die Zeit zu finden, da sie alle für nicht verwandte Projekte sind.

Mentale Verschiebung

Mein Arbeitsstil ist so, dass ich gerne lange arbeite. Leider bedeutet dies, wenn ich nur eine einzige Sache anhabe und auf eine mentale Blockade mit einem Stück Code stoße, wird es lange dauern, bis ich darüber hinweg bin. Ich finde es auch nicht hilfreich, eine Pause zu machen. Indem ich andere Projekte und insbesondere andere Sprachen habe, zu denen ich wechseln kann, wenn ich stecken bleibe, bis ich wieder in der Originalsprache bin, habe ich sofort eine Lösung.

Daher gibt es ja eine mentale Verschiebung und ich denke, das macht mich viel produktiver.

Aufgaben priorisieren

Ich verwende einen Task-Manager (gTasks für Android) und habe für jedes Projekt eine eigene Aufgabenliste. Wenn ein Projekt mehrere Sprachen erfordert, trenne ich sie nicht. Dies liegt normalerweise daran, dass sie in irgendeiner Weise stark miteinander verwandt sind. Zum Beispiel JavaScript und Ruby für einige AJAX-Sachen. Wenn die Sprachen technisch für dasselbe Projekt sind, das Projekt jedoch so umfangreich ist, dass sie im Wesentlichen nichts miteinander zu tun haben, zähle ich sie wahrscheinlich als separate Projekte.

Im Allgemeinen ist meine Priorität "Welche Liste die meisten Aufgaben hat", aber ich werde immer wechseln, wenn ich bei einem Problem stecken bleibe.

Kodierungskonventionen

Es ist eine Mischung aus:

  • Wenn das Projekt mit anderen entwickelt wird, werde ich natürlich die Konventionen einhalten, die für dieses Projekt beschlossen wurden.
  • Wenn das Projekt persönlich ist, möchte ich, dass mein Code mit dem vorherrschenden Stil in der Community- / Standardbibliothek für eine bestimmte Sprache übereinstimmt. Ich finde es schwierig, Java-Code zu lesen, wenn sich beispielsweise alle Benutzerfunktionen in snake_case befinden. Ebenso sehen camelCase-Methoden in Ruby seltsam und fehl am Platz aus.
  • Für Konventionen, die nicht durch die einfache Verwendung einer Sprache wie Einrückung offensichtlich werden, werde ich dazu tendieren, meine eigenen Standards zu übernehmen und sie in allen Sprachen zu verwenden, die ich verwende. Bei Einrückungen verwende ich immer 2 Leerzeichen. Für den Stil der geschweiften Klammern verwende ich immer das, was Wikipedia derzeit als Lesbarkeitsstil für kompakte Steuerelemente bezeichnet .

Nebenbei: Die größte Herausforderung für mich ist eigentlich der Wechsel zwischen den Stilsprachen. Es ist sehr schwierig mitzufahren, wenn man SASS neben Ruby programmiert und dann für alles andere wieder zu CSS wechseln muss. In geringerem Maße habe ich das gleiche Problem mit HAML / HTML und JSON / XML.

Rupert Madden-Abbott
quelle
2

Ich schreibe Anwendungen für die ISP-Seite der Dinge, es gibt auch eine Kultur des "Machens, womit du dich wohl fühlst", die oft von vielen Netzwerktechnikern geschrieben wird, die sich mit Programmierung beschäftigen. Ich muss mich wöchentlich mit Programmen auseinandersetzen, die recht gut geschrieben sind, um die wirklich schrecklichen. Was ich oft begegnen werde und an dem ich arbeite ...

  • Perl , Oft schnelle einmalige Skripte oder häufig von Leuten verwendet, die Perl nur kennen (oder mögen). Mehr von dem alten Zeug ist in Perl geschrieben, das ich finde. Einige der schlimmsten Dinge sind in Perl geschrieben, nicht weil die Sprache schlecht ist, sondern weil sie von beginnenden Programmierern leicht missbraucht wird. Ich benutze das immer noch selbst für bestimmte Arten von einmaligen Programmen. Ich benutze es selten für etwas größeres.
  • PHP , Vieles davon, oft eine Einstiegssprache für die Dabbler. Einige sehr gut geschriebene Programme, andere schlock. Für bestimmte Arten von Webanwendungen wähle ich PHP, weil ich es schneller zum Laufen bringen kann.
  • Shell Scripting , Verwenden Sie es meistens zum Ausführen anderer Programme oder Aufgaben wie dem Lesen von Protokollen.
  • Erwarten Sie , stoßen Sie immer noch darauf (und Eiferer, die darauf bestehen, dass es Nirwana für die Ausführung von Befehlen auf Netzwerkgeräten ist). Ich arbeite daran, wenn ich muss, aber irgendwo auf der Welt wird ein Babykätzchen getötet, wenn ich auf eines dieser vielen tausend Zeilen langen Programme stoße, ohne dass eine einzige Funktion in Sicht ist, nur eine lange iterative Pasta-Farm.
  • C , Wird aufgrund von Portabilitätsproblemen selten verwendet, aber ich werde es verwenden, um bestimmte Aufgaben auszuführen.
  • Java verwende ich häufig, da es umfangreiche Bibliotheksunterstützung bietet und sich leicht implementieren lässt. Wir haben ein sehr heterogenes Netzwerk und ein anderes IT-Personal als ich. Mit Java kann ich Bibliotheken einbinden und muss mir keine Sorgen machen, dass die IT etwas auf dem System "upgraden" muss, das ich für die Bereitstellung des Programms benötige. Meistens ist dies die Programmiersprache meiner Wahl.

Es gibt auch andere Sprachen (.net, VB, Phyton, Rails usw.) in der Firma, aber ich musste noch nicht daran arbeiten.

Bearbeiten, zum Bearbeiten ...

Sie müssen sich mental verändern, wenn Sie zwischen Sprachen arbeiten. Am häufigsten verliere ich den Überblick über die Syntax. Ich halte eine Sammlung von Nachschlagewerken bereit. Ich werde feststellen, dass es ungefähr eine halbe Stunde dauert, um wieder in die Denkweise der anderen Sprache zurückzukehren. Je stumpfer die Syntax für die Sprache ist, desto länger dauert die Verschiebung. Ich finde, dass die Umstellung von Java auf Perl wahrscheinlich am längsten dauert, wenn ich Perl eine Zeit lang nicht berührt habe. Je mehr Sie dies tun, desto einfacher wird es.

Bill
quelle
1

Ich verwende oft sechs oder mehr Sprachen in einem Projekt. Die meisten von ihnen sind normalerweise nur für dieses Projekt spezifisch.

Mental Shift ist nur erforderlich, wenn Sie eine Sprache verwenden, die für eine Aufgabe nicht geeignet ist. Ansonsten ist es selbstverständlich, die beste Passform zu verwenden. Für verschiedene Phasen eines Projekts werden unterschiedliche Sprachensätze verwendet.

SK-Logik
quelle
Sind Sie Projektleiter oder schreiben Sie darin?
Aditya P
@AdityaGameProgrammer, ich codiere in ihnen.
SK-logic
Was dagegen, eine Ablehnung zu erklären?
SK-logic
1

Ich benutze häufig C (eingebettet), C ++ (Desktop), Python, Matlab und VHDL (eine Art Hardware-Programmiersprache), oft alle am selben Tag. In meiner Umgebung ist diese Art von Sprachgeschicklichkeit aus meiner Sicht von wesentlicher Bedeutung.

Ich kann oft nicht alles, was ich für ein bestimmtes Projekt benötige, effizient in einer Sprache erledigen. Zum Beispiel sind sowohl Embedded C als auch VHDL ziemlich niedrig, so dass ich häufig Python verwende, um ihre Ergebnisse zu analysieren (oder sogar Code zu generieren).

Ein schneller Wechsel ist nach einer Weile kein Problem mehr, sondern der Wechsel von einem Hammer zu einem Schraubendreher - das richtige Werkzeug für den Job.

Martin Thompson
quelle
1

Es hängt wirklich davon ab, wie das Arbeiten definiert ist ... Ich verwende C # jeden Tag zum Entwickeln von Microsoft Surface-Anwendungen. Java benutze ich auch jeden Tag für meine Android-Anwendungen. Aber ich versuche mich weiterzubilden und benutze R, Ruby und Objective-C. Manchmal brauche ich auch etwas SQL und wenn Sie Skriptsprachen und andere Sprachen in Ihre Frage aufnehmen, dann auch JavaScipt, SPARQL und BeanShell.

Wenden Sie auf alle Sprachen den gleichen Codierungsstil / die gleichen Codierungskonventionen an (keine Syntax)?

Ich versuche, die Codierungskonventionen der einzelnen Sprachen zu befolgen, aber insbesondere zwischen Java und C # habe ich einige Schwierigkeiten, weil die geschweiften Klammern und die Methode in Großbuchstaben in C # lauten:

public void test() {
   ...
}

gegen

public void Test()
{
   ...
}
RoflcoptrException
quelle
Beide Arten von geschweiften Klammern sind in C # zulässig. Verbringen Sie nicht zu viel Zeit damit, Ihr Gehirn damit zu belasten. :-)
Cody Grey
0

Ich baue Web-Apps. Also momentan ist es:

  • XHTML
  • JavaScript
  • C # als Teil der
  • ASP.Net Framework (diese Art von ist auch eine Sprache)
  • T-SQL für die Datenbankkommunikation
  • Englisch für die Kommunikation mit Menschen.

Editoren: Sublime Text (keine Auswahl), Visual Studio 2010 (keine andere Auswahlmöglichkeit, wenn es um ASP.Net geht)

5arx
quelle
0

Bei meiner Arbeit benutze ich Java, C, Python, Django und ein bisschen PHP. Ich habe auch an einem sehr kleinen Projekt in Microsoft C ++ gearbeitet.

Ich benutze sie nicht alle jeden Tag, aber an manchen Tagen benutze ich sie alle ohne Probleme. An einem typischen Tag verwende ich nur ein oder zwei. Bei der Programmierung zu Hause arbeite ich normalerweise mit anderen Technologien als bei der Arbeit mit Qt oder Ruby on Rails.

jonescb
quelle