Ist die C # -Entwicklung tatsächlich nicht von der von Ihnen verwendeten IDE zu trennen?


41

Ich bin ein Python-Programmierer, der C # lernt und versucht, sich keine Sorgen mehr zu machen und C # einfach so zu lieben, wie es ist, anstatt es ständig mit Python zu vergleichen.

Ich bin in einem Punkt eingeholt: der Mangel an Klarheit darüber, wo Dinge definiert sind, wie in dieser Stapelüberlauf-Frage beschrieben . Kurz gesagt: In C # using foowird nicht angegeben, von welchen Namen Namen fooverfügbar gemacht werden. Dies ist analog zu from foo import *Python - eine Form, die in der Python-Codierungskultur davon abgeraten wird, implizit und nicht explizit zu sein from foo import bar.

Ich war ziemlich beeindruckt von den Stack Overflow-Antworten von C # -Programmierern auf diesen Punkt, die besagten, dass in der Praxis diese mangelnde Aussagekraft keine Rolle spielt, da Sie in Ihrer IDE (vermutlich Visual Studio) einfach über einen Namen fahren und sich von ihm erzählen lassen können das System, von dem der Name kommt. Z.B:

Theoretisch ist mir klar, dass Sie bei der Suche mit einem Texteditor nicht wissen können, woher die Typen in C # stammen. In der Praxis ist dies jedoch kein Problem. Wie oft sehen Sie sich tatsächlich Code an und können Visual Studio nicht verwenden?

Dies ist für mich eine Offenbarung. Viele Python-Programmierer bevorzugen einen Texteditor-Ansatz gegenüber der Codierung mit etwas wie Sublime Text 2 oder vim, bei dem alles um den Code sowie Befehlszeilen-Tools und den direkten Zugriff und die Bearbeitung von Ordnern und Dateien geht. Die Idee, von einer IDE abhängig zu sein, um Code auf einer solchen Basisebene zu verstehen, scheint ein Gräuel zu sein. Es scheint, dass die C # -Kultur in diesem Punkt radikal anders ist. Und ich frage mich, ob ich das als Teil meines C # -Lernens akzeptieren und annehmen muss.

Was mich hier zu meiner Frage führt: Ist die C # -Entwicklung tatsächlich untrennbar mit der von Ihnen verwendeten IDE verbunden?


7
Python ist eine dynamische Sprache, die wie Java statisch in C # geschrieben ist. Wie Sie also in beiden Sprachen codieren, ist sehr unterschiedlich.
Oded

6
@Oded: using MyType = MyNamespace.MyType;?
pdr

4
Ich weiß nicht, wie es in Python ist, aber in C # können Sie immer beginnen global::und sich von dort aus fortbewegen. usingstellt nichts zur Verfügung, was vorher nicht war; Dies macht den Zugriff nur einfacher (da weniger Eingaben erforderlich sind, um eine bestimmte Klasse zu verwenden).
ein Lebenslauf vom

5
"Viele Python-Programmierer bevorzugen einen Texteditor-Ansatz gegenüber der Codierung mit etwas wie Sublime Text 2 oder vim, bei dem alles um den Code sowie Befehlszeilentools und den direkten Zugriff und die Bearbeitung von Ordnern und Dateien geht." - Das klingt für mich schrecklich ineffizient. Eine IDE ist ein Tool, mit dem Sie produktiver arbeiten können. Natürlich können Sie ein Haus mit einem Hammer und einer Handsäge bauen und die Bäume selbst fällen, aber ich denke, dass Sie mit einigen Elektrowerkzeugen und dem Kauf von vorgeschnittenem Holz eine viel schnellere Zeit haben werden.
Andy

2
@Andy - Ich kann sehen, dass es so klingt. Aber diese Texteditoren sind tatsächlich sehr leistungsfähig und bieten eine Menge Funktionen für die Effizienz von Werkzeugen und Programmierern. Es ist nur eine radikal andere Art, auf diese Tools und Funktionen zuzugreifen und sie zu verwenden als auf eine IDE (und eine, die für bestimmte Sprachen / Programmierkulturen möglicherweise mehr oder weniger geeignet ist).
Ghopper21

