Frage

Ich bin über einen Prototyp für ein Technologie-Startup zu produzieren, die ich gerade beigetreten bin, und ich versuche, die Sprache zu verwenden, um zu entscheiden. Es wird ein einfaches Web-Tool mit einer MySQL-Datenbank im Hintergrund und einige AI Sachen dazwischen los sein. Ich habe Ruby und PHP einen angemessenen Betrag in der Vergangenheit verwendet, aber frage mich, ob ich besser dran, wenn man mit Python sein könnte oder sogar Perl. Meine Hauptprogrammiererfahrung mit C / C ++ / Java, aber ich fühle mich wie ich für etwas gehen will, dass mein Leben so einfach wie möglich machen, da ich nur einen Prototyp zu entwickeln.

Ich denke, was ich suche ist:

  • Geschwindigkeit der Entwicklung
  • vorhandene AI-Bibliotheken (z SVM, neuronale Netze, Bayes-Klassifizierer)
  • einfache mit einer Web-Schnittstelle interagieren

Wer irgendwelche Gedanken dazu?

War es hilfreich?

Lösung

Prototype oder nicht, wenn Sie große Mengen an Zahlen Knirschen, können Sie die Geschwindigkeit eines Java oder C / C ++ müssen zumindest für die AI Teile. Ich weiß nicht wirklich genau das, was Sie tun, aber eine Menge AI Zeug ist rechenintensiv. Sie können Python VS C einen Unterschied von 10 Minuten bis etwa 2 Stunden oder mehr (oder von einem Tag bis zu einem Monat) finden machen.

Wahrscheinlich die beste Wahl ist ein Hybrid-Ansatz. Java / C ++ oder etwas für die AI (ich nur Java sagen, weil es eine Menge von Bibliotheken hat, ich habe sogar ein Buch über Data Mining, die mehrere Bibliotheken in Java diskutiert, die frei verfügbar sind und einige der Techniken ausführen). Und Python / Ruby-/ Perl für alles andere (wie die Web-Teile).

Ich bin zögerlich PHP zu empfehlen, weil man nie wissen, was Sie tun können. PHP scheint wirklich auf dem Netz zu glänzen und für Web-bezogene Dinge, aber wenn Sie nicht über das Web benötigen verwendet es als etwas umständlicher zu sein scheint (obwohl ich Verweise auf PHP gesehen hat wie ein Perl / Python / etc verwendet werden. Als normalen Skriptsprache von einigen Leuten).

Die Wahl zwischen Python / Ruby-/ Perl ist fast eine Frage des Geschmacks. Abgesehen davon, dass Perl CPAN hat, die über allen anderen Python und Ruby jetzt haben. Da Sie in einem Anfang, die große Auswahl an Modulen auf CPAN sind, die Sie gerade zusammen schlagen können, kann früher in immer getan Dinge Wert zu Ihnen. Ich persönlich mag Python über Perl (ich finde Perl Objektsystem hässlich sein, wenn Sie Ihre eigenen Objekte bauen, und manchmal dauert es mich ein wenig, um herauszufinden, wie Code, den ich schrieb Monaten arbeitet vor). Aber ich kann den Wert von CPAN nicht leugnen.

Also kurz gesagt, Sie brauchen wahrscheinlich eine Leistung Sprache für einige der AI Sachen und die Leichtigkeit und Geschwindigkeit der Entwicklung einer Skriptsprache für alles andere denn ein Start-up ist alles über das Produkt so schnell wie möglich zu erledigen und Schlagen Ihre Konkurrenten auf dem Markt. Ich würde gerne Python empfehlen, aber auf das, was ich weiß, über Start-ups, müssen Sie CPAN in Ihrem Entscheidungsprozess bewerten. Nur die Lage, eine Reihe von Modulen zu schlagen zusammen, dass tun, was Sie schnell von großem Wert in einem Anfang sein sollen.

