Prise en compte du moment où vous pouvez faire du bon travail en 10 ans avec Python3 et Scala3.

introduction

En gros, mon travail que je fais depuis quelques années ressemble à ceci.

série python3
- numpy+C/C++Créez un pipeline qui gère des données volumineuses avec l'outil écrit.
-Lisez RDB et gérez excel et csv avec les pandas.

série scala2
-Créez un pipeline qui gère des données volumineuses avec Spark.
- Playframework/Gérez une application Web créée avec Akka.

python ne changera probablement pas grand-chose pendant un moment, mais Scala passera progressivement à la 3e série prévue cette année. Dans Scala3 Scala 3, vous pourrez écrire dans une syntaxe basée sur l'indentation comme Python! Tel qu'introduit dans, il semble qu'il sera possible d'écrire «aussi» qui soit compatible avec python comme suit (bien qu'il semble y avoir beaucoup d'opposition pour le moment).

retrait (extrait).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")

Source: https://github.com/hinastory/dotty_examples/blob/master/src/main/scala/indent_based/IndentBasedExample.scala

Avec le support de l'EDI, j'envie rarement python lors de l'écriture de la série scala2, mais je pense que la syntaxe indentée est plus lisible.

À propos, les personnes qui travaillent actuellement avec python3 ont pensé à la légère à quel point ils seraient heureux s'ils maîtrisaient le système scala3 dans 10 ans (ci-après, python3 peut également être utilisé selon le cas). Supposition).

Travaux attendus dans 10 ans

[1] Travaillez comme un micro service avec Scala3.

Un micro service qui a longtemps été un petit puzzle. Puisqu'il contribue à l'amélioration continue des services informatiques qui subsistent, il est prévu que le nombre d'emplois pour créer des micro-services augmentera petit à petit à l'avenir. Dans le cas des microservices, le langage d'implémentation n'a pas tant d'importance tant que l'interface est correctement découpée. Il semble être déterminé par la facilité de réunir des ingénieurs et la productivité élevée de la langue. Scala introduit le framework de microservices lagom depuis plusieurs années. Ces dernières années, lagom est construit sur playframwork + akka, qui est devenu l'une des options pour les entreprises basées sur le Web, et devrait être utilisé pour le développement de microservices à l'avenir. Référence Lagom 1.5, un framework de microservices, introduit Akka Management et prend en charge Kubernetes et OpenShift