Antworten:


26

Visual Studio ist so praktisch, dass es nach einer Weile schwierig ist, eine andere IDE zu verwenden. Es verfügt über viele nützliche Tools und eine Reihe von Plugins, sodass praktisch alle Funktionen zur Verfügung stehen, die Sie benötigen.

Unabhängig davon, welche Sprache Sie lernen, wird empfohlen, die Befehlszeile am Anfang zu verwenden, damit Sie besser verstehen, wie sie funktioniert. C # ist keine Ausnahme.

Ist die C # -Entwicklung tatsächlich untrennbar mit der von Ihnen verwendeten IDE verbunden?

Theoretisch nein, aber praktisch ja. Es ist möglich, mit einem Texteditor und einer Befehlszeile in C # zu schreiben, aber mit Visual Studio würden Sie dies niemals tun. Tatsächlich haben nur sehr wenige Programmierer jemals C # -Code über die Befehlszeile ausgeführt.

Übrigens: Wenn Sie sich unwohl fühlen using foo, können Sie bei der Verwendung eines Typs den gesamten Pfad verwenden.


9
SharpDevelop und MonoDevelop sind alternative IDEs zu Visual Studio.
Oded

@Oded, ich habe sie noch nie benutzt, aber es ist interessant, einen Blick darauf zu werfen. Thanks))
superM

Dank superM - können Sie einen Vorgeschmack auf die Funktionen geben, die Visual Studio so unverzichtbar machen? Ich weiß, dass es eine sehr gute Code-Vervollständigung hat, aber was noch? Entspricht es mehr oder weniger Eclipse für C # oder gibt es etwas Spezifischeres, auf das sich C # -Entwickler verlassen können?
Ghopper21

2
@ Ghopper21: Ich würde vorschlagen, dass es eher mit IntelliJ als mit Eclipse vergleichbar ist (insbesondere, wenn Sie Resharper einbeziehen), mit der Ausnahme, dass in der .NET-Welt Community-Plugins im Allgemeinen für Visual Studio geschrieben werden.
pdr

5
+1: Ich bin damit einverstanden, dass Sie zwar mit Notepad Code in die Befehlszeile schreiben können, aber ein Idiot sind, der die Tools ignoriert, die VS oder Sharp Develop auf den Tisch bringen.
Binary Worrier

33

Die Idee, von einer IDE abhängig zu sein, um Code auf einer solchen Basisebene zu verstehen, scheint ein Gräuel zu sein.

Es geht nicht darum , Ihren Code zu verstehen : Wenn Sie genügend Zeit haben, können Sie die richtige Variable immer mit einem einfachen Texteditor oder sogar in einem Ausdruck finden. Nach dem Verständnis des Codes existiert die IDE-Abhängigkeit absolut nicht.

Das effiziente Auffinden Ihrer Referenzen ist ein ganz anderes Thema: Ich finde die Verwendung von Java-Variablen in Eclipse genauso gut wie das Auffinden von Deklarationspunkten in Visual Studio, sowohl für C # als auch für C ++. Ich bevorzuge es, meine Zeit mit Kodieren zu verbringen, anstatt manuell nach Deklarationspunkten zu suchen. Das ist ähnlich wie beim Rechnen: Ich kann mehrstellige Zahlen auf ein Blatt Papier multiplizieren, bevorzuge aber die Verwendung eines Taschenrechners, um mir ein oder zwei Minuten zu sparen.