Ich möchte auch hinzufügen, dass Perl und Python (ich bin zu Ruby nicht sicher, aber ich denke, dass zu) eher leicht C-Code aufrufen können. So könnten Sie C oder C ++ Bibliotheken verwenden, indem eine Reihe von Bindungen an die Sprache zu schaffen. Sie könnten auch versuchen, die ganze Sache in Perl / Python / Ruby-Schreiben, und wenn es zu langsam ist, dass ein Teil in C oder C ++ umgeschrieben und von der Skriptsprache aufrufen. Mit der ganzen Sache starten wie folgt umschreiben kann sehr teuer sein in Hinblick auf die immer etwas getan. Auch da Sie am bequemsten in C oder C ++ oder Java es kann sich lohnen, nur geht es von Anfang an.

Andere Tipps

Alle drei Ruby, Python und Perl sind gut für die schnelle Entwicklung, Prototypen und Web-Anwendungen. Ich vermute, aus Ihrer Frage, dass der wesentlichste Teil dieses Projekt das KI Stück ist. Perl hat auf CPAN eine ganze Reihe von AI-bezogenen Bibliotheken haben. Schauen Sie sich die AI-Namespace aus für eine Abtastung. Es gibt auch Module in anderen Namespaces so stellen Sie sicher, für bestimmte Dinge wie „Bayes“ oder „SVM“ zu suchen.

Ich weiß nicht viel über die AI-Bibliothek Optionen für Python oder Ruby. Meine Empfehlung ist, für jeden von Perl, Python ein oder zwei Tage und einige ernsthafte Forschung auf den Bibliotheken zu nehmen, und Ruby. Da Sie bereits Rubin vor verwendet haben, wenn das die Bibliotheken, die Sie benötigen, ist es ein Kinderspiel, und Ruby ist sicherlich Web-freundlich.

Was die Web-Seite geht, für Python, ich habe viele gute Dinge über Django gehört . Für Perl, würde ich empfehlen, einen Blick auf Katalysator rel="nofollow.

Sie werden bemerken, ich ignoriert PHP habe. Das ist etwas, was ich versuche, so viel wie möglich zu tun;)

Sie wählen Sie eine Sprache, weil es das richtige Werkzeug für den Job ist, aber Sie haben nicht gesagt, uns, was der Job noch ist. Wir wissen nicht, welche Arten von Bibliotheken, die Sie benötigen, was andere Leute in der Industrie Verwendung für die gleiche Arbeit, und so weiter. Die meisten Menschen scheinen etwas mit völligen Unkenntnis der zu empfehlen, was Sie wirklich tun müssen, was bedeutet, sie haben wirklich keine Ahnung, wie Ihnen helfen.

Wie Sie bereits hingewiesen haben:

  • Wenn Sie die einzige Person, tun Sie Ihre Aufgabe in der Sprache X sind, können Sie eine harte Zeit bekommen Hilfe von jemand anderem haben werden. Finden Sie heraus, was andere Leute haben bereits verwendet, um ähnliche Aufgaben ausführen.

  • Wenn alle guten Bibliotheken für Ihre Aufgabe in einer anderen Sprache sind, wirst du haben viele Räder neu zu erfinden. Statt Ihre Frage, fragen, um welche Bibliotheken die wichtigen Teile Ihrer Aufgabe zu tun, dann die Forschung. „AI“ ist viel zu groß von einem Thema etwas zu empfehlen.

  • Wenn niemand bei der Arbeit der Sprache kennt die Sie verwenden möchten, auch wenn es eine Rapid-Prototyping-Sprache ist, werden Sie die Geschwindigkeit verlieren, da sie die Sprache zu lernen haben. Das Erlernen einer Sprache ist mehr als die Syntax zu wissen; es ist ihre Idiome, Bibliotheken, Dokumentation zu wissen, und vieles mehr. Was wissen die Leute bei der Arbeit schon? Was werden sie tolerieren?

  • Wollen Sie wirklich Ihr Leben leichter machen, oder machen Sie es für Ihre Kunden einfacher? Diese Dinge sind manchmal uneins, so sollten Sie prüfen, ob Sie wirklich den Wert der Kundenbedürfnisse zu liefern. Prototypen scheinen oft in den Produktionscode zu drehen, so dass, sobald Sie anfangen, sind Sie oft mit ihm stecken.

