Wenn die Konkurrenz Lingua Obscura für die Entwicklung verwendet (warum), sollte ich mir Sorgen machen? [geschlossen]


16

Ich las Paul Grahams Aufsatz - Beating The Averages (2003) und hier ist, was er zu sagen hatte:

Je mehr IT-Flair die Stellenbeschreibungen hatten, desto weniger gefährlich war das Unternehmen. Die sichersten waren diejenigen, die Oracle-Erfahrung wollten. Sie mussten sich nie darum kümmern. Sie waren auch sicher, wenn sie sagten, sie wollten C ++ - oder Java-Entwickler. Wenn sie Perl- oder Python-Programmierer wollten, wäre das ein bisschen beängstigend - das klingt nach einer Firma, in der zumindest die technische Seite von echten Hackern betrieben wird

Nun, das ist ein datierter Aufsatz. Ich verstehe jedoch nicht, wie die Verwendung einer nicht alltäglichen Sprache (C / C ++ / Java, C #) weniger gefährlich wäre . Wenn die Programmierer einer Organisation die Entwicklungssprache sehr gut beherrschen, sollten sie auch in der Lage sein, Code in angemessenem Tempo zu entwickeln. In der Tat, wenn Sie eine nicht alltägliche Sprache verwenden, werden Sie keine Wartungs- / Verbesserungsprobleme im Gesicht haben, da auf lange Sicht nicht zu viele Programmierer zur Verfügung stehen würden?

Ich bin damit einverstanden, dass einige Sprachen es Ihnen ermöglichen, relativ früher als andere zu starten. Aber macht der Aufsatz / Kommentar von Paul Graham im Jahr 2012 und darüber hinaus Sinn? Wenn ein Startup typische IT- Sprachen für die Entwicklung verwenden sollte, warum sollte der Wettbewerb weniger besorgt sein?

Ich verstehe nicht, wie die Sprache selbst einen Unterschied macht. IMHO ist es die Erfahrung der Entwickler mit der Sprache, die zählt, und der Verfügbarkeit von Frameworks, so dass Sie DRY (wiederholen Sie sich nicht) nicht nur in einer bestimmten Sprache codieren.

Was fehlt mir? Bedeutet dies, dass Startups besser Sprachen ohne IT-Charakter auswählen (auch wenn die Entwickler mit diesen Sprachen möglicherweise sehr vertraut sind)? Was sind die (Programm-) Wirtschafts- / Marktkräfte hinter dieser Behauptung?

PS: 'lingua obscura' soll niemanden verletzen :)


4
Die Kluft zwischen den Warensprachen und den Machtsprachen ist immer noch gigantisch. Es ist immer noch möglich, das Java- oder ähnliche Entwicklungstempo mit Lisp in Größenordnungen zu übertreffen.
SK-logic

4
@ SK-logic - Gibt es Daten, um das zu sichern?
PhD

2
@Nupul, es gibt fast keine formalen Untersuchungen zur Produktivität von Programmiersprachen, daher kann ich mich nur auf anekdotische Beweise und meine eigenen Erfahrungen verlassen. Ich habe nur ein paar Papiere gesehen, ich werde versuchen, sie später auszugraben. Was Lisp betrifft, unterscheidet es sich von den anderen Sprachen in einer Weise, dass es billig und einfach buchstäblich in jede Sprache umgewandelt werden kann. Es vereint also alle Eigenschaften und Vorteile aller anderen Sprachen, während die Nicht-Macht-Sprachen fest und eng sind. Es kann die Produktivitätslücke erklären.
SK-logic

8
@ SK-Logik wirklich? Trotz der gegenteiligen Argumente von LISPer wurden nur sehr wenige Wertprogramme mit einem Lisp erstellt - mit dem möglichen Ausschluss von Emacs- und fast keinen größeren Websites - mit dem Ausschluss von ViaWeb um 1997. Also, Trotz der Behauptungen einer unglaublichen Produktivitätssteigerung sind die meisten Befürworter von LISP alle gesprächig und gehen nicht spazieren. Sie haben nur akademisches Forschungsmaterial (mehr über Forschung und weniger über Produktionsqualität), Hobbyprojekte und einige interne Dinge, die in einigen Unternehmen verwendet werden.
Hejazzman

2
@ SK-logic Das Problem ist das Fehlen statischer Typisierung, obwohl Sie eine statisch typisierte Sprache in Lisp implementieren können.
BenjaminB