Ab einer bestimmten "kritischen Größe" des Codes ist eine gute IDE unabhängig von der Programmiersprache sehr nützlich. Die Größe kann von Sprache zu Sprache variieren. Wenn Sie jedoch mehrere tausend Zeilen überschreiten, hilft eine IDE, unabhängig von Ihrer Sprache. Dies hat mehr mit Einschränkungen des menschlichen Geistes zu tun als mit einer bestimmten Programmiersprache: Irgendwann ist Ihr Kurzzeitgedächtnis an einen "Überlauf" gebunden.

Es gibt Tricks, mit denen Sie die kritische Größe erhöhen können, wenn die IDE nützlich wird. Sie könnten beispielsweise einer Namenskonvention folgen (ungarische Namen waren in der C ++ - Welt irgendwann groß, besonders unter Windows-Anwendern). Ein weiterer häufiger Trick besteht darin, Instanzvariablen this.auch in Kontexten zu qualifizieren , in denen eine solche Qualifizierung nicht erforderlich ist.

Diese Tricks sind mit Kompromissen verbunden: Sie machen Ihr Programm fast zwangsläufig weniger lesbar, indem Sie Namen verdecken oder die expliziten Verweise einfügen, die die Kapselung verbergen sollte. Vor der Wahl wähle ich sauber aussehenden Code plus eine IDE anstelle von weniger sauber aussehendem Code minus einer IDE. Ich erkenne jedoch voll und ganz, dass die Entscheidungen anderer Menschen von meinen abweichen können.


1
Ich hätte wahrscheinlich "Code schnell lesen" sagen sollen ... Es ist für mich eine ziemliche Veränderung, nicht alle Referenzen in derselben Quelldatei zu haben und stattdessen Tools zu verwenden, um diese Referenzen zu finden.
Ghopper21

5
Nicht, dass ich mich nicht für eine thiseigenwillige Verwendung entscheiden könnte - aber das Codieren ist keine isolierte Kunst und ich denke, es ist am besten, den Normen einer Codierungskultur zu folgen (oder zumindest damit zu beginnen) - dh mit Python und Pythonic zu sein was auch immer das äquivalente "C # way" mit C # ist. Aus den hier gegebenen Antworten und Kommentaren geht klar hervor, dass die Verwendung einer guten IDE wie Visual Studio für den "C # -Modus" von zentraler Bedeutung ist (wenn dies der richtige Weg ist).
Ghopper21

3
@ Ghopper21 Was Sie mit C # antreffen, ist nicht, dass Sie es nicht ohne eine IDE schreiben können, sondern dass die überwiegende Mehrheit des C # -Codes in einer IDE geschrieben wurde und alle Entwickler diese IDE verwenden. Diese Tatsache kombiniert mit den Entwicklern intellisense Ursachen in die Google - Speicher - Falle zu fallen , wie Studien sprechen über haben huffingtonpost.com/2011/07/15/... „Nach dem Ergebnis der Studien, die Menschen mit Zugang zu Googles massivem Web - Index weniger wahrscheinlich Erinnern Sie sich an eine Tatsache, wenn Sie dazu aufgefordert werden, aber erinnern Sie sich, wo und wie Sie diese Tatsache online finden können "
Jimmy Hoffa

2
@ Ghopper21 Ich sage nicht, dass diese Speicherfalle schlecht ist , sie ist für die meisten eine Quelle extrem erhöhter Produktivität, weshalb nur diejenigen mit langen Erinnerungen an die Tage, an denen sie sich die gesamte API merken konnten, mit der sie gearbeitet haben, sich wirklich darüber beschweren. Ich möchte nur darauf hinweisen, da sich diese Tatsache direkt auf den C # -Code, den Sie lesen, sowie auf den Stil und die Kultur der C # -Entwicklung auswirkt.
Jimmy Hoffa

1
Ich bin nie ganz auf BIOS / Low-Level-Dos-APIs eingegangen. Aber meine erste Sprache / Umgebung war Borland TurboPascal. und ich hatte wahrscheinlich ~ 90% der Sprache / Standard-Bibliothek an einem Punkt auswendig gelernt. Die primären Ausnahmen betrafen das völlige Versagen, herauszufinden, worum es bei OO gehen sollte.
Dan Neely