Das einzige, was ich wirklich kann kommentieren, ist dies: PHP ist bascially eine DSL für das Netz, während die anderen drei (Perl, Ruby, Python) mehr Allzweck-Sprachen sind, die keine bestimmte Domain haben, obwohl alle auf jeden Fall sind Web-fähig.

In Bezug auf Ihrem zweiten Punkt, denke ich, PHP wahrscheinlich die schlechteste Wahl aus Ihrer Liste wird.

AI? Auf jeden Fall LISP

Ich denke Java würde Ihr Leben am einfachsten.

  • Geschwindigkeit der Entwicklung -. Sie sagen, Sie mit ihm bereits vertraut sind

  • bestehende AI Bibliotheken - check out Joone

  • Leichtigkeit, mit einer Web-Oberfläche in Wechselwirkung zu treten -. Servlets, JSP, zu viele Web-Frameworks zur Liste

Java integriert auch leicht mit MySQL JDBC verwenden.

ich mit den anderen Antworten zustimmen, dass Java empfehlen, vor allem, wie Sie es Geschwindigkeit in der AI-Code und für die Bibliotheken usw. müssen die verfügbar sind.

Eine Kombination von Java (Servlets) und JSP wäre wahrscheinlich gut funktionieren.

Doch der Grund für das Schreiben dieser Antwort ist auf den meisten empfehlen:

Gehen Sie mit dem, was Sie wissen.

Neue Sprachen oder diejenigen, die Sie „Art“ Know sind ideal für lustige Sachen, und sogar für einige Entwicklungsprojekte und Prototyping. Aber wenn Sie brauchen etwas, das auf lange Sicht für Sie arbeiten, verwenden Sie die beste Sprache für die Aufgabe, die Sie bereits kennen. In diesem Fall denke ich (aus Ihrer Post), es würde Java sein.

Auch - es ist ein Prototyp jetzt, aber ich kann fast garantieren, dass, wenn es funktioniert, wird es der Standard Beginn der eigentlichen Anwendung werden. Ich bezweifle wirklich haben Sie den Luxus der Zeit, die Anwendung von Grund auf in einer anderen Sprache neu zu schreiben, so noch einmal - mit, was Sie wissen, wird jetzt Dividenden später zahlen, wenn sie „Zeitdruck“ Sie und Sie müssen liefern

.

Cheers,

R

ich denke, Perl wäre der Weg zu gehen. Schauen Sie sich Moose für Perl OOP, und wie für die anderen Bibliotheken Sie suchen, ich bin sicher, dass Sie einige von ihnen auf CPAN finden (vielleicht so etwas wie die Bayes-Module )

Wenn Sie auf die Unix-Stack / Umgebung gewöhnt sind, würde ich für Python gehen -. Nett und einfach

EDIT: Sie können die Zahlenverarbeitung Teil in C oder C ++ implementieren und ein Modul machen in Ihrem Python-Code zu verwenden. Auf diese Weise erhalten Sie eine schnelle Zahlenverarbeitung Code und einfach zu programmierende Kleber.

Lisp wurde erwähnt, aber ich denke, Schema (insbesondere plt-scheme ) in mancher Hinsicht als gute Wahl als Rubin / Python / Perl / PHP. Es ist nicht so viele gute Bibliotheken wie einige von denen haben, die ein Minus ist, aber die meisten Systeme haben ausgezeichnete ffi (Fremdfunktionsschnittstelle), die es trivial macht externe (C-Code) Bibliotheken zu integrieren. Eine weitere Stärke der Regelung ist sein Leistungsprofil; Sie können oft erhalten in der Nähe von C-Code-Typ Leistung auf Zahlenverarbeitung Zeug.

smalltalk, Meer und eine Edelstein-Objektdatenbank:

Sie können einen Blick auf GLASS nehmen wollen. Bessere Web als Rubin, kein ORM und die beste Modellierungssprache.

Ich würde zweite einen Blick auf Grails nehmen. Es ist auf jeden Fall einfach einzurichten und erhalten innerhalb von einer Stunde zu arbeiten, und Sie haben immer noch die Leistung von Java unter.