Antworten:


16

Die Toolchain ist ein Symptom.

Wenn ein Unternehmen Oracle auswählt, ist dies ein Hinweis auf:

  • Viel Geld zum Herumwerfen
  • Großunternehmen
  • Tief verschachtelte Organisationsstruktur mit vielen Managementebenen
  • Das Unternehmen wird von Anzügen geleitet: entweder von Führungskräften oder von Marketing und Vertrieb
  • Erstellt große monolithische Softwareprodukte mit riesigen Codebasen
  • Formale Prozesse für alles

Wenn ein Unternehmen Python auswählt, ist dies ein Zeichen von:

  • Kleine junge Firma
  • Kein Geld zu sparen
  • Flache Hierarchie
  • Das Unternehmen wird von Programmierern geführt
  • Erstellt kleine Einzweckprodukte mit kleinen Codebasen
  • Meist informelle Prozesse

Wenn sich diese beiden treffen, besteht die Strategie des Großunternehmens darin, Risiken zu vermeiden, ihre Dynamik zu nutzen und den Wettbewerber zu überbieten. Die Strategie der kleinen Konkurrenz besteht darin, zuerst die Konkurrenz auf dem Markt zu schlagen und dann das überlegene Produkt zu bleiben. Wenn das kleine Unternehmen die richtigen Schlachten wählt, kann es das große Unternehmen leicht übertreffen, indem es einfach schneller und reaktiver ist und die Tendenz des großen Unternehmens ausnutzt, Risiken zu vermeiden.


1
Das Unternehmen, das Oracle einsetzt, wird wahrscheinlich in fünf Jahren noch da sein!
James Anderson

3
@JamesAnderson: je nach Markt ja. Wenn sie versuchen, das nächste Facebook zu werden, wahrscheinlich nicht; Wenn es sich um eine große Versicherungsgesellschaft handelt, dann wahrscheinlich ja. Wenn Sie jedoch eine große Versicherungsgesellschaft sind, brauchen Sie sich vor einem Autowerkstatt-Startup kaum zu fürchten.
tdammers

Es hört sich so an, als ob ich für einen Python / Ruby / Scala / Clojure-Shop arbeiten möchte ... mmm. Aufgrund meiner Erfahrung ist das Upgrade von Orten, die sich ausgezahlt haben, in der Regel sehr langsam. Nicht sicher warum. Der Schmerz, eine Version vorwärts zu bewegen, ist oft leiser als mehrere Versionen vorwärts zu bewegen. Bezahlte Software bietet "normalerweise" eine Migration an, in den meisten Fällen erfolgt diese Migration jedoch von Version zu Version.
Rig

25

Die Wahl einer obskuren Sprache würde auf ungewöhnliches technisches Selbstvertrauen in einem Startup hinweisen. Ein Unternehmen, das gewillt ist, die allgemeine Weisheit aufzugeben, weiß möglicherweise etwas über Softwareentwicklung, was die meisten Unternehmen nicht wissen. Andererseits könnten sie nur Wichser sein.


1
Tatsächlich, das ist genau das, was Graham Mittel „ die wie ein Unternehmen zu klingen fangen , wo die technische Seite, zumindest durch echten Hacker laufen wird “ - ein Unternehmen , in dem zumindest die Technologen vielleicht klug genug für ihn , einen echter Wettbewerb zu sein.
Ross Patterson

8
Heutzutage sind es meistens Wichser, denn "Wählen einer dunklen Sprache" ist die Modeerscheinung unter Wichsern und Dilettanten.
Hejazzman

2
Es ist auch ein Hinweis darauf, dass das Unternehmen nach innen schaut und sich darauf konzentriert, wie man baut, und nicht darauf, was man baut. Solche Unternehmen ziehen nicht viele Kunden an.
James Anderson

13

Ich sehe die Kommentare von PG mehr über die Einstellung als über die Besonderheiten der Sprache. Menschen mit einer internen IT-Denkweise gehen auf Nummer sicher. Sie setzen risikoarme Technologien ein, verfügen über Prozesse zur Risikominimierung und verfolgen eine risikoarme Strategie. Sie sind zu beschäftigt, sich um ihr eigenes Mittagessen zu sorgen, um deins zu essen.

