全世界が「Pythonを学ぼう」と叫んでいるとき、あなたは「もしそうでなければどうなる?」と考えます。
率直に言いましょう。「ITに入る方法」に関するガイドを開くと、同じことが書かれています。Python、JavaScript、マゾヒストのためのJavaかもしれません。すべての道は、フレームワーク、パッケージマネージャー、そして銀河系のサイズのnode_modulesの同じジャングルにつながっています。
そして、その言語を想像してみてください すべて 30ページのPDFに収まります。言語全体。完全に。すべてのニュアンスで。
「ルア?ゲームのルア?」
はい、そして単に「ゲームで」ではありません。Luaは、World of Warcraft、Roblox、Garry's Mod、Factorio、LÖVE 2Dのスクリプトエンジンです。WoWのアドオンをインストールしたことがある場合、またはお気に入りのゲームのMODを書いたことがある場合は、すでにLuaを使用したことがあります。ただ、それについて知らなかったかもしれません。
しかし、ゲームは氷山の一角にすぎません。Luaは、Nginx(OpenResty経由)、Redis、Wireshark、Adobe Lightroom、さらにはルーターのファームウェア内でも動作します。この小さな言語は、文字通りどこにでも入り込んでいます。なぜなら、この言語には超能力があるからです。 余計なことはしません.
開発者の怠惰ではなく、哲学としてのミニマリズム
ブラジルの大学PUC-RioのLuaの作成者は、「別のプログラミング言語」を作成することを目標としていませんでした。彼らは作りたかった 埋め込みスクリプトエンジン、チャットの平均画像よりも軽いもの。
その結果は次のとおりです。
Luaのランタイム全体は約300KBです。 比較のために、Node.jsインストーラーだけでも200倍以上の重さがあります。そして、平均的なプロジェクトのnode_modules...まあ、このジョークをご存知でしょう。
Luaのデータ型はちょうど 8 個: nil、boolean、number、string、function、table、userdata、thread。すべて。個別の配列、辞書、セット、タプルはありません。一つのユニバーサル構造があります。 table ― そして、すべてを閉じます。
-- Массив? Table.
local fruits = {"apple", "banana", "cherry"}
-- Словарь? Table.
local user = {name = "Alexey", level = 42}
-- Объект с методами? Тоже table.
function user:greet()
print("Hi, I'm " .. self.name)
end
user:greet() -- Привет, я Алексейすべてを統治するための1つのデータ構造。フロドは承認します。
ミニマリズム=簡単なスタートである理由
Pythonを学ぶとき、リスト、タプル、セット、辞書、ジェネレーター、デコレーター、コンテキストマネージャー、__dunder__メソッドなどがすぐに投げかけられます。そして、これは最初の実際のプロジェクトの前です。
Luaでは、一晩で習得できます すべての構文冗談ではありません。これが短期コースです。
-- Переменные
local name = "Code"
local age = 3
local is_cool = true
-- Условия
if is_cool then
print(name .. " - cool!")
elseif age > 10 then
print("Old school")
else
print("Well, okay")
end
-- Циклы
for i = 1, 5 do
print("Iteration: " .. i)
end
-- Функции
local function add(a, b)
return a + b
end
print(add(2, 2)) -- 4, математика не подвела以上です。 本当に。あなたはすでにLuaの80%を知っています。残りの20%はメタテーブル、コルーチン、C APIの操作ですが、これはすでに上級者向けです。
初心者の脳は、数十の概念で過熱することはありません。代わりに、あなたはすぐに始めます 作る:スクリプトを書き、ゲームロジックを作成し、タスクを自動化します。
テーブル — シンプルさの中にある才能
Luaで最も頭がおかしくなるものは何ですか?tableは、配列、ハッシュテーブル、オブジェクト、モジュール、名前空間です。オールインワンです。
-- Создаём «класс» через table + метатаблицы
local Animal = {}
Animal.__index = Animal
function Animal.new(name, sound)
local self = setmetatable({}, Animal)
self.name = name
self.sound = sound
return self
end
function Animal:speak()
print(self.name .. " says: " .. self.sound)
end
local cat = Animal.new("Cat", "Meow")
local dog = Animal.new("Dog", "Woof")
cat:speak() -- Кот говорит: Мяу
dog:speak() -- Пёс говорит: Гавキーワードclassがありません。extendsがありません。interfaceがありません。あなた 自分で 基本的なブロックからOOPを構築します。そしてその過程で、構文を暗記するだけでなく、オブジェクト指向プログラミングがボンネットの下でどのように機能するかを実際に理解します。
これはLEGOブロックのようなものです。部品は少ないですが、何でも組み立てることができます。
「わかりました。どこで役に立ちますか?」
公平な質問です。Luaが単なるおもちゃではない実際のシナリオは次のとおりです。
ゲームデベ。 LÖVE 2Dは、Luaで2Dゲームを作成するためのフレームワークです。エントリーのしきい値が非常に低いため、最初のゲームは週末に書くことができます。ちなみにCelesteは、Luaのサブセットを使用するPICO-8のプロトタイプとして始まりました。
ウェブ開発。 OpenRestyは、NginxをLuaスクリプトを備えた本格的なWebサーバーに変換します。速度は宇宙、メモリ消費は笑える。
Luaを第一言語とすることの賛否両論
賛成の主な議論: 認知負荷はゼロに近づいています初心者はエコシステムに溺れることはありません。pip、conda、poetry、pipenv の間で選択しません。let が const や var とどう違うのかをググル検索することはありません。コードを書いて結果を見るだけです。
そして、基本的な概念(変数、ループ、関数、データ構造)が頭に入ったら、PythonやJavaScriptへの移行は、「お母さん、ここから連れ出して」ではなく、「ああ、単に構文が違うだけだ」という感じになります。
Luaのミニマリズムは、特定のフレームワークのユーザーとしてではなく、プログラマーとして考えることを教えてくれます。
今すぐ試してみてください
Luaに触ってみたいですか?何もインストールする必要はありません。任意のオンラインLuaインタプリタを開き、最初のスクリプトを書きます。
local things_i_learned = {
"variables",
"terms",
"cycles",
"functions",
"tables"
}
print("I learned in one evening:")
for i, thing in ipairs(things_i_learned) do
print(i .. ". " .. thing)
end
print("And that's all Lua 😎")起動して。笑顔で。あなたはすでにプログラマーです。
もっと深く掘り下げたいですか?
コディックに入ってください!
シンプルなものから始めて、痛みを伴わずに複雑なものに移行するというアイデアに興味をお持ちなら、それがまさに私たちがやっていることです。 コディック.
コディック — 実践を通じてプログラミングを学べるアプリです。「無駄な」1時間の講義はありません。各レッスンは、自分で問題を解決し、即座にフィードバックを得ることができます。Python、JavaScript、HTML、CSS、その他の技術はすべて、完全な初心者でも理解できるように整理され、提供されています。
また、当社には Telegramコミュニティ、すでに大きい 2000人の開発者プログラミングに役立つ投稿、タスクの分析、ミーム(それなしでは)、ライブディスカッションがあります。地下鉄に乗っている間や並んでいる間に、携帯電話で資料を繰り返して、最新情報を把握するのに最適な方法です。
学習へのアプローチにおけるミニマリズムは、Luaのミニマリズムと同じように効果があります。ノイズが少ないほど、結果が向上します。
Luaは「ゲーム用言語」でも「エキゾチックな言語」でもありません。これは、パワーは複雑である必要はないという証明です。頭の中にある言語は、最も重要なもののために脳のリソースを解放します。 課題解決.
小さなことから始めましょう。Luaを試してみてください。言語が妨げではなく、思考を助けてくれることを感じてください。そして、この基礎をもって、Python、Rust、Goなど、何でも征服してください。原則はあなたと共にあります。
ミニマリズムは制限ではありません。これは超能力です。 🚀
