it-swarm.dev

Jede Programmiersprache kann leicht beherrscht werden, wenn die Grundlagen der Programmierung gut sind. Eine Tatsache oder ein Mythos?

Stimmt es, dass eine Person mit ziemlich guten Grundlagen in der Programmierung leicht jede Programmiersprache lernen kann?

Wenn ich Programmiersprachen sage, beziehe ich mich auf die agilen und dynamischen Sprachen wie PHP, Perl, Ruby usw., aber nicht auf die früheren Programmiersprachen der fernen Vergangenheit.

Ich habe nur an Java gearbeitet, groovig und bis zu einem gewissen Grad flexibel. Wie lange würde es angesichts der Tatsache, dass ich ein Amateurprogrammierer bin, aber schnell lerne, grob dauern, um in einer dieser Sprachen Fuß zu fassen?

33
Vamsi Emani

Ja, mit Vorbehalt.

Vor vier Wochen hatte ich professionelle Kenntnisse in C und C++ und Amateurkenntnisse in Java. Mein Chef bat mich, eine Software in JavaScript zu schreiben, mit der ich keine Erfahrung hatte, und los ging es.

In den nächsten zwei Wochen las ich viele Beispielcode-Schnipsel, fand alle coolen Bibliotheken und schrieb mein Programm. Es ist fertig und es funktioniert. Dann habe ich letzte Woche ein JavaScript-Buch gekauft und es gelesen, und Junge, ich wusste nicht, was ich tat. Jetzt verstehe ich, warum meine Objekte so seltsam wirkten.

Also jetzt sage ich, ich kenne ein wenig JS. Ich kann es lesen und damit arbeiten, aber ich bin sicher, dass das, was ich schreibe, ineffizient und schwer zu lesen ist und nicht den Best Practices folgt.

Im Allgemeinen kann ein schneller Lerner eine Woche brauchen, um minderwertige Produkte in einer neuen Sprache zu produzieren. Wenn Sie Java kennen, können Sie C, C++, PHP, Python, JavaScript ziemlich schnell erlernen, aber nur gut genug, um Code zu ändern oder genau definierte Funktionen zu schreiben. (Perl kann schwieriger sein, da Regex komplex sind.) Um ein System in einer neuen Sprache richtig zu entwerfen, möchten Sie wahrscheinlich ein Jahr lang professionell unter erfahrenen Mentoren entwickeln.

46
Brad

Grundsätzlich lautet die Antwort ja ... und nein ... es hängt davon ab, was Sie unter Grundlagen und gemeistert verstehen leicht .

TATSACHE

  • Die Grundlagen der Programmierung zu kennen, hilft unabhängig von der Sprache. Mit Grundlagen meine ich hier Dinge, die nicht spezifisch für ein bestimmtes Paradigma sind. Dinge wie Algorithmus, Abstraktionsstufen, Isolation usw.

  • Wenn Sie die Grundlagen eines bestimmten Paradigmas (OOP, funktional usw.) gut kennen, können Sie leicht Sprachen lernen, die dasselbe Paradigma unterstützen. Man könnte sagen, wenn man eine Sprache gut kennt, kann man schnell Sprachen derselben Familie lernen.

  • Mit jeder Sprache, die in derselben Familie gelernt wird, wird mir die nächste viel leichter fallen. Ich wäre nicht überrascht, wenn diese Lernkurve exponentiell schneller wäre, wenn Sie mehr wissen.

MYTHOS

  • Wenn Sie zu einem neuen Paradigma wechseln, ist es nicht so hilfreich, eine Sprache des ersten Paradigmas zu kennen, wie eine Sprache in derselben Familie zu lernen. Abhängig vom Unterschied zwischen ihnen müssen Sie möglicherweise erst einige Dinge verlernen, bevor Sie vorankommen und das neue Paradigma wirklich verstehen können.

--- bearbeiteter letzter Abschnitt basierend auf Kommentaren ---

Tatsache...

  • Wenn Sie ein erstes Paradigma kennen können, lernen Sie das nächste ...

aber

Mythos

  • Sei nicht übermütig, es kann dich genauso gut verlangsamen oder für das dritte Paradigma überhaupt nicht helfen.
28
Newtopian

für jede ähnliche Sprache, ja

für Sprachen mit radikal anderen Paradigmen nicht so sehr

beispiel: Sie kennen C++, möchten Java lernen, ein Kinderspiel; Sie kennen VB.NET, Sie möchten Prolog lernen ... den ganzen Kuchen, möglicherweise drei oder vier Kuchen

14
Steven A. Lowe