(Bien que ce soit un niveau d'étude car je n'ai aucune expérience en développement) Dans les micro services, il est basique de créer un service asynchrone qui utilise pleinement Future etc. (Ci-après, je l'ai écrit dans le style de syntaxe scala3 indent (?)).

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

Référence Créer une nouvelle application pour le framework de micro service Lagom

Compte tenu du débogage, il serait plus sûr d'écrire un traitement asynchrone dans le langage de compilation scala.

En prime, écrivez le côté client avec lagom.js

Pendant longtemps, scala.js, qui était la version 0.6, a atteint la version 1.0 en 2020. https://www.scala-js.org/

Bien qu'il ne soit pas largement utilisé, il peut y avoir une option pour écrire le côté client des microservices dans scala.js 10 ans plus tard (mais pas encore). En regardant ce qui suit, il semble que le développement de lagom.js pour les clients de microservice soit en cours. https://github.com/mliarakos/lagom-scalajs-example

Il semble qu'il soit écrit en utilisant la correspondance de modèle côté client comme ceci.

client_invoke.scala


client.greeting.invoke().onComplete
  case Success(message) => // display message
  case Failure(exception) => // handle exception

[2] Travail d'ingénierie des données avec Scala3

Scala2 + Spark2 est l'un des éléments standard pour les projets Big Data sur le cloud tels que Amazon EMR et MS databricks. Les données accumulées vont augmenter dans les 10 prochaines années, il est donc naturel que Scala3 + Spark3 (?) Aura un emploi dans 10 ans. Cependant, il y aura probablement plus de discussions sur le fait que pyspark va bien. Je pense que c'est l'un de mes emplois préférés chez Scala3, mais comme il y a beaucoup d'informations sur le Web, je vais omettre les détails.

[3] Travailler en tant qu'ingénieur IA avec Scala3

Je pense que je peux manger en tant qu'ingénieur en IA même après 10 ans avec un accent sur python, mais s'il y a beaucoup d'apprentissage et qu'il devient nécessaire d'écrire des traitements distribués compliqués, etc., utiliser Scala3 qui est un langage JVM a un large éventail. Il semble se répandre. La technologie à utiliser sera combinée avec le micro service sur Akka et le traitement des données à l'aide de Spark décrit ci-dessus, il est donc abrégé. ... Personnellement, je m'attends à ce que le framework d'IA sur le cloud accessible via JVM mûrisse dans les 10 prochaines années.

Bonus: Dans quelle mesure Scala3 peut-il être utilisé dans l'IA et l'analyse pour le développement de jeux multijoueurs?

... c'est de mon intérêt personnel. Avec les microservices et les ingénieurs de données, l'industrie du jeu est une industrie en pleine croissance. Dans le développement de jeux, le client continuera à être C / C ++ pour le moment, et côté serveur, Go, qui exécute un seul serveur binaire, semble être fort. Si vous utilisez un seul langage, est-ce C # qui a Unity et peut aller à la fois côté serveur et Web Assembly? Du point de vue des 10 prochaines années, comment la rouille sera-t-elle impliquée ici?

scala3 n'est probablement pas largement utilisé dans le développement de jeux. Cependant, si vous souhaitez utiliser pleinement le moteur AI sur la JVM, il peut être possible de faire quelque chose avec Python + Scala + α. Il existe une scala native, mais il est peu probable que tout ce qui concerne le client soit scala.

En tant que personne orientée serveur, j'espère que l'utilisation de WebAssembly pour le rendu côté serveur et quelle que soit la plate-forme se développera. Je me demande si la majorité du développement du jeu se fera côté serveur, et le code côté client devrait être laissé à un artisan ingénieur. WebAssembly 1.0 est le quatrième langage qui s'exécute en natif sur le navigateur comme recommandé par le W3C Personnellement, je m'attends à ce que le langage vlnag / nim soit transpilé en C.

À la fin

Ce n'est pas Scala3, mais 10 ans plus tard, c'est toujours une combinaison de Python et Go ou C #. Sinon, je me demande si l'avenir de Promane, qui peut utiliser Python pour les projets DX d'entreprise, sera sûr pour les 10 prochaines années. C'est tout.

Recommended Posts

Prise en compte du moment où vous pouvez faire du bon travail en 10 ans avec Python3 et Scala3.
Python | Ce que vous pouvez faire avec Python
Gérer les "années et mois" en Python
Vous pouvez facilement créer une interface graphique même avec Python
Vous devenez ingénieur en 100 jours - Jour 35 - Python - Ce que vous pouvez faire avec Python
Si vous les gars dans la cuisine de portée pouvez le faire avec une marge ~ ♪
Peut être fait en 5 minutes!? Créez une API de détection de visage avec Fast API et OpenCV et publiez-la sur Heroku
% Et str.format () en Python. Lequel utilisez-vous?
Ce que vous pouvez et ne pouvez pas faire avec Tensorflow 2.x
Que faire si vous exécutez python sur IntelliJ et quittez avec une erreur
[Pour les débutants] Vous pouvez le faire à partir de zéro! Création d'API avec AWS SAM et sortie de documents Open API en Python
Pourquoi l'instruction main () -if de Python est-elle attachée?
Si vous écrivez TinderBot en Python, elle peut le faire
Ce que vous pouvez faire avec les statistiques de la bibliothèque Python standard
Écrivez un script dans Shell et Python pour vous avertir dans Slack lorsque le processus est terminé
Que faire si vous obtenez moins zéro en Python
Avez-vous besoin de Python re.compile?
Considérez ce que vous pouvez faire avec Python dans l'article Qiita
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
Lorsque vous exécutez diff en python et que vous voulez à la fois le code de retour et la sortie
Vérifiez si vous pouvez vous connecter à un port TCP en Python
Lors de l'écriture d'un programme en Python
Que faire si vous obtenez un avertissement "Mauvaise plateforme Python" lors de l'utilisation de Python avec l'EDI NetBeans
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Python - Comment diviser une liste en morceaux de taille égale en Python?
Vous pouvez le faire avec Python! Analyse structurale de cristaux colloïdaux bidimensionnels
Que se passe-t-il si vous "importez A, B comme C" en Python?
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Faites une visite Euler non récursive en Python
Précautions lors du décapage d'une fonction en python
Un mémo contenant Python2.7 et Python3 dans CentOS
Ce que vous pouvez faire avec l'API vol.1
Ce que vous pouvez faire avec des compétences en programmation
Jusqu'à ce que vous puissiez utiliser opencv avec python
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3
[Python3] Code qui peut être utilisé lorsque vous souhaitez découper une image dans une taille spécifique
[Python] Précautions lors de la recherche des valeurs maximum et minimum avec un tableau numpy avec un petit nombre d'éléments
Bon avec Python et xonsh pour que vous puissiez voir l'instance EC2 simplement en entrant dans le shell
Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
Que faire lorsqu'un avertissement apparaît autour de l'intégration de Python dans CheckHealth de Neovim
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
[Python] Choses à vérifier lorsqu'une erreur de décodage Unicode apparaît dans Django
Jusqu'à ce que Python soit installé avec pythonbrew et que Flask s'exécute sur le serveur WSGI
Les chaînes de caractères placées dans GCS avec python sont déformées lorsqu'elles sont visualisées avec un navigateur
Erreur lors de l'installation d'un module avec Python pip
[Python, Scala] Faites un tutoriel pour Apache Spark
Jusqu'à ce que vous obteniez des données quotidiennes pour plusieurs années de stock japonais et que vous les sauvegardiez dans un seul CSV (Python)
[Python] Récupérez les fichiers dans le dossier avec Python
Environnement et utilisation recommandés lors du développement avec Python
Construire un environnement python avec virtualenv et direnv
J'ai écrit une classe en Python3 et Java
Créer un environnement virtuel avec conda avec Python
Précautions lors du traitement des structures de contrôle dans Python 2.6
Un mémo lors de la création d'un environnement python avec miniconda
Encodage de caractères lors du traitement de fichiers en Python 3
Lancer un serveur Web avec Python et Flask
[python] [vscode] Lorsque vous vous fâchez avec space-tab-mixed