用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill julia-programming命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
基于 SOC 职业分类
正在显示 SKILL.md
| 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.