Ich glaube, die kurze Antwort lautet: "irgendwie wahr, aber schwer zu überprüfen". Es ist sehr schwierig, die eng miteinander verbundenen APIs, Verwendungen, Redewendungen und Paradigmen (OO, funktional usw.) zu lernen als die eigentliche Syntax einer Sprache. Ich denke, die Sprache selbst ist leicht zu erobern, wenn Sie über fundierte Kenntnisse und Erfahrungen in Programmiergrundlagen und einige Compilerkenntnisse verfügen, diese jedoch aufgrund von Hilfsmitteln schwer zu beherrschen sind.

Ein klares Beispiel wäre, von einer Sprache in eine andere zu wechseln. C nach Java. Die Codesyntax ähnelt stark C-artigen Programmen, aber Sie müssen auch die Java APIs (Generika, Garbage Collection usw.) und höchstwahrscheinlich in unserer aktuellen "IT-Landschaft") kennen. Einige Frameworks von Drittanbietern (Spring, jUnit, Hibernate usw.), um etwas Nützliches für Unternehmen zu tun. Wenn Sie also zuvor C ausgeführt haben, ist die Sprachsyntax nicht das Problem, sondern der Rest.

Dies kommt von mir, der sich mit Java, C #, Javascript, HTML, CSS, Delphi usw. auskennt. Ich kenne möglicherweise nicht jeden Winkel und jede Ecke der von mir verwendeten Frameworks oder Bibliotheken, aber ich kenne mich aus und kann aufgrund dessen schnell lernen Meine Erfahrung mit anderen als früher. Für einen "schnellen Lernenden" ist alles wirklich Querdenken.

4
Spoike

Zu den Grundlagen der Informatik, die Sie kennen müssen, gehören nicht nur die mathematischen Grundlagen (Mengenlehre, Logik, Graphentheorie, Algebra, Informationstheorie, algorithmische Informationstheorie usw.), sondern auch eine Reihe von Programmiersprachen, jeweils mindestens eine Gruppe - dh ein Imperativ (möglicherweise mit OOP, aber dieses Bit ist nicht obligatorisch), eine eifrige Funktion, eine faule Funktion, eine logische, eine verkettete oder stapelbasierte.

Mit dieser Basis können Sie in kürzester Zeit problemlos eine bestimmte neue Sprache lernen. Wenn einige Teile fehlen, kann dies zu starkem Widerstand führen.

Und der beste Weg, die Sprache von innen nach außen zu lernen, besteht darin, einen Spielzeug-Compiler oder -Interpreter für eine signifikante Teilmenge davon zu implementieren (natürlich ohne Standardbibliothek - das ist der komplizierteste und langweiligste Teil einer Sprache).

3
SK-logic

Ich bin mir einig, dass gute Grundlagen in gewissem Maße hilfreich sind, und ich bin damit nicht einverstanden. Ein Punkt, der in den anderen Antworten fehlt, ist jedoch das Problem, die Redewendungen der Sprache aufzugreifen, und ich denke, um eine Sprache zu beherrschen, muss man sie idiomatisch schreiben.

Zum Beispiel können Sie Unmengen von vollständig korrektem C # schreiben, ohne jemals die Anweisung using zu verwenden, um Objekte automatisch zu entsorgen, aber in gut geschriebenem idiomatischem C # sehen Sie using {...} sehr viel. Ich kenne keine none-.Net-Sprachen, die dieses Konstrukt haben (obwohl ich nur sehr wenige andere kenne und mein Java ist ziemlich verrostet, so dass ich mich irren könnte), also kommt sogar ein Experte Von einer anderen Sprache, die diese Funktion nicht hat, muss diese Redewendung sozusagen von Grund auf neu gelernt werden.

2
Steve

Es ist eine wahre Aussage für eine Definition von "ziemlich gut" und "leicht".

Je besser Sie die Grundlagen verstehen, desto einfacher ist der Übergang von einer Sprache in eine andere. Wenn Sie ein Experte sind Java Programmierer, der ein solides Verständnis für objektorientierte Sprachen hat, sollten die grundlegenden Syntaxunterschiede zwischen Java und C # relativ sein) In ein oder zwei Wochen leicht zu beherrschen. Es wird länger dauern, um zu verstehen, wie die Funktionalität in allen zugehörigen Bibliotheken von einer zur anderen abgebildet wird, aber Sie werden wahrscheinlich in ein oder zwei Monaten einen guten Überblick über die Basisbibliotheken haben. Dann Es geht darum, die Fälle herauszufinden, in denen der Standardansatz für ein Problem in Sprache A nicht direkt in den Standardansatz in Sprache B übersetzt wird (dh Sie möchten LINQ in C # anstelle von JPA in Java verwenden) und sich damit vertraut zu machen in der neuen Sprache, in der Sie denken, anstatt in der alten Sprache zu denken und zu "übersetzen". Dies wird wahrscheinlich drei bis sechs Monate dauern, je nachdem, wie gut die Funktionen sind, die Sie normalerweise für Karten verwenden. Bei der Sechs-Monats-Marke der Experte Java Programmierer wäre wahrscheinlich eine vernünftige Effizienz nt und kompetenter C # Entwickler. Aber wie bei allem können Sie Jahre damit verbringen, alle komplizierten Details zu lernen, verschiedene Bibliotheken und Add-Ons zu beherrschen, die nicht Teil der Sprache sind, aber Teil des umgebenden Ökosystems, und sich im Allgemeinen als Entwickler in dieser Sprache zu verbessern.

