2024-09-07 セキュリティキャンプ アフターイベント 2024-09-14 traP & Zli 合同LT で発表したスライドになります。
関数型まつり以降、Unison 言語が気になっています。 最近、試しにAI用のLSPとか作ってたんですが、既存のプログラミング言語処理系にやや限界を感じています。既存言語の人間用のファイル参照と line:character の補完というインターフェースが、AIの操作単位と噛み合ってないじゃないか?という懸念です。 関数型まつりでも発表があった、関数型ドメインモデリングの Scott Wlaschin 氏いわく「副作用のない関数だけでプロジェクトを構成すれば、関数名はただの名前空間のルックアップテーブルに過ぎなくなり、その合成だけでドメインを表現できる」とし、関数を組み合わせるスタイルの Railway Oriented Programming を提唱していました。 関数型まつりで Unison 関連の発表があったわけではないんですが、関数型言語のうち自分がほしい特性をAIに相談したら、そ
8月7日、LWN.netが「Python performance myths and fairy tales」と題した記事を公開した。この記事では、Pythonの性能に関する「神話」とも言える誤解を批判的に検証し、現実の制約と今後の可能性について詳しく紹介されている。 以下に、その内容をかいつまんで紹介する。詳しくは原文を参照していただきたい。 Pythonは本当に「遅い」のか? 記事は、EuroPython 2025において、PyPyの開発者であり長年Python性能の向上に取り組んできたAntonio Cuni氏による講演内容を中心に構成されている。Cuni氏は、Pythonの性能について多くの「神話」が存在するとし、それらを一つずつ検証していった。 誤解その1:「Pythonは遅くない」 会場で「Pythonは遅いと思うか」と尋ねたところ、多くの聴衆が手を挙げた。この反応は、PyCo
開発者コミュニティーハブのStack Overflowが、年次開発者調査の2020年の結果を発表した。この調査から、ソフトウェア開発者コミュニティーの仕事に対する思いや、使用されているプログラミング言語、特に報酬の多い開発者について、有益な情報を得られる。Stack Overflowの2020年の開発者調査は、6万5000人以上を対象に実施された。調査結果は毎年ほぼ一貫している。 Stack Overflowは調査レポートの序文で重要な注意事項に言及した。この調査が実施されたのは2020年2月であり、COVID-19の世界的な感染拡大と、それに続く労働文化の変化や失業者数の増加が起きるよりも前であるという点だ。したがって、Stack Overflowの2020年の調査でも、ソフトウェア開発者の世界に関する貴重な情報を得られるが、2021年にどれだけ大きな変化が起きるのかは分からない。 開発
Owenのブログより。 もし、私が4年前にタイムスリップして、昔の自分にHaskellが輝きを失い始めていると言ったら、私はそれを信じないでしょう。私はHaskellで育ち、カテゴリ理論への欲求はHaskellによって刺激され、私の最大のプログラミング・プロジェクトはHaskellであり、Haskellを使った会社で働くのが夢でした。 しかし今では、以前ほどHaskellに興奮していないことに気が付きました。何が変わったのでしょうか? いくつか要因があると思います。主な要因の1つは、Haskellが本当に得意としているプログラミングの種類だと思います。つまり、抽象的で正しいインタフェースを作ることは、私にとって興味のあるタイプのプログラミングではないと言うことです。キャリアとしてソフトウェアに携わりたいと思ったとき、自分を繰り返さないようにする素晴らしい機能を持った言語はとても役に立ちまし
TypeScript's type system is Turing Complete: meaning it has conditional branching (conditional types) and works with an arbitrary huge amount of memory. As a result, you can use the type system as its own programming language complete with variables, functions, and recursion. Developers have pushed the bounds of type operations possible in the type system to write some pretty incredible things! Th
C++の最新動向と展望をチェック。C++の日本語リファレンスサイト「cpprefjp」メンバーの講演を、ゲームエンジン開発者がレポート&補足してみた【CEDEC2024】 国内最大規模のゲーム業界カンファレンス「CEDEC2024」が、2024年8月21日(水)から8月23日(金)までの日程で開催されました。1日目にはプログラミング言語「C++」の日本語解説を提供するオープンソースWebサイト「cpprefjp」のコントリビューターである鈴木 遼氏、松村 哲郎氏、安藤 弘晃氏が登壇し、「ゲーム開発者のための C++17~C++23, 近年の C++ 規格策定の動向」と題した講演が行われました。 今回は通常のCEDEC講演レポートと異なり、前提知識の補強やC++の動向の補足を「ゲームの最適化」連載を担当するrita氏に依頼。C++の最新情報が解説された講演の様子を、現役C++エンジニアの視点
Language DesignExpressive multi-paradigm design, combining the best of dynamic and static, functional and practicalData-oriented language with a robust type systemMultiple backend support including WebAssembly, JavaScript and more.Check Docs AI Integrated PlatformAI-friendly language design, featuring safe-guard, easy testing, minimizing LLM hallucinations.Built-in AI assistant, automating testing
米ホワイトハウス国家サイバー局長室(The White House Office of the National Cyber Director:ONCD)は、2024年2月26日(米国時間)、サイバー空間における攻撃対象領域(アタックサーフェス)を積極的に削減するよう技術コミュニティーに呼びかける報告書を発表した。 ONCDは、IT企業がメモリ安全なプログラミング言語を採用することで、あらゆる種類の脆弱(ぜいじゃく)性がデジタルエコシステムに侵入するのを防ぐことができると述べている。ONCDはまた、サイバーセキュリティの品質を測定するより優れた診断の開発を可能にするために、ソフトウェアの測定可能性の問題に取り組むことを奨励している。 報告書ではメモリ安全性について「メモリ安全性が保たれていないと、意図しない方法でメモリへのアクセス、書き込み、割り当て、または割り当て解除が行われる可能性があ
For many years I used the Julia programming language for transforming, cleaning, analyzing, and visualizing data, doing statistics, and performing simulations. I published a handful of open-source packages for things like signed distance fields, nearest-neighbor search, and Turing patterns (among others), made visual explanations of Julia concepts like broadcasting and arrays, and used Julia to ma
ALAN M. TURING 23 June 1912 – 7 June 1954 F | | P(T) R P(u) R P(r) R P(i) R P(n) R P(g) R P( ) R P(M) R P(a) R P(c) R P(h) R P(i) R P(n) R P(e) R P(s) R -> B B | | L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) L P( ) -> F 2024-12-20 Translations: English, Spanish In 1928, David Hilbert, one of the most influential mathematicians of his time, aske
低レイヤを知りたい人のためのCコンパイラ作成入門 (以下 コンパイラブック) を一通り読んでCコンパイラを作ってみました。 この本はまだ完全でなく(2020/09/01現在)、例えば構造体の実装の説明などは文章としては存在せず、この本の参照実装である chibicc を写経がてら作っていきました。 (実際には今現在進行中の @rui さんの Cコンパイラ作成のオンラインコースを始めます の参加者のみに現状は公開されているchibiccよりもうちょっと改善されたcコンパイラ実装が参照実装だそうです) もともと構文解析とかはちょっと興味があったりして、qiitaでも [ruby] Parsletで構文解析する[その1] [ruby] Parsletで正規表現をパースしてvm型のエンジンを実装してみる[その1] パース〜ASTまで みたいな記事は書いていたんですが、あんまりややこしいパーサーは書
プログラミング言語ごとのコミュニティの最大規模はJavaScriptの約2520万人、続いてPythonが1820万人、Javaが1770万人など。SlashDataの調査 ソフトウェアデベロッパーを中心とした調査会社のSlashDataは6月15日、2024年第1四半期時点のプログラミング言語ごとのコミュニティの大きさについてのレポートを発表しました。 これは同社が行った世界135カ国から1万人以上の回答者を集めたアンケート結果などを基に同社が推測しレポートとして発表する予定の内容の一部を公開したものです。 下記は同社が発表したプログラミング言語別のコミュニティを大きさ順に示した図の一部を切り取ったものです。 これによると、最大のコミュニティを持つプログラミング言語はJavaScriptで2520万人。もっともポピュラーな用途はWeb開発となっています。ただしこの人数にはTypeScri
本記事は、ラムダノートで発売している『RubyでつくるRuby』を買っていただいた方に「読んで」とお願いするための「私家版、読み方のおすすめ」です。また、この本は当社の本のなかでも過小評価されているところがあると思うので、「気になるけど買ってない」という方に興味を持ってもらうことも目的としています。 本書『RubyでつくるRuby』を買った人にも、まだ買っていない人にも、とにかくまず意識してほしいのですが、この本はRubyの解説書ではありません。 じゃあなんの本かっていうと、これは「そもそもプログラミング言語でプログラムを書くって、なに?」という根本的な問いへの取り組み方を教えてくれる本です。 もう一度言いますが、この本はRubyの解説書ではありません。なので、「Rubyを使うつもりはなくて、PythonとかJavaScriptが好き」っていう人や、「それらのプログラミング言語をいままさに
プログラミング言語「Kotlin」の開発元であるJetBrainsは、オンラインイベント「Kotlin 2021 Premier Online Event」を開催中です。 そのイベントにおいて同社はKotlinのオフィシャルマスコットキャラクターを発表しました。 It’s finally happened — welcome the Kotlin Mascot! The mascot has no name! Let's choose a name for our new friend together. Suggest your ideas in the replies or via the form in the blog post. Learn more https://t.co/EMMVAlXkTS — Kotlin (@kotlin) October 22, 2021 ただしこの
Liam Tung (Special to ZDNET.com) 翻訳校正: 石橋啓一郎 2021-07-29 06:30 この30年間、Linuxの開発にはずっとC言語が使われてきたが、その状況が変わる可能性があるだろうか。 プログラミング言語の「Rust」をLinuxカーネル開発の第2言語にしようとする取り組みが一部で見られるようになっている。Googleは、開発者のMiguel Ojeda氏が中心となって進めている、Linuxカーネルのさまざまな要素の開発にRustを使用することを目指すプロジェクトを支援している。 Googleは、Rustを使えばセキュリティ上の脆弱性を引き起こすメモリーエラーを減らせるはずだと主張している(多くのIT企業やオープンソースプロジェクトがアップデートで修正しているセキュリティホールの多くは、メモリーエラーが原因になっている)。このプロジェクトの目標は、
Video Hi, I'm Eric. I'm here to talk about what seems like an absurd idea: that if-then-else had to be invented. If-then-else is how we talk about conditions in programming languages: if something is true, then do a thing, else do a different thing. That's just English, right? Except that it isn't. I can't use "else" as a conjunction in normal speech, only in computer programs. Where did this else
Updated Mon Feb 5 10:22:02 EST 2024 Available in paperback and e-book formats. Order at Amazon and other fine booksellers. Introduction This page holds material related to the second edition of The AWK Programming Language. The first edition was written by Al Aho, Brian Kernighan and Peter Weinberger in 1988. Awk has evolved since then, there are multiple implementations, and of course the computi
出力がちょっと独特ですが、レシーバなし(nil)のputsメソッド呼び出し(send)で、引数は文字列リテラル(str)が一つ、という風に読みます。 CurrentRubyというのは今実行しているバージョンのRuby、ということです。parser gemは過去のRubyの文法に合わせてパースすることもできるのでこのような名前になっています。 parser gemでバグを探す それでは、parserを使って条件式の中の代入式を探してみましょう。大きなコードに対して解析を行う場合、AST::Processor::Mixinを使うのが便利です。これはparser gemの内部で使われている小さなライブラリast gemの機能です。parserの処理のうち、Ruby以外の言語の解析にも使える部分が独立したgemとして用意されているようです。 最初にコード全体を貼っておきます。 require 'p
アジャイルソフトウェア開発手法の先駆けともいえるXP(eXtreme Programming)の名を冠して2002年から20年以上にわたり毎年開催されているXP祭り。2023年はオンラインの講演とオンサイトでのワークショップによるハイブリッド形式で、9月30日(土)に開催が予定されています。 ▶ XP祭り2023 - xpjug.com/xp2023/ コミュニティ主体によるカンファレンス開催が国内でまだ珍しかったころにスタートし、企業によるスポンサードもほぼなく、参加費も登壇料も全て無料、セッションだけでなくスタッフも毎年公募して入れ替える素朴な運営を続けながら、和田卓人さんや平鍋健児さんといった著名なエンジニアも登壇し、ソフトウェア開発について多くの示唆を与えてきたこのイベントはどのように続いてきたのでしょうか。 世界的にもアジャイルが広まりはじめた立ち上げ当初を知る小井土亨さんと、2
Nelua Programming Language Minimal, simple, efficient, statically typed, compiled, metaprogrammable, safe, and extensible systems programming language with a Lua flavor. Overview Download What is Nelua? Nelua is a systems programming language for performance sensitive applications, like real-time applications and game engines. Its syntax and semantics are similar to Lua, but its garbage collection
紙書籍をお届けします(PDFがついてきます) PDFのみ必要な場合は、こちらからPDF単体を購入できます 通常はご注文から2~3営業日で発送します。 年末年始や大型連休など、1週間から10日程度、配送のお休みをいただく場合があります。詳しくはお知らせをご覧ください。 型システムがようやくわかった! 遠藤侑介 著 184ページ A5判/1色刷 ISBN:978-4-908686-20-7 2025年4月15日 第1版第1刷 現代の開発環境では、エディタ上でコードを書いている最中から、実行もせずにエラーが判明することがあります。コードの補完でも、文脈に適した候補が魔法のように提示されてきます。こうした機能で中心的な役割を果たすのが「型システム」です。 では、なぜ型システムはプログラムのエラーを早期に発見したり、適切な補完候補を絞り出せたりするのでしょうか? 背景となる数学の理論を教科書で学ぶ以
Lua の代替スクリプト言語 組み込み用のスクリプト言語として使える Lua はライトな反面、動的型付けや 1-based index といった仕様がボトルネックになりがちです。そうした状況の中、相応の短所も抱えた Lua の代替となりえる C/C++ 開発用組み込み用のスクリプト言語が多く開発されています。しかしながら、それらを横並びで比較及び評価した記事をあまり見かけませんでした。そこで、本記事では AltLua となりうる言語を取り上げ、それぞれの特徴を検証していきます。 Lua 向けトランスパイラ言語 コンパイルして Lua を出力するトランスパイラ言語について。Lua VM 上で動作するため、既存の Lua ライブラリの利用が可能な他、軽量で高速な強みを十分に生かせることが期待できます。 github stars やリリースなどの情報は 2025 年現時点のものを記載します。 M
tbsp - tree-based source-processing language tbsp is an awk-like language that operates on tree-sitter syntax trees. to motivate the need for such a program, we could begin by writing a markdown-to-html converter using tbsp and tree-sitter-md [0]. we need some markdown to begin with: # 1 heading content of first paragraph ## 1.1 heading content of nested paragraph for future reference, this markdo
Rust で作るプログラミング言語シリーズです。 バイトコードコンパイラの難しさ 書籍での心残りの一つが、第6章のバイトコードの難易度です。本書ではプログラミング言語を作るにあたってステップ・バイ・ステップで難易度を上げていくように構成を考えていますが、第6章のバイトコードの実装の時点で難易度が急激に上昇します。例えば、次のようなジャンプアドレスの計算を行う必要があるのですが、これはかなり込み入ったロジック計算が必要になります。 条件分岐では、下図のようにジャンプしますが、このアドレス計算が厄介です。 ループについても同じくジャンプ命令が必要ですが、こちらはループの先頭にアドレスを戻します。 この実装の難しさは、プログラムの意味を理解する(意味論)ロジックと、それをバイトコードへ変換するロジックを一つとしてデバッグしなくてはならないところにあります。どちらに問題があるかを切り分けるのは簡単
Unreal Engineで有名なEpic Gamesが、現在開催中のGDC(Game Developer Conference)でVerseの詳細を解説しており、その動画が公開されています。 ドキュメントもすでに公開されています。 https://dev.epicgames.com/documentation/en-us/uefn/verse-language-reference 現在処理系は、Unreal Editor for Fortnite(UEFN)の中に組み込まれているようですが、Windowsにしか対応していません。ちょろっと動かした程度で、まだコードをしっかり書いてはなくて、プレゼンを見た感想で書いているので、いろいろ間違ったところとかもあるかもしれませんが、そういうのはご指摘いただいたり、Pull Request(ブログの上の鉛筆アイコンで送れます)を出してもらえれば、と
SummaryMost visual programming environments fail to get any usage. Why? They try to replace code syntax and business logic but developers never try to visualize that. Instead, developers visualize state transitions, memory layouts, or network requests. In my opinion, those working on visual programming would be more likely to succeed if they started with aspects of software that developers already
概要 Shopify Engineeringの許諾を得て翻訳・公開いたします。本記事は公開前にShopify Engineeringにレビューをいただいています。 英語記事: YJIT: Building a New JIT Compiler for CRuby — Development (2021) 原文公開日: 2021/10/14 原著者: Maxime Chevalier サイト: Shopify Engineering 画像は元記事のものです(追記2021/11/04: 冒頭イラストを削除いたしました)。 本記事はTwitterにて@shiroemonsshiromemonsさまからのリクエストを受けて翻訳いたしました。リクエストありがとうございます! なお、以下のissue #18229で、著者のMaxime Chevalierさんをコミッターに迎えるプロポーザルが出され、そ
Photo by Liam Briese on UnsplashThere are about 700 programming languages in the world. However, developers use about 20 different programming languages to build enterprise software. In other words, there are only a few popular general-purpose programming languages, even if there are many programming languages. Developers usually start coding at school, university, or when they begin their career.
assertion とは 起きた出来事 原因 Java Kotlin 対策 まとめ We are hiring! assertion とは assertion とはプログラムの中の様々な前提が満たされていることを確認するための仕組みで、日本語だと「表明」という訳が当てられることが多いです。 Java や Kotlin に限らず様々な言語で実装されており細かい仕様は言語ごとに異なりますが、多くの場合「前提が満たされていない場合は例外を発生させる」「本番環境では無効化できる」という点で共通しています。 例えば Kotlin の場合は以下の形で記述され、仮に条件が満たされなかった場合は AssertionError が指定されたエラーメッセージ付きで投げられます。 val result: Int = someFunction() assert(result > 0) { "result of s
-- Returns the last number of a list. last :: [Int] -> Int last (_ ++ [x]) = x -- Returns some permutation of a list. perm :: [a] -> [a] perm [] = [] perm (x:xs) = insert (perm xs) where insert ys = x : ys insert (y:ys) = y : insert ys Curry is a declarative multi-paradigm programming language which combines in a seamless way features from functional programming (nested expressions, higher-order f
At Dfinity, we’re building the Internet Computer, a decentralized cloud computing platform that we conceive as a seamless software universe in which developers can deploy applications and services directly on the Internet. To realize this vision, we decided on WebAssembly as the lingua franca of the platform’s execution environment, so that developers can program it in any language that compiles t
Hurl, the Exceptional language Hurl is a language created for one purpose: to explore a language based around exception handling as the only control flow. It was sparked from conversations between Nicole Tietz-Sokolskaya and friends from Recurse Center whose identities will be withheld for their dignity. This site contains documentation around how to use Hurl. It also provides some examples and gu
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く