8

Viele Python-Programmierer bevorzugen einen Texteditor-Ansatz gegenüber der Codierung mit etwas wie Sublime Text 2 oder vim, bei dem alles um den Code sowie Befehlszeilen-Tools und den direkten Zugriff und die Bearbeitung von Ordnern und Dateien geht.

Das ist toll, aber es fehlt der Sinn der VS-IDE. Der Sinn einer IDE wie VS ist die schnelle Entwicklungsunterstützung durch starke Code-Tools wie Refactoring und Intellisense. VS ist ein sehr sehr guter Editor für C # -Code.

Mit C # können Sie jetzt einen Stil programmieren, der in größerem Maße von der IDE abhängt (Sie können viele varSchlüsselwörter und dergleichen verwenden). Einige Leute bevorzugen es, expliziter zu sein, indem sie beispielsweise Namespace-Aliase verwenden, um klar zu machen, zu welchem ​​Namespace eine Klasse gehört (wie importin Java oder Python). Das ist eher eine Wahl des Codierungsstils als ein Merkmal der Sprache.

Da C # statisch typisiert ist (obwohl mit einigen dynamischen Erweiterungen ab Version 4), ist es immer ziemlich einfach herauszufinden, auf welche Typen verwiesen wird - wenn sie falsch sind, wird der Code nicht kompiliert und VS ist nicht die einzige IDE mit Unterstützung für C # Intellisense. Es ist wahrscheinlich das Beste.

Das Entwickeln von C # ohne eine leistungsstarke IDE (wie VS) ähnelt dem Hämmern von Nägeln von Hand, wenn Sie bereits eine erstklassige Nagelpistole besitzen. Es kann gelegentlich vorkommen, dass Sie dies tun müssen, aber Profis verwenden das richtige Werkzeug für den Job .

Ich würde sagen, dasselbe gilt wahrscheinlich auch für Java. Wenn es eine leistungsstarke IDE mit Intellisense- und Code-Refactor-Tools gibt, sollten Sie sie wahrscheinlich verwenden.

Betrachten Sie es jedoch anders herum - wenn Sie keine Intellisense-, Compile-Timecode-Prüfung und Code-Analyse / Refactoring-Funktion wünschen, ist eine aufgeblähte IDE nicht der richtige Weg, und es handelt sich auch nicht um eine statisch typisierte Sprache. Ich denke, es ist umgekehrt:

Viele Programmierer, die einen Texteditor-Ansatz für das Codieren bevorzugen, profitieren weniger von statisch getippten Sprachen (wie C # und Java) und könnten daher besser dran sein, wenn sie sich an dynamische wie Python und Javascript halten.

Ich denke:

  • Dynamische Sprachen eignen sich für leichte Werkzeuge (schwere IDEs bieten hier weniger Nutzen)
  • Statische Sprachen passen zu leistungsstarken IDEs (Tools können auf Kosten der Flexibilität beim Code helfen)

+1 für das umgekehrte Angebot.
24.

5

Um Ihre Frage zu beantworten: Obwohl sich die Microsoft-Entwicklungsumgebung langsam ändert, handelt es sich größtenteils um eine Monokultur .

Dieser Ansatz hat viele positive und negative Aspekte, die ausführlich diskutiert werden könnten (z. B. die Vor- und Nachteile offener und geschlossener Plattformen wie PCs gegenüber einer Xbox). Letztendlich ist das Tool von Microsoft jedoch das wichtigste Leute benutzen. Das Unternehmen hat auch gezeigt, dass es sich bei der Entscheidungsfindung oft um einen Prozess handelt, bei dem die Mehrheit unserer Benutzer den größten Wert erhält. Dabei wird stets nach praktischen Kompromissen gesucht (in letzter Zeit - betrachten Sie Typescript ). Es würde mich also nicht überraschen, dass die Entwicklung von C # unter Berücksichtigung der Tools (VS) durchgeführt wurde / wird.


Übrigens könnte man behaupten, dass Python auch eine eigene Monokultur ist, wenn man bedenkt, was als "Pythonic" in Bezug auf Codierungsstil und -ansatz angesehen wird, und dass das Kernprinzip der Sprache darin besteht, einen offensichtlichen richtigen Weg zu finden, um Dinge zu tun. Ich bin der Meinung, dass die Programmierung von Monokulturen in diesem Sinne sehr gut sein kann, da sie eine kohärente Community und gemeinsam nutzbaren Code schaffen. Es ist nur (schade? Und / oder eine Gelegenheit, meine Meinung zu erweitern?), Dass die Python- und C # -Kulturen so ... unterschiedlich sind!
Ghopper21

2
@ Ghopper21 Das ist ein sehr guter Punkt bei Python. Ich denke, die MS-Version von "es sollte einen einzigen, offensichtlichen Weg geben, dies zu tun" erstreckt sich auf die Wahl der IDE :)
Daniel B

