ソース情報
- リポジトリ
- JohnNuwan/EVA_CORE
- ソースの最終更新活動
- 2026年7月18日 08:30
- 検出された SKILL.md の言語
- フランス語
- スター
- 0
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill julia-programmingコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
SOC 職業分類に基づく
| name | julia-programming |
| description | Programmer en Julia pour le calcul scientifique. |
| version | 1.0.0 |
| author | EVA |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"tags":["julia","scientific-computing","multiple-dispatch","type-stability","dataframes","pythoncall"],"related_skills":["data-analysis-exploration","simplify-code"]} |
Le langage Julia est conçu pour combiner la vitesse des langages compilés (C/Fortran) avec la flexibilité et la simplicité d'utilisation des langages dynamiques (Python/R). Il est particulièrement adapté pour le calcul scientifique, la simulation physique, l'optimisation mathématique et la manipulation de données volumineuses.
Cette compétence guide l'agent EVA pour écrire du code Julia performant, structurer les projets à l'aide de packages isolés, éliminer les instabilités de types, et interfacer des composants Julia avec des infrastructures Python existantes.
À utiliser lorsque l'utilisateur demande de :
Project.toml, Manifest.toml).DataFrames.jl.PyCall/PythonCall).Julia utilise le dispatch multiple (surcharge de fonctions basée sur le type de tous les arguments) et compile le code de manière juste-à-temps (JIT) avec LLVM. Pour obtenir des performances optimales, le compilateur doit pouvoir déduire le type exact de chaque variable lors de la compilation : c'est la stabilité des types (Type Stability).
# 1. Définition de structures concrètes immuables
struct Point2D
x::Float64
y::Float64
end
struct Point3D
x::Float64
y::Float64
z::Float64
end
# 2. Dispatch multiple : surcharge de la fonction distance
distance(p::Point2D) = sqrt(p.x^2 + p.y^2)
distance(p::Point3D) = sqrt(p.x^2 + p.y^2 + p.z^2)
# 3. Fonction type-stable (le type de retour dépend uniquement du type des arguments)
function compute_total_distance(points::Vector{T}) where {T}
total = 0.0 # Initialisation avec le type de retour correct (Float64)
for p in points
total += distance(p)
end
return total
end
# 4. Diagnostic de stabilité de type avec la macro @code_warntype
# (Vérifie si le compilateur détecte des types dynamiques de type "Any" ou des allocations)
using InteractiveUtils
pts = [Point2D(1.0, 2.0), Point2D(3.0, 4.0)]
@code_warntype compute_total_distance(pts)
Pkg)Sous Julia, la gestion des paquets est intégrée et pilotée par le module système Pkg.
using Pkg
# Activer l'environnement dans le dossier courant (cherche Project.toml)
Pkg.activate(".")
# Installer des packages spécifiques
Pkg.add("DataFrames")
Pkg.add("CSV")
Pkg.add("PythonCall")
# Résoudre et télécharger toutes les dépendances définies dans le Manifest.toml
Pkg.instantiate()
DataFrames.jlL'analogue de Pandas sous Julia est la bibliothèque DataFrames.jl associée à CSV.jl :
using DataFrames
using CSV
# 1. Lecture efficace d'un fichier CSV
df = CSV.read("data/sensor_logs.csv", DataFrame)
# 2. Filtrage et sélection
# Syntaxe de macro typique : filtre les lignes et sélectionne les colonnes
filtered_df = filter(row -> row.cycle_time > 0, df)
# 3. Calculs et nouvelles colonnes avec la syntaxe source => fonction => destination
transform!(filtered_df, :actual_speed => (s -> 100.0 ./ s) => :normalized_speed)
# 4. Groupement et agrégation statistique
grouped = groupby(filtered_df, :machine_id)
summary = combine(grouped,
:cycle_time => mean => :mean_cycle,
:cycle_time => std => :std_cycle
)
println(summary)
PythonCall.jl)Nous privilégions PythonCall.jl pour interfacer Julia avec les bibliothèques Python sans partage de processus lourd :
using PythonCall
# Importer un module Python
np = pyimport("numpy")
pd = pyimport("pandas")
# Créer un tableau NumPy via Julia
py_arr = np.array([1, 2, 3])
# Convertir un objet Julia en objet Python
jl_arr = pyconvert(Vector{Int}, py_arr)
# Côté script Python :
from juliacall import Main as jl
# Charger un script Julia
jl.include("my_julia_algorithm.jl")
# Appeler une fonction Julia directement
result = jl.my_julia_function([1.0, 2.0, 3.0])
Variables globales non typées (Performance Killer) :
x = 10.0 et l'utiliser dans une boucle de calcul. Le compilateur JIT ne peut pas garantir que x ne changera pas de type et désactive toutes les optimisations de type, ralentissant le code d'un facteur 100.const x = 10.0, ou passer la variable en argument de fonction.Indexation à base 1 (1-based indexing) :
arr[0], provoquant une erreur BoundsError.1 (comme Matlab ou R). Le premier élément est arr[1] et le dernier est arr[end].Le coût de la première compilation ("Time to first plot") :
BenchmarkTools.jl avec la macro @btime).Allocations mémoire inutiles par création de copies :
func(arr[1:100])), ce qui force Julia à créer une copie physique des données en mémoire.func(@view arr[1:100]) ou @views func(arr[1:100])).Pkg.activate(".") pour isoler les dépendances.const ou passées explicitement en argument.1 et utilise arr[end] pour cibler le dernier élément.@code_warntype confirme l'absence d'instabilités de types (mots colorés en rouge dans la sortie du terminal ou type de retour Any).@view pour éviter les allocations mémoires superflues.Project.toml.