Menschen an der Blutungsgrenze (Python 2003) sind diejenigen, um die man sich Sorgen machen muss. Sie sind hungrig. Sie gehen Risiken ein. Sie sind intellektuell neugierig. Derselbe Typ, der lange wach bleibt und eine aufregende neue Sprache lernt, ist der Typ, der Ihre Branche möglicherweise auf den Kopf stellt, bevor Sie dies tun.


4
Natürlich können sie auch ganz von einem der Risiken verschluckt werden, die sie eingegangen sind ...
Michael Borgwardt

3
"" "Menschen an der Blutungsgrenze (Python 2003) müssen sich Sorgen machen. Sie sind hungrig. Sie gehen Risiken ein. Sie sind intellektuell neugierig Keine Ahnung von Entwicklungspragmatik.
Hejazzman

2
Beides stimmt. Es ist ein Spiel mit Zahlen. Aber nehmen Sie das genaue Gegenteil. Manchmal explodieren Ausreißer. Manchmal gelingt es ihnen. Aber würden Sie jemals befürchten, dass ein Konkurrent mit COBOL nach Ihnen kommt?
MathAttack

13

Graham bedeutet für ihn als Konkurrent weniger gefährlich, nicht nur weniger gefährlich. Sein Standpunkt ist nicht, dass Java (oder C ++ im Jahr 2003 oder COBOL im Jahr 1980) weniger gefährlich ist, sondern dass es normal ist und dass Unternehmen, die nach solchen Fähigkeiten suchen, mit hoher Wahrscheinlichkeit nur durchschnittliche Konkurrenten sind. Unternehmen, die nach starken Talenten für unbekannte (oder richtigerweise leistungsstärkere und weniger bekannte) Sprachen suchen, sollten sich diese jedoch ansehen.

Und ja, es macht heute vollkommen Sinn. Es machte Sinn, lange bevor Graham es schrieb, wir sprachen damals nur nicht über Java.


6
Wenn wir heutzutage nur nicht über Java reden müssten.
DeadMG

8

Mal sehen, welche Sprachen zuerst von erfolgreichen Startups verwendet wurden. Eine unwissenschaftliche Liste, von der Spitze meines Kopfes. Richtige randomisierte Forschung wäre besser, wenn jemand die Energie hätte.

  • Facebook: PHP
  • Stapelaustausch: C #
  • Google: Java und Python
  • Twitter: Ruby on Rails

Wir kommen daher zu dem Schluss, dass Facebook und Stackexchange keine Bedrohung für ihre Konkurrenten darstellten. Nicht sehr überzeugend.


Mal sehen, ob Paul Graham das heutzutage glaubt. Er war Mitbegründer von YCominator, das Startups finanziert. Die Homepage listet einige ihrer erfolgreichen Startups auf. Ich habe sie der Reihe nach durchgearbeitet und sehr schnell versucht, die Sprachen zu recherchieren, die sie in den frühen Tagen verwendeten.

Nun, es gibt Anzeichen für eine Präferenz für relativ dunkle und wohl mächtige Sprachen. Aber auch Flash, PHP und klassisches ASP werden aufgelistet.


Es ist ein Aufsatz . Es ist ein hyperbolischer Schub für eine relativ undurchsichtige Sprache, die er liebt, mit dem grundsätzlichen Rat, dass Startups ihre Technologie lieben und sich so schnell wie möglich bewegen sollten. Meinetwegen.


3
Reddit hat in Lisp angefangen , aber sie haben das Ganze ziemlich früh in Python umgeschrieben, weil niemand Lisp verstehen konnte.
Mason Wheeler

Google verwendet viele Sprachen für viele verschiedene Dinge. Sie verwenden C ++ für die meisten ihrer Kernprodukte wie Search, Chrome usw.
mike30

@Mike Die Frage betrifft Startups. Als Google ein Startup war, wurden als erste Sprachen Java & Python verwendet.
MarkJ

6

Ein durchschnittlicher Entwickler verwendet durchschnittliche Tools, da er den Wert leistungsfähigerer Tools nicht sieht:

„Solange unser hypothetischer Blub-Programmierer das Energiekontinuum nach unten schaut, weiß er, dass er nach unten schaut. Sprachen, die weniger mächtig sind als Blub, sind offensichtlich weniger mächtig, weil ihnen einige Funktionen fehlen, die er gewohnt ist. Aber wenn unser hypothetischer Blub-Programmierer in die andere Richtung blickt, das Machtkontinuum hinauf, merkt er nicht, dass er nach oben schaut. Was er sieht, sind nur seltsame Sprachen. Er hält sie wahrscheinlich für genauso mächtig wie Blub, aber mit all den anderen haarigen Dingen, die auch reingeworfen werden. Blub ist gut genug für ihn, weil er in Blub denkt. “- Paul Graham, Beating the Averages .