4

Zum einen ist C # nicht Python. Es gibt verschiedene Entwurfsmethoden.

Um Ihre Frage zu beantworten, können Sie Ihre Python-esque jetzt mit Anweisungen verwenden.

using FooBar=MyName.Foo.FooBar; 

Es ist nur definitiv nicht die Norm, weil es bei weitem nicht so einfach ist. Ich denke jedoch, Sie sollten sich weniger Gedanken darüber machen, wo genau die einzelnen Klassen herkommen. Ich verstehe jedoch nicht den ganzen Sinn, es in Python so zu machen.

Außerdem ist C # eine Sprache, die sich sehr gut für die Verwendung von IDEs eignet, um dies zu vereinfachen. Intellisense ist erstaunlich einfach zu implementieren, insbesondere im Vergleich zu dynamischen Sprachen wie Ruby und Python. Sie müssen sich jedoch nicht an Ihre IDE halten. Ich habe von Leuten gehört, die Eclipse verwenden. Es gibt natürlich auch MonoDevelop (das ich ziemlich oft benutze), und Sie können sogar von einer Kommandozeile aus arbeiten. Manchmal bearbeite ich auf meinem Server C # -Dateien mit viund erst dann mit xbuild, um sie neu zu erstellen. Es ist nur so, dass die Verwendung einer IDE die Dinge im Vergleich zur Befehlszeile in typischen Fällen erheblich vereinfacht.


4

Hat jemand die Mühe, hier unten nachzulesen?

Ich fasse zusammen, dass die massiv komplexe IDE-Funktionalität unverzichtbar ist und sich eines Tages zum Zen of Sublime VimNess entwickeln wird (sollte) ....

Unsere Software besteht aus 129 Projekten mit ca. 2M LOC. Fügen Sie die Massivität des .NET-Frameworks hinzu, und angesichts dessen kann ich nur sagen, dass die IDE von entscheidender Bedeutung ist und die Motivationen der Frage dieses Threads übersteigt.

Einblick in die Code Base

Zeitraum. Sie kennen die Funktionen, über die wir sprechen. mit der Ausnahme, dass seine Bequemlichkeit für die Art der Codebasis, mit der ich mich befasse, unverzichtbar und wesentlich wird.

Ich schreibe besseren Code wegen der IDE. Ich füge meinen Nunit-Tests immer benutzerdefinierte Nachrichten hinzu, da dies einfach, schnell und genau ist. Ich bevorzuge Aufzählungen gegenüber Zeichenketten, die größtenteils dem Intellisense geschuldet sind. Ich zögere nicht, beschreibende / lange Benennungen zu verwenden - eine mehrzeilige Aussage ist schnell und klar verfasst.

Aber auch diese Schlauheit ist manchmal zu viel. Ich benutze oft die gute alte Textsuche "In Dateien suchen".

Codierhilfe