1
Justin Cave

Ich würde sagen, es hängt ganz von der Begeisterung einer Person ab, die neue Sprache zu lernen. Wenn die Grundlagen gut sind und er verstehen kann, wie die neue Sprache etwas interpretiert, ist es ziemlich einfach, eine Sprache zu lernen.

Bestes Beispiel ist ich selbst. Ich habe mit einigen Sprachen gearbeitet, obwohl ich den größten Teil meiner Arbeit in C # erledigt habe, aber ich habe meine Karriere bei C begonnen und anschließend C++, Java, VB, PHP, Skriptsprachen, Perl usw. gelernt. Überall in diesem Semester hatte ich nie das Gefühl, diese Sprache nicht lernen zu können.

1
JPReddy

Ich fand es nie schwer, eine neue Programmiersprache zu lernen, im Gegenteil, es hat die meiste Zeit großen Spaß gemacht. Es gibt jedoch Sprachen, die ich angeschaut, aber nie verstanden habe, weil ich die Idee dahinter nicht verstehen konnte, wenn es welche gab. Ein Beispiel ist COBOL, ich habe nie verstanden, was in welche ABTEILUNG und ABSCHNITT gehen musste und warum. Andere Beispiele sind PHP und Groovy. Mit PHP Ich habe versucht zu verstehen, warum man es überhaupt brauchen würde, da es Perl gibt. Vielleicht kann es jemand erklären. Mit Groovy verstehe ich auch nicht ein bisschen von den Konzepten dahinter.

1
Ingo

Es hängt alles ab.

Ich weiß, das ist oft die Antwort ...

Aber was bedeuten Grundlagen ?? Viele Menschen, die Grundlagen für ein Paradigma haben (wie OO), haben sie nicht für andere Paradigmen (wie funktional).

Viele Leute, die aus OO] kommen und alle Designmuster kennen, haben möglicherweise keine Hinweise auf funktionale Designmuster oder Dinge wie Listenverständnis, Currying, Schwanzrekursion, Verschlüsse ...

Also JA: Wenn Grundlagen Grundlagen aller Paradigmen bedeuten.

In diesem Fall besteht das Problem darin, dass Javascript viele Paradigmen verwendet, wie z. B. prozedurale, OO und ein wenig funktionale und seltsame Bereiche, die von Java, c ++, ... stammen.

Die Grundlagen helfen in diesem Fall also nicht weiter, aber je mehr Muster Sie in Ihrer Toolbox haben, desto einfacher wird es, hier mehr Grundlagen zu erlernen und trotzdem in eine andere Sprache zu konvertieren.

1
Peter

Vergessen Sie nicht, dass die Kunst der Computerprogrammierung die Kunst ist, genau das zu bleiben, was Sie meinen. Daher ist jede Möglichkeit, dem Computer mitzuteilen, was zu tun ist, von Java über den Zugriff auf Excel bis hin zu Visual Fortran), eine Programmiersprache.

Und einige Sprachen sind einfach schlecht. IMHO Excel und Basic sind schlechte Sprachen; Java und C++ sind gute Sprachen. FileMaker-Skripte sind eine schreckliche Sprache. HTML kann ausgezeichnet sein, wenn Sie nicht schlampig sind.

Kannst du es lernen? Wenn es gut ist, ja. Wenn es schlecht ist, hängt es von Ihrer Ekelschwelle ab. Dinge, die dich zum Kotzen bringen, sind schwer zu lernen.

Verpflichten Sie sich nicht bei der Verwendung von Sprache X in einem Projekt, es sei denn, Sie haben Sprache X bereits gesehen und damit gespielt.

0
Andy Canfield

Die Antwort lautet: "Dies ist eine Tatsache, kein Mythos!"

Ich bin genau wie du, ich habe auch in verschiedenen Technologien gearbeitet, nämlich. Java, .net und arbeitete kürzlich mit iPhone, Android und Blackberry.

Das Netz ist voller Ressourcen. Gehen Sie einfach die Informationen durch, verstehen Sie das, implementieren Sie sie und gehen Sie weiter.

In der Tat "Technologie ist für Entwickler gemacht, nicht Entwickler sind für Technologien gemacht, Technologien ändern sich, aber Entwickler nicht".

:) :)

0
necixy