(Betonung meiner.)

Je mächtiger die Sprache, desto weniger Entwickler werden sie verwenden und desto seltener wird sie. Die Popularität ist daher ein guter Maßstab dafür, wie weit die Macht einer Sprache vom Durchschnitt entfernt ist. Je undurchsichtiger die Sprache ist, desto besser ist die Chance, dass der Entwickler weiß, was er tut, und dass er sie aus gutem Grund gegenüber seinen gewöhnlichen Konkurrenten ausgewählt hat - und ein versierter Konkurrent ist gefährlich.


3
Das muss gar nicht so sein. Werkzeuge, Werbung, vorhandene Bibliotheken und hochwertige Lehrmaterialien können ebenfalls die Popularität einer Sprache verändern.
DeadMG

@DeadMG Ja, natürlich ist Ausdruckskraft nicht der einzige Faktor. Ich schätze, ich bin stillschweigend davon ausgegangen, dass alle Sprachen des allgemeinen Bewusstseins in Bezug auf Marketing, Tools und Dokumentation ungefähr gleichwertig sind. Sonst wären sie überhaupt nicht vernünftig zu vergleichen. Zur Hölle, auch persönliche Vorlieben haben viel damit zu tun. Wenn Sie wissen, dass Haskell für eine Aufgabe besser ist, aber Sie C wirklich mögen, dann könnten Sie etwas in C programmieren, um das reinste Problem zu lösen.
Jon Purdy

Ich glaube, ich bin stillschweigend davon ausgegangen, dass alle Sprachen des allgemeinen Bewusstseins in Bezug auf Marketing, Tools und Dokumentation ungefähr gleichwertig sind ... - Und Sie würden sich irren. So falsch, in der Tat.
Jim G.

1
@JimG. Können Sie ein konkretes Beispiel nennen? In Anbetracht des TIOBE-Index scheinen alle Top 10 und die meisten Top 50 in diesen Bereichen vergleichbar zu sein. Außerdem sind die Leute in der Lage, Merkmalsvergleiche zwischen Sprachen anzustellen, die sich in ihrer Ausdruckskraft stark unterscheiden. Warum also nicht auch für die anderen Aspekte das Gleiche tun?
Jon Purdy

5

Die Wahl der Sprache fällt einem Startup schwer. Viele sehr gute Startups wählen "gemeinsame" Sprachen, um die Markteinführung zu beschleunigen, die Vertrautheit des Gründers zu gewährleisten und die Einstellung von Mitarbeitern für die Zukunft zu vereinfachen.

Die Wahl einer weniger verbreiteten Sprache ist ein gutes Zeichen. Sie sind bereit, die Entwicklung ernst zu nehmen und versuchen, spezialisierte Programmierer einzustellen. Dies sind jedoch nur Signale. Ein Startup ist mehr als nur eine Sprachauswahl.

Unterm Strich sollte Ihre Sprachwahl in Ihrem Kontext richtig bewertet werden. Facebook zum Beispiel hat mit PHP, das im Allgemeinen nicht als sehr skalierbare Sprache angesehen wird, gute Arbeit geleistet


1
+1 wenn nur für das Understatement "Facebook hat OK".
MarkJ

5

Fragen Sie die besten und schlechtesten Programmierer, die Sie kennen, nach beliebigen Kriterien, welche anderen Sprachen sie kennen. Schreiben Sie jetzt eine Stellenanzeige, um die ersteren anzuziehen, und Sie haben Ihre Antwort. Selbst wenn Ihre App in C ++ ist, werden Sie eine bessere Klasse von Programmierern bekommen, wenn Sie diejenigen einstellen, die Sprachen beherrschen, die nicht in der Schule unterrichtet werden.


2
-1: Huh? Entschuldigung, du hast mich verloren.
Jim G.

4

