Nim は、「もしアラン・ケイがオブジェクト指向と言わなかったら」という歴史の if を感じさせてくれる言語だと思った話をします。 私自身は Nim 初心者です。細部の「こいつ慣れてないな」感はご容赦ください。この記事は、この言語については初心者だけれど、プログラミング言語とパラダイムを考えるうえでとても価値があると思った気付きがあったのを、図々しくも記事にしました。複数のプログラミング言語を歴史的な観点で評価するうえで、Nim を通して 70 年代以前の言語と 80 年代以後の言語、具体的には、C with classes と C++ の境界線を見つめ直すことができるんじゃないかと思います。 ズバリ言うと、Nim はアラン・ケイのオブジェクト指向が通じない言語です。 Nim の言語標準には class キーワードがありません(マクロを作れば語句の拡張は可能ですがオプションです)。が、そん
Racketで抽象データ型(実装を捨象して、コンストラクタとデータを操作する関数だけを意識して使えるデータ型)を定義するのどうやればいいんだろう、となり、とりあえずスタックを書いてみた。 structを使うやり方と、classを使うやり方、両方試してみる。 例題 pop! push!が可能なスタックを作る。 リストとベクタによる二種類の実装を提供し、それぞれのコンストラクタも用意する。 structによる解法 define-genericsでインターフェースを定義 データの表現をstructとして定義し、#:methodsキーワードでインターフェースを実装 コンストラクタは関数として用意 # lang racket (require racket/generic) (require racket/vector) (define-generics stack (pop! stack) (pu
Juliaは本来的にobject-orientedではない(資料1) object-orientedなコーディングをしたいときに使えるJulia特有のツール・概念がある Juliaはmultiple dispatch(wikipedia)というパラダイムに属する言語である(資料1,資料2) mutable struct という構文を使うと、一般的なOOP言語のクラスや構造体と似たような振る舞いを出来る。中に定義されるものは全てdataであり、関数も登録できるが、メソッドという概念は無いらしい。 単に連想配列を使いたいだけなら、「名前付きタプル」を使えばx = (name="Tom",age=21,job="engineer"); x.name #->Tomのように出来る。 典型的なOOP言語と似たような書き方をする方法もあるにはあり、色々な人が個別に研究している(資料3, 資料4)
目的 springbootでOpenAPI(swagger)を導入して簡単なアプリを作成する OpenAPIの使い方を学習すること APIの操作方法を学ぶこと CRUDを自作する 開発環境 ProductName: macOS ProductVersion: 11.3 IDE: eclipse_2021_03 REST(REpresentational State Transfer)とは? 設計方法のこと HTTPで定義されているメソッドの使用する(例:サーバ上にリソースを作成するにはPOST、リソースを取得するにはGET、リソースの状態を変更/更新するにはPUT、削除するにはDELETE) ステートレスであること(サーバーはクライアントのことを一切覚えない) 処理結果をHTTPステータスコードで返す 様々な設計原則の集合 RESTful API(REST API)とは? RESTの設計原
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 本記事は単体テストにおける偽陰性に焦点をあてています。偽陽性は別記事にします。 目次 振る舞いを検証できていない場合ただの負債になりかねない そもそも単体テストの目的って? 単体テストで検証したいものって? 振る舞い と 内部実装(実装の詳細) 観察可能な振る舞い とは 内部実装(実装の詳細) とは 注意:振る舞いと内部実装は視点によって変化する 検証したいものは外部から観察可能な1単位の振る舞い 現実世界で 振る舞い と 内部実装 を考える テストケースに内部実装が漏れ出ている例 このテストケースの問題点 テストケースで内部
Zenn にも書籍として公開しています. 読みやすい方で読み進めていただけたらと思います. Zenn の方が最新版です. この記事の目的 GraalVM ずっと触ってみたかったんですが,WebAsssembly 周りの実装が増えてきていることで万を持して動かしてみることにしました! こちらの記事では,公式ドキュメントに従って GraalVM を動かしてみた結果と実装例,コメント等を残します. GraalVM とは GraalVM is a high-performance JDK distribution that compiles your Java applications ahead of time into standalone binaries. These binaries start instantly, provide peak performance with no wa
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに こんにちは、事業会社で働いているデータサイエンティストです。 普段の業務ではR(とSQL)を使っていて、Rの最先端も確認していますので、今回の記事では最近CRANでリリースされた新しいオブジェクト指向システムS7について色々話そうと思います。 公式サイトはこちらです: 注意事項 公式サイトでも強調されていますが、S7はまだかなり早期の試みであって、パッケージとしては安定していません。なので、読者が本記事を数ヶ月後に確認する時、すでに一部の機能に重大な変更が入ってコードが実行できない可能性があります。 また、まだテスト段階のパッ
はじめに こんにちは、本日のディップ株式会社 Advent Calendar 2023の記事です。 普段はデータサイエンティストの仕事をしていまして、主にRとSQLなどを利用しています。 今回の記事では、エンジニア向けに、Rの中で複数存在しているオブジェクト指向プログラミング(OOP)システムの中で、一番幅広く利用されて、歴史が古く、かつ単純なS3について実践的に説明します。 データ分析の話は一切出てきませんのでご安心ください。 前提 詳細はこの記事を読んでいただきたいですが、 Rには複数のOOPシステムがあります。中でもS3、S4、R6が有名です。S7はまだテスト段階で、今後S3とS4の正式な後継システムになる予定です。 まず、S3は確かに自由すぎて怖いです。恐ろしいことはやり放題です。ただ、S3はかなり歴史があるため、変な挙動とか、S3でやるべきではないことは大体整理されて、ググったり
その理由を探るべく、我々はアマゾンの奥地へと向かった。 環境 少なくともElasticsearch 2以上はこの記事該当 概要 古事記にも書かれていたんじゃないかってレベルで、「Elasticsearchには32GB以上のメモリを割り当てるべきではない」とよく言われる。ESのオプション設定記事とか見てるとよく書かれている。 が、なぜ32GBなのか、Elasticsearchのヒープサイズに32GB以上を設定するとどうなってしまうのか。 そもそも本当なのか 2020年11月15日現在の最新は7系だが、公式ドキュメントを確認してみる。 Important Elasticsearch configuration | Elasticsearch Reference [7.x] | Elastic Set Xmx and Xms to no more than the threshold that
Introduction つい先日、CheerpjJ 3.0というブラウザでJavaアプリを実行可能にする コンパイラ/ランタイムがリリースされました。 これを使えば古のアプレットやSwingで作ったJavaアプリケーションが 最新ブラウザでpluginなしで動きます。 また、ライブラリ用のjarファイルもそのまま動かすことができるので、 本稿ではJavaライブラリをブラウザ上で使ってみます。 CheerpjJ 3.0? こことかで紹介されてますが、CheerpjJ 3.0について簡単に解説します。 CheerpJ 3.0は、Leaning Technologiesによって開発された、 ブラウザで動作するWASMベースのJavaランタイムです。 JavaバイトコードをJavascriptにJIT compileして実行できます。 何かを追加でインストールしたりする必要はありません。 現在は
昨年、2017年に、とっても意外で、とっても嬉しかったことと言えば、jfluteとしては、こちらですね。 「”価値あるサービスを生み出すエンジニア”になるために」新卒エンジニア研修を全公開! | REACH ONE ビズリーチのイマとこれから 新卒が成長して新卒研修を 入ってくる新卒のスキルの前提や、会社としての状況の変化から、新卒研修自体の形が変わってきて、講義形式から実践形式に変わってきました。 というか、もともとそういうのもやりたいね、でもフォローできる体制がなかなか整わない、というところでしたが... 新卒研修を受けた新卒が成長して、自主的に新卒研修の運用をしていく これが年々しっかりと積み重ねられて、jfluteも驚くくらい自己組織化されていました。(素晴らしい...) ということで、「そろそろ俺もあまり出番ないかな」と感慨と寂しさの狭間にいたのですが... 「jfluteさんの
発端 Java6までは言語仕様の中に命名規約の章があったけどJava7からはなくなった。あとパッケージ名もドメイン名逆順にしろというのが、ローカルでの利用を意図してるなら単一の識別子だけでいいということになった。そのころからlombokみたいにプロダクト名だけのパッケージ名を見るようになった気がする — きしだൠ (@kis) 2019年1月22日 今までjavaパッケージの命名はドメイン名の逆順というのが通例だと思っていたが、たしかにそれに沿わないライブラリも特にScala系のライブラリで見ることが増えてきた。 そもそもこの命名規則は確かに衝突を避けるためには合理的ではあるもののコード中の記述量が増えるため後発の言語でもまったく真似されていない。 最近のJavaでより短いパッケージの命名が許容されるならとても嬉しいと思い、本当にJavaのFQDN逆順命名規約は無視していいのか調べた。 調
2015年現在、関数型言語が勃興しつつあります。エンタープライズ分野で関数型言語が次世代のプログラミング言語マーケットの覇権を握ることとなるのだとしたら、いつどのように握るのか、それはどの関数型言語なのか、その動向が大いに気になるところです。 ・ 関数型言語の行く末を見定めるにおいて、過去のプログラミング言語興隆の歴史はどうだったのか、エンタープライズにおける主たるプラットフォーム・アーキテクチャーの変遷に絡めつつ振り返ってみます。 今から40〜50年程前のメインフレームの時代、そのメインフレームをターゲットとしたプログラミング言語、COBOLが覇権を握っていました。 時代を下って20数年前程になるとWindowsを始めとするGUIそしてクライアント/サーバー・システム開発用として、次にはC++が覇権を握ることとなります。そしてJavaが登場しました。Javaは当初Microsoft社のW
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く