Ich stimme auch mit denen, die dafür sorgen, sagen Sie die Straße denken nach unten. Ich habe die Empfänger Art und Weise gewesen zu oft von denen, die nicht hatten.

Wenn es nach mir ginge, würde ich das Ganze in Python schreiben, dann das Profil und die Engpässe in Pyrex . Wenn Sie die Entwicklung komplexer AI-Typ Algorithmen, ist es (1), die in einer Hochsprache zu entwickeln, so dass Sie schnell viele verschiedene Ansätze ausprobieren können, und (2) nützlich, um eine Referenz-Implementierung in einer Hochsprache müssen testen Sie die C / C ++ Implementierung gegen. Ich benutze Python / Pyrex auf diese Weise die ganze Zeit und es funktioniert gut für mich.

Wenn Sie einen schnellen und schmutzigen Prototyp Schüren sind, dann ist es wahrscheinlich in Ihrem Interesse, um etwas zu haften Sie bereits wissen, vor allem, wenn der Prototyp ein anderes Stück Phantasie Funktionalität zu zeigen, ist; Leistung viele nicht eine massive Sorge hier.

Versuchen mit Python Mod_python. Als Sprache, es ist eine Menge großen maschinelles Lernens und Verarbeitung natürlicher Sprache Module bekommen, und es ist wirklich einfach zu lesen, lernen und verwenden.

In Anbetracht, dass es nicht eine einfache CRUD app, Java könnte eine gute Option sein. Schauen Sie sich auf Grails ( http://grails.org/ ) bietet viel des Gerüstes und Code-Generierung, dass ein Framework wie Schienen der Fall ist, sondern bietet eine nahtlose Integration mit jeder anderen Java-Bibliothek oder Rahmen gibt.

PHP oder auch SSI wäre meine Wahl für das Prototyping in diesem Fall sein. Meine Überlegung: Ich habe nicht über ein Template-System kümmern, da sie beide Systeme Templating. Keine Zeit verschwendet Sinn auf einem Template-System für nur Prototypen zu entscheiden. SSI insbesondere ist eine überzeugende Wahl, Sie immer noch Ihre Auswahl an Sprachen für die CGI-Verarbeitung haben, und wie für Nicht-Atom-Daten zurückgegeben, können Sie JSON emittieren, und dann die Benutzeroberfläche Schleife über die zurückgegebene Datenstruktur unter Verwendung von Javascript aktiviert ist.

Etwas, das Gedächtnis für Sie verwaltet. Sie behaupten, es ist die Technologie, Veränderung, die die größte Steigerung der Produktivität gibt. Ich denke, Pound-for-pound c # unglaublich schwer zu schlagen.

In Bezug auf Python:

Wenn Sie die Leistung für rechenintensive Sachen benötigen, schauen Sie sich Numeric Python http://numpy.scipy.org/ und Pyrex http: //www.cosc.canterbury .AC.NZ / greg.ewing / python / Pyrex / . Numeric Python ist eine Python-Erweiterung, die eine Menge der alten Schule numerischer Einrichtungen so schnell C-Code liefert - Vektor-Mathematik (für ANN Arbeit ein wichtiges Instrument) usw. Pyrex ist ein Werkzeug, das im Wesentlichen ermöglicht es Ihnen, Python-Code zu kompilieren bis auf einem nativen ausführbare Datei.

Mit Pyrex müssen Sie mithilfe von Reflektion, vorsichtig sein, weil es nicht vollständig Code kompilieren kann, die bestimmten reflektierende Konstrukte verwendet (vor allem Einheimische () und Globals ()). Ich erwähne diese Einschränkung nur, weil beide AI und Sondierungs Codierung (implizierten Ihre „Prototyp“ Bemerkung) oft den Vorteil der Reflexion nehmen mehr als andere Arten von Anwendungsbereichen zu tun.

Wenn Sie einen Mac-Benutzer sind einen Blick auf WebObjects alles zu tun, die Rahmen Sachen, und Sie können den sinnvollen neuronalen Code in Java auf dem Schreiben konzentrieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top