Grob gesagt sieht meine Arbeit, die ich in den letzten Jahren gemacht habe, wie folgt aus.
Python3-Serie
- numpy+C/C++Erstellen Sie mit dem eingeschriebenen Tool eine Pipeline, die große Datenmengen verarbeitet.
-Lesen Sie RDB und behandeln Sie Excel und CSV mit Pandas.
scala2 Serie
-Erstellen Sie mit Spark eine Pipeline für die Verarbeitung großer Datenmengen.
- Playframework/Pflegen Sie eine mit Akka erstellte Web-App.
Python wird sich wahrscheinlich für eine Weile nicht viel ändern, aber Scala wird schrittweise zur dritten Serie übergehen, die in diesem Jahr erscheinen soll. In Scala3 Scala 3, Sie können in einrückungsbasierter Syntax wie Python schreiben! Wie in eingeführt, scheint es möglich zu sein, "auch" zu schreiben, das pythonfreundlich ist, wie folgt (obwohl es im Moment viel Widerstand zu geben scheint).
Einzug (Auszug).scala
enum Day
case Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
def isWeekend: Boolean = this match
case Saturday | Sunday => true
case _ => false
def fromString(str: String): Day =
try Day.valueOf(str)
catch
case _: IllegalArgumentException =>
throw new IllegalArgumentException(s"$str is not a valid day")
def use(dayString: String) =
val day = fromString(dayString)
if day.isWeekend
println("Today is a weekend")
println(s"I rest {dayString}")
else
println("Today is a workday")
Quelle: https://github.com/hinastory/dotty_examples/blob/master/src/main/scala/indent_based/IndentBasedExample.scala
Mit der Unterstützung der IDE beneide ich Python beim Schreiben von scala2-Serien selten, aber ich bin der Meinung, dass die eingerückte Syntax besser lesbar ist.
Übrigens haben Leute, die derzeit mit Python3 arbeiten, leicht darüber nachgedacht, wie glücklich sie wären, wenn sie das Scala3-System in 10 Jahren beherrschen würden (im Folgenden kann Python3 auch entsprechend verwendet werden). Annahme).
Ein Mikrodienst, der seit langem ein kleines Rätsel ist. Da dies zur kontinuierlichen Verbesserung überlebender IT-Services beiträgt, wird erwartet, dass die Anzahl der Arbeitsplätze für die Schaffung von Mikrodiensten in Zukunft nach und nach zunehmen wird. Bei Microservices spielt die Implementierungssprache keine Rolle, solange die Schnittstelle richtig geschnitten ist. Es scheint von der Leichtigkeit des Sammelns von Ingenieuren und der hohen Produktivität der Sprache bestimmt zu sein. Scala führt seit mehreren Jahren das Microservice Framework Lagom ein. In den letzten Jahren basiert lagom auf playframwork + akka, das sich als eine der Optionen für webbasierte Unternehmen etabliert hat, und es wird erwartet, dass es in Zukunft für die Entwicklung von Mikroservices verwendet wird. Referenz Lagom 1.5, ein Microservice-Framework, führt Akka Management ein und unterstützt Kubernetes und OpenShift
(Obwohl es sich um eine Studienstufe handelt, da ich keine Entwicklungserfahrung habe.) Bei Mikrodiensten ist es grundlegend, einen asynchronen Dienst zu erstellen, der Future usw. voll ausnutzt. (Im Folgenden habe ich ihn im Scala3-Einzugssyntaxstil (?) Geschrieben.)
HelloStreamServiceImpl_indent.scala
package com.example.hellostream.impl
import com.lightbend.lagom.scaladsl.api.ServiceCall
import com.example.hellostream.api.HelloStreamService
import com.example.hello.api.HelloService
import scala.concurrent.Future
/**
* Implementation of the HelloStreamService.
*/
class HelloStreamServiceImpl(helloService: HelloService) extends HelloStreamService
def stream = ServiceCall x =>
Future.successful(x.mapAsync(8)(helloService.hello(_).invoke()))
Referenz Neue Anwendung für das Micro Service Framework Lagom erstellen
In Anbetracht des Debuggens wäre es sicherer, eine asynchrone Verarbeitung in die Kompilierungssprache zu schreiben.
Scala.js, Version 0.6, hat 2020 lange Zeit Version 1.0 erreicht. https://www.scala-js.org/
Obwohl nicht weit verbreitet, besteht möglicherweise die Möglichkeit, die Microservices-Client-Seite 10 Jahre später in scala.js zu schreiben (obwohl noch nicht). Im Folgenden scheint die Entwicklung von lagom.js für Microservice-Clients im Gange zu sein. https://github.com/mliarakos/lagom-scalajs-example
Es scheint, dass es mit Pattern Match auf der Client-Seite wie folgt geschrieben wurde.
client_invoke.scala
client.greeting.invoke().onComplete
case Success(message) => // display message
case Failure(exception) => // handle exception
Scala2 + Spark2 ist eines der Standardelemente für Big-Data-Projekte in der Cloud wie Amazon EMR- und MS-Datenbänder. Die gesammelten Daten werden in den nächsten 10 Jahren zunehmen, daher ist es selbstverständlich, dass Scala3 + Spark3 (?) In 10 Jahren einen Job haben wird. Es wird jedoch wahrscheinlich mehr Gespräche geben, dass pyspark in Ordnung ist. Ich denke, dies ist einer meiner Lieblingsjobs bei Scala3, aber da es im Internet viele Informationen gibt, werde ich die Details weglassen.
Ich denke, dass ich als KI-Ingenieur auch nach 10 Jahren mit einem Schwerpunkt auf Python essen kann, aber wenn viel gelernt wird und es notwendig wird, komplizierte verteilte Verarbeitung usw. zu schreiben, hat Scala3, eine JVM-Sprache, ein breites Spektrum. Es scheint sich zu verbreiten. Die zu verwendende Technologie wird mit dem oben beschriebenen Mikrodienst auf Akka und der Datenverarbeitung unter Verwendung von Spark kombiniert, daher wird sie abgekürzt. Ich persönlich gehe davon aus, dass das AI-Framework in der Cloud, auf das über JVM zugegriffen werden kann, in den nächsten 10 Jahren ausgereift sein wird.
... das liegt in meinem persönlichen Interesse. Neben Microservices und Dateningenieuren ist die Spielebranche eine wachsende Branche. In der Spieleentwicklung wird der Client vorerst weiterhin C / C ++ sein, und auf der Serverseite scheint Go, auf dem ein einzelner Binärserver ausgeführt wird, stark zu sein. Wenn Sie mit einer einzigen Sprache arbeiten, hat C # Unity und kann sowohl serverseitig als auch webassembliert werden? Wie wird es aus Sicht der nächsten 10 Jahre hier um Rost gehen?
scala3 ist in der Spieleentwicklung wahrscheinlich nicht weit verbreitet. Wenn Sie jedoch die AI-Engine in der JVM voll ausnutzen möchten, können Sie möglicherweise etwas mit Python + Scala + α tun. Es gibt Scala-native, aber es ist unwahrscheinlich, dass alles bis zur Client-Seite Scala sein wird.
Als serverorientierte Person hoffe ich, dass die Verwendung von Web Assembly auf der Serverseite und unabhängig von der Plattform erweitert wird. Ich frage mich, ob der Großteil der Spieleentwicklung auf der Serverseite durchgeführt wird und der Code auf der Clientseite einem Handwerker überlassen werden sollte. WebAssembly 1.0 ist die vierte Sprache, die gemäß den Empfehlungen von W3C nativ im Browser ausgeführt wird Persönlich erwarte ich, dass die Sprache vlnag / nim auf C übertragen wird.
Es ist nicht Scala3, aber 10 Jahre später ist es immer noch eine Kombination aus Python und Go oder C #. Wenn nicht, frage ich mich, ob die Zukunft von Promane, der Python für Enterprise-DX-Projekte verwenden kann, für die nächsten 10 Jahre sicher sein wird. Das ist es.
Recommended Posts