Es gibt zwei verschiedene Dinge, über die Sie sich Sorgen machen sollten, wenn ein Konkurrent eine ungewöhnliche Sprache verwendet:

  • Produktivitätsvorteil - Es gibt Vor- und Nachteile ungewöhnlicher Sprachen. Vorausgesetzt, die Konkurrenz hat sich für ihre jeweilige Problemdomäne gut entschieden, haben sie möglicherweise einen echten Produktivitätsvorteil. Die Möglichkeiten der Metaprogrammierung in Lisps bieten Ihnen wahrscheinlich überall dort einen echten und erheblichen Vorteil, wo Sie eine erhebliche Menge an automatischer Codegenerierung im laufenden Betrieb durchführen müssen.
  • Kultureller Vorteil - Wenn ein Unternehmen eine ungewöhnliche Sprache verwendet, die für große Hacker von Interesse ist, sind sie wahrscheinlich in der Lage, große Hacker anzuziehen und zu halten. Unternehmen leben und sterben durch die Qualität ihrer Mitarbeiter. Wenn sich dies in einem langfristigen Talentvorteil niederschlägt, kann dies von großer Bedeutung sein.

Diese beiden Vorteile können in einer bestimmten Situation nicht zutreffen. Zum Beispiel könnte ein Startup leicht eine Sprache annehmen, "weil es cool ist", ohne wirklich zu überlegen, ob es die richtige Wahl ist. Sie können leicht Einstellungsfehler machen. Sie können sich leicht in den Fuß schießen, indem sie eine "mächtige" Sprache missbrauchen.

Aber wenn ein Konkurrent eine ungewöhnliche Sprache auswählt und sie gut verwendet , haben Sie möglicherweise eine erhebliche Bedrohung in den Händen.

Ich denke, dieses Prinzip ist ziemlich zeitlos und genauso wahr wie 2003 - spezifische Sprachen und Paradigmen mögen kommen und gehen, aber die Idee, eine leistungsfähige, ausdrucksstarke Sprache zu wählen, die zu Ihrer Problemdomäne passt, über eine allgemeine, sichere Sprache wird wahrscheinlich immer eine ernsthafte Überlegung verdienen.


0

Wenn Ihre Kunden nicht gesperrt sind, dann ja . Sie sollten sich Sorgen über Konkurrenten machen, die leistungsfähige Sprachen verwenden.

Java, C #, C ++ sind vergleichsweise ausführlich und weisen relativ langsame Bearbeitungs- / Testzyklen auf. Dies begrenzt die Geschwindigkeit, mit der selbst die schnellsten Entwickler Funktionen bereitstellen können. Ausdrucksstärkere Sprachen mit leistungsstarker integrierter Metaprogrammierung und null Kompilierungszeit ermöglichen es erfahrenen Entwicklern, Features so schnell wie möglich zu erstellen. Wenn Sie in einem Wettlauf um Marktanteile mit einer enormen Belohnung für den Gewinner sind, ist es sinnvoll, die allerbesten Entwickler einzustellen, die Sie finden können, und die Sprache zu verwenden, mit der sie am schnellsten arbeiten können. Sie können sich später um die Skalierbarkeit kümmern.


1
-1: C #, wenn mit Visual Studio-, Resharper-, LINQ- und .NET 4.0-Bibliotheken geschrieben, langsame Bearbeitungs- / Testzyklen im Vergleich zu anderen Sprachen?
Jim G.

1
@Jim: Ich bin mir nicht sicher, was Ihre Komparatoren sind, aber verglichen mit Ruby, Groovy, Clojure und anderen modernen dynamischen Sprachen, die ich mit C # verwendet habe, ist C ++ und Java in Bezug auf Entwicklungsstil und Iterationsgeschwindigkeit definitiv näher. YMMV, aber ich denke nicht, dass Ihre Ablehnung besonders verdient ist - die Charakterisierung des OP ist im Großen und Ganzen gerecht.
Probieren

@ Jim G., ja, im Vergleich zu Common Lisp ist der C # -Bearbeitungs- / Testzyklus langsam. Sie können ein laufendes System nicht ändern. Und Sie müssen viel mehr Code in C # schreiben, was die Dinge noch verlangsamt.
SK-logic

1
Nein, zum Beispiel erlaubt Erlang Laufzeitänderungen und ist eine kompilierte Sprache.
Ricky Clarkson

2
@JimG., Common Lisp ist eine kompilierte Sprache (die meisten Implementierungen sind reine Compiler). Inkrementelle Kompilierung erlaubt es, die gleichen Tricks wie Dolmetscher zu machen, während sie mit einer separaten Kompilierung kaum möglich sind.
SK-logic
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.