Hier weine ich oft "genug!". Stellen Sie sich einen Bildschirm mit einem Dutzend Farben vor, die größtenteils verdeckt sind, eine bestimmte Variable, die überall hervorgehoben ist, Klammern, die verdecken, was die Klammer eigentlich ist Ich muss nur darauf klicken und es dann die meiste Zeit ignorieren.) Ein Signatur-Hilfe-Popup, das sich horizontal über 2/3 des Bildschirms erstreckt und vertikal mehrere Überladungen anzeigt Ich kann nicht einmal die & ^!% -Zeile * s * des Codes sehen, an dem ich arbeite!

Vis.Stud. Bedürfnisse Minimalismus umarmen , damit ich kann auf Codierung und nicht durch konzentriere Hunderte von Einstellungen in einem aussichtslosen Kampf zurückzufordern Vernunft ( in Tausend , wenn Sie jede Farbcodierung Einstellung und alle , die Plug - in zählen). Ein " Pareto " -Schlüssel wäre toll.


1
Wir wissen Ihre Gedanken hier sehr zu schätzen, da Sie sowohl in Bezug auf die IDE- als auch in Bezug auf die Sublime VimNess-Herangehensweise wirklich zu "verstehen" scheinen. Ich bin bei dir in allem, was du hier sagst. Wir hoffen, dass es soweit ist.
Ghopper21

3

Ist die C # -Entwicklung tatsächlich untrennbar mit der von Ihnen verwendeten IDE verbunden?

Natürlich nicht. Warum würden Sie nicht den gesamten Namespace importieren? Die Wahl einer integrierten IDE oder eines Texteditors hat damit nichts zu tun. Das Importieren des gesamten Namespaces erschwert das Lesen oder Verwenden des Codes nicht.

Denken Sie daran, C # ist eine typisierte Sprache. Wenn Sie mehrere Namespaces mit derselben Klasse importieren, wird ein Kompilierungsfehler angezeigt.

Ich persönlich verwende in keiner Weise so viele Typdeklarationen. Stattdessen verwende ich das varSchlüsselwort aus den Gründen, die ich hier beschreibe: http://blog.gauffin.org/2012/08/to-var-or-not-to-var-is-that-really-the-question/


1
Das Problem ist das Lesen und nicht das Schreiben von Code. (Die Frage zum Stapelüberlauf, auf die ich oben verweise, enthält ein Beispiel.) Woher wissen Sie beim Lesen von Code, woher etwas kommt? Mit Python können Sie nach einem expliziten Import suchen (vorausgesetzt, der Code folgt den strengen Python-Konventionen für die Verwendung solcher Importe). Bei C # scheint der Konsens darin zu bestehen, dass Sie in der Praxis eine IDE wie VS verwenden.
Ghopper21

Wenn Sie nicht wissen, woher die Klasse kommt, müssen Sie sie wahrscheinlich nachschlagen, um zu wissen, wie sie funktioniert. Einfach googeln msdn <classname>und auf den ersten Link klicken. Dort erhalten Sie auch den Namespace.
jgauffin

Dieser Ansatz veranschaulicht den kulturellen Unterschied. Nicht, dass Python-Programmierer nicht googeln - natürlich tun sie das - es ist nur eine andere Art, darüber nachzudenken.
Ghopper21

In einer separaten Anmerkung ist var in C # eine nette syntatische Zucker / Compiler-Abkürzung, die ich mag, um Code weniger ausführlich und sich wiederholend zu machen. Ich wünschte, Sie könnten es überall verwenden, nicht nur innerhalb von Methoden.
Ghopper21

@ Ghopper21: Ja, ich weiß. Mein Punkt ist, dass Google MSDN ziemlich gut indiziert und Sie die Dokumentation direkt erhalten, indem Sie dies tun. Daher müssen Sie wirklich nicht jede Klasse dokumentieren, die Sie verwenden, indem Sie den gesamten Pfad dazu angeben.
jgauffin

