Überlegen Sie, wann Sie mit Python3 und Scala3 in 10 Jahren gute Arbeit leisten können.

Einführung

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).

Erwartete Arbeit in 10 Jahren

[1] Arbeiten Sie als Mikrodienst mit Scala3.

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.

Schreiben Sie als Bonus die Client-Seite mit lagom.js

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

[2] Data Engineering-Arbeit mit Scala3

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.

[3] Arbeite als KI-Ingenieur bei Scala3

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.

Bonus: Wie viel kann Scala3 in der KI- und Analyse-Arbeit für die Entwicklung von Multiplayer-Spielen verwendet werden?

... 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.

Am Ende

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

Überlegen Sie, wann Sie mit Python3 und Scala3 in 10 Jahren gute Arbeit leisten können.
Python | Was Sie mit Python machen können
Umgang mit "Jahren und Monaten" in Python
Sie können auch mit Python problemlos eine GUI erstellen
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Wenn ihr in der Scope-Küche das mit einem Rand machen könnt ~ ♪
Kann in 5 Minuten erledigt werden! Erstellen Sie eine Gesichtserkennungs-API mit Fast API und OpenCV und veröffentlichen Sie sie auf Heroku
% Und str.format () in Python. Welches benutzt du?
Was Sie mit Tensorflow 2.x tun können und was nicht
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
[Für Anfänger] Sie können es von Grund auf neu machen! Erstellen von APIs mit AWS SAM und Ausgeben von Open API-Dokumenten in Python
Warum ist Pythons main () -if-Anweisung angehängt?
Wenn Sie TinderBot in Python schreiben, kann sie das tun
Was können Sie mit den Standardstatistiken der Python-Bibliothek tun?
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Was tun, wenn in Python minus Null angezeigt wird?
Benötigen Sie Python re.compile?
Überlegen Sie im Qiita-Artikel, was Sie mit Python tun können
Zeichnen Sie eine Aquarellillusion mit Kantenerkennung in Python3 und openCV3
Wenn Sie diff in Python ausführen und sowohl Rückkehrcode als auch Ausgabe wünschen
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Beim Schreiben eines Programms in Python
Was tun, wenn bei Verwendung von Python mit der NetBeans-IDE die Warnung "Falsche Python-Plattform" angezeigt wird?
[AWS] Erstellen Sie mit CodeStar eine Python Lambda-Umgebung und führen Sie Hello World aus
Python - Wie teilt man eine Liste in Python in gleich große Teile auf?
Sie können es mit Python tun! Strukturanalyse zweidimensionaler kolloidaler Kristalle
Was passiert, wenn Sie in Python "A, B als C importieren"?
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Führen Sie eine nicht rekursive Euler-Tour in Python durch
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Ein Memo mit Python2.7 und Python3 in CentOS
Was Sie mit API Vol.1 tun können
Was Sie mit Programmierkenntnissen machen können
Bis Sie opencv mit Python verwenden können
Was tun, wenn der Fehler RuntimeError angezeigt wird: Python wird nicht als Framework installiert, wenn Sie versuchen, matplitlib und pylab in Python 3.3 zu verwenden
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten
[Python] Vorsichtsmaßnahmen beim Ermitteln der Maximal- und Minimalwerte mit einem Numpy-Array mit einer kleinen Anzahl von Elementen
Mit Python und xonsh gut gemacht, so dass Sie die EC2-Instanz sehen können, indem Sie einfach die Shell betreten
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
Ich habe PyQCheck, eine Bibliothek, die QuickCheck mit Python ausführen kann, in PyPI registriert.
Was tun, wenn eine Warnung zur Python-Integration in Neovims CheckHealth angezeigt wird?
Was tun, wenn bei der Installation von Python mit pyenv eine Fehlermeldung angezeigt wird?
[Python] Dinge, die überprüft werden müssen, wenn in Django ein Unicode-Dekodierungsfehler auftritt
Bis Python mit Pythonbrew installiert ist und Flask auf dem WSGI-Server ausgeführt wird
In GCS mit Python platzierte Zeichenketten werden beim Anzeigen mit einem Browser verstümmelt
Fehler beim Installieren eines Moduls mit Python pip
[Python, Scala] Machen Sie ein Tutorial für Apache Spark
Bis Sie tägliche Daten für mehrere Jahre japanischer Bestände erhalten und diese in einer einzigen CSV (Python) speichern
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Empfohlene Umgebung und Verwendung bei der Entwicklung mit Python
Erstellen einer Python-Umgebung mit virtualenv und direnv
Ich habe eine Klasse in Python3 und Java geschrieben
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
Ein Memo beim Erstellen einer Python-Umgebung mit Miniconda
Zeichenkodierung beim Umgang mit Dateien in Python 3
Starten Sie einen Webserver mit Python und Flask
[Python] [vscode] Wenn Sie sich über Space-Tab-Mix ärgern