1

Mein Verständnis war, dass in Python "alles öffentlich ist" oder etwas in diesem Sinne. In C # entscheidet der Moduldesigner, was öffentlich ist und was nicht. Wenn Sie dies tun, erhalten importSie ohnehin nur die öffentliche API. Das könnte ein Grund für den Unterschied sein, den Sie beschreiben.


Das ist definitiv ein großer Unterschied zwischen Python und C #, aber es hilft mir nicht wirklich zu verstehen, warum Importe so wenig explizit sind. Wie @pbr in seinem Kommentar bemerkte, ähnelt Java (das auch die öffentliche / private Unterscheidung hat) Python in seiner kulturellen Präferenz für explizite Importe.
Ghopper21

5
@ Ghopper21 - Der einzige Grund, explizite Importe in Java (und C ++ zum Beispiel) zu bevorzugen, ist die Vermeidung von Namenskollisionen. C # traf die Designentscheidung, dieses Problem über Import- / Typ-Aliase zu lösen, da diese besser behandelt werden können, wenn es tatsächlich zu einer Namenskollision kommt, und der Vorteil, dass nicht viele Boilerplate-Importe Ihre Quelle überfrachten.
Telastyn

1

Ist die C # -Entwicklung tatsächlich untrennbar mit der von Ihnen verwendeten IDE verbunden?

Bei meinem vorherigen Job habe ich vim hauptsächlich verwendet, um in Sprachen wie C #, JavaScript, Powershell, Perl, C ++ zu programmieren, und einige Entwickler haben etwas Ähnliches gemacht. Das Projekt war einfach zu groß für Visual Studio.

Die meisten C # -Entwickler beschäftigen sich jedoch mit viel kleineren Projekten und setzen VS gerne ein.


0

Dies ist eine interessante Sicht auf die C # -Entwicklung. Was Sie fragen, geht jedoch über C # hinaus, wenn Sie nach der IDE fragen.

Wie Sie sagen, können Sie in Python verschiedene Editoren verwenden, um Ihren Code zu schreiben. Dies können Sie auch mit dem .NET Framework tun. Es gibt auch andere IDE-Tools, die Sie verwenden können, z. B. SharpDevelop. Visual Studio wird sehr eng mit dem .NET-Framework zusammen entwickelt und ist relativ teuer. Es gibt Tools wie SharpDevelop und die "Express" -Versionen von VS, um mehr Entwickler zur Verwendung von .NET zu verleiten. Grundsätzlich ist alles, was eine IDE für Sie tut, die Bereitstellung einer organisierten Umgebung, in der Regel mit Intellisense, Add-Ons für die Produktivität und einem "Helfer" für die Zusammenstellung einer möglicherweise sehr beängstigend aussehenden Befehlszeile, die Sie an Ihren Compiler übergeben können. Gleiches gilt für Java. Tools wie Eclipse sorgen lediglich für die Verbesserung der Organisation und Produktivität. Unter der Haube geschieht nichts Magisches, bis Sie Ihr Projekt erstellen oder kompilieren und dieser Respekt,

Wenn Sie über die using-Anweisung in C # sprechen und sie mit Python vergleichen, ist das nicht wirklich dasselbe, was unter der Haube passiert. Die using-Anweisungen werden vom Compiler verwendet, um die Umwandlung des C # -Codes in MSIL zu erleichtern. In MSIL gibt es keine Anweisung "Alle diese Klassen aus diesem Namespace importieren". Wenn sich der Zeitcode auf MSIL-Ebene befindet, wurden alle Klassen mit ihren vollständig qualifizierten Namen versehen. Diese Anweisungen "using" und "import" dienen der besseren Lesbarkeit. Sie sind keine Compiler-Optimierungsbefehle. Nachdem all diese anfänglichen "Markierungen von vollständig qualifizierten Namen" stattgefunden haben, kann es zu einer Art "Minimierung" der FQNs auf niedriger Ebene kommen, aber dies soll dem Compiler / Interpreter helfen, schneller ausgeführt zu werden.

Ein letzter grundlegender Unterschied zwischen all diesen hier erwähnten Sprachen besteht darin, dass einige von ihnen von VMs interpretiert werden, andere im JIT-Stil interpretiert werden und andere vollständig kompiliert sind. Wie diese using-Direktiven in diesen Compilern und Interpreten implementiert werden, ist sehr unterschiedlich.

HTH.


"Diese" using "- und" import "-Anweisungen dienen der besseren Lesbarkeit." - Ja, das ist ein wesentlicher philosophischer Unterschied. Die Lesbarkeit auf Textebene ist ein wichtiges Python-Designprinzip erster Ordnung. C # muss nicht unbedingt, sondern setzt praktisch eine gute IDE wie VS voraus, um "lesbar" zu sein. Übrigens geht es beim "Importieren" in Python nicht nur um die Lesbarkeit, sondern auch um das "Verwenden" in C #.
Ghopper21

0

Ich denke, die Antwort lautet historisch gesehen: Ja. Es war einfach zu unangenehm, die C # -Entwicklung außerhalb von Visual Studio, Xamarin oder SharpDevelop zum Laufen zu bringen.

In letzter Zeit sind jedoch viele Projekte aufgetaucht, die es einfacher machen, zB:

OmniSharp bietet zusammen mit Vim- , Emacs-, Atom- und Sublime-Plugins eine Grundlage für Intellisense und Refactoring. Ich habe es nicht wirklich benutzt, also weiß ich nicht, wie gut es funktioniert, aber es sieht vielversprechend aus.

Yeoman ASP.NET MVC-Generatoren helfen beim Booten eines neuen MVC-Projekts (möglicherweise sind andere Generatoren vorhanden).

paket , eine Alternative zu NuGet, bei der Sie NuGet-Pakete über die Befehlszeile zu Ihrem Projekt hinzufügen und Ihre .csproj-Dateien aktualisieren können (obwohl es ein NuGet-Befehlszeilentool gab, gehörte das Aktualisieren von Projekten zur Verwendung der Pakete zur IDE Integration, keine Kommandozeilen-Tools).

Paket impliziert, dass Sie Ihren Quellcode an die Verwendung anpassen müssen. Wenn Sie also als Einzelmitglied in einem Team sitzen und einen Texteditor zum Codieren verwenden möchten und alle anderen Visual Studio verwenden, müssen Sie alle überzeugen sonst, um die Lösung an Ihre Bedürfnisse anzupassen :(

Sie sollten also in der Lage sein, loszulegen, aber es ist vergleichsweise mehr Arbeit zu leisten, um Ihre Toolchain effizient in Betrieb zu nehmen.


-1

Nicht mehr:

http://www.omnisharp.net/

OmniSharp ist eine Familie von Open Source-Projekten, die jeweils ein Ziel haben: Eine hervorragende .NET-Entwicklung in IHREM Editor Ihrer Wahl zu ermöglichen.

Es macht Spaß, Cross Platform .NET zu sagen. Aber ist es sinnvoll, .NET ohne Visual Studio und Windows zu entwickeln?

Macht es Spaß, .NET auf einem Mac in Sublime auszuführen? Ubuntu und Emacs? Windows und Atom? Sie können mit Ihrem Editor PLUS großartige Funktionen wie Intellisense (nicht nur Autocomplete), Referenz hinzufügen, Dokument formatieren und vieles mehr verwenden. Überall entwickeln, überall bereitstellen (und in Azure!)

Ich habe das mit subime3 und osx getestet

Weitere Proben bei

http://blog.jonathanchannon.com/2014/11/12/csharp-first-class-citizen-sublime-text/


Omnisharp ermöglicht die Verwendung von C # mit Texteditoren wie sublime und Emacs. Warum wird also downvoted?
Mamcx
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.