タグ

ブックマーク / kmizu.hatenablog.com (16)

  • ChatGPTはプログラミング言語マスター(語弊ありまくり) - kmizuの日記

    皆さんおはようございます。見ている人は見ていたかもしれませんが、昨夜はかなり遅くまで巷で話題沸騰のChatGPTによくわからんクエリを投げて、その結果をみてげらげら笑っていました。特に存在しないプログラミング言語であり「ScalaにHaskellと同じ型推論を加えた」言語Scalayがあることにしたら、ChatGPT当にHaskellぽい(単なるHMでなく、Haskellぽいというのは型クラスまで推論される辺り)型推論を持つ架空のScalayコードを解釈実行してくれたりしたところは、控えめに言っても予想外の結果で深夜なのに部屋で忍び笑いをしていました。 Scalaに引数の型推論を追加したようなパチもんのプログラミング言語Scalay(仮)ができてしまった(ChatGPTと対話してる間だけの短い命)。 一応、add: (Int, Int) => Int が推論されてるのすばらですね。 p

    ChatGPTはプログラミング言語マスター(語弊ありまくり) - kmizuの日記
  • 書籍のサンプルコードと違う言語で写経することの意義 - kmizuの日記

    こんばんは、みずしまです。最近は主に強化学習の勉強をしているのですが、読み進めていく過程で少し悩みの種がありました。それは、サンプルコードの扱いです。サンプルコードはPythonで書かれていて、実際に書き写すことが私にとって理解の助けになるのは確かなように思えましたが、一方で過去の経験から、そのまま写経すると「スルスルと動いてしまってフィードバックとして不十分そうだな」と感じたので、Scalaで書いてみることにしました。 別にScalaでなくて、JavaでもRubyでもあるいはJuliaでも良かったのですがそれはともかくとして、元のサンプルコードと違う言語で書くことで得られる利点も結構あるものだなというのが正直に感じた点です。たとえば、np.mean(...)というコードが書籍では出て来るわけですが、「そういえばScalaでmeanと同じことをするにはどうしたらいいんだっけ?」と考えること

    書籍のサンプルコードと違う言語で写経することの意義 - kmizuの日記
  • 動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記

    注:誤解されないように最初にこの記事の意図を書いておくと、古典的な静的型付き言語VS.動的型付き言語の論争をするつもりはありません。これまで色々なプロジェクトを観察(風聞も含む)して来たところ、そういう傾向があるのではないかという仮説です。それと、文脈として主にWebアプリケーション開発する時のことを想定しており、それ以外のケースはいったん脇に置いています。WebアプリケーションだとPHP(動的型付き言語)の方が圧倒的に事例多いのではという感想もありそうですが、その辺りを考え出すと話がこんがらがるので、これもいったん脇においています。 たとえば、色々な事例を見聞きするに、スタートアップ企業において動的型付き言語であるRubyのWebアプリケーションフレームワークであるRuby on Rails(RoR)は好まれる傾向にあります。近年のPythonの動向はさておき、未だにRoRの求人がかなり

    動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記
  • Scalaの学習コストについての私見 - kmizuの日記

    2022/01/25 17:10追記 以下のツイートが別に「Scalaが主眼でない」こと自体は承知しています。一般論として、Scalaに限らず言える技術選定の話ですよね。ただ、妙な方向への読解をちょくちょく見かけたので、それに乗っかる形で現状のScalaについて率直な感想を書いておこうと思ったのでした。「この話とは別なんだけど」みたいな言葉をつけておけば良かったです。申し訳ありません。 数日前、以下のツイートに端を発して色々な意見が交わされていました。 「Scala好きなメンバーがプロダクト開発にScalaを採用して1人で開発していたが、そのメンバーが抜けてしまいScalaコードの保守ができなくて別の言語で書き直すことになった」という技術選定の失敗のお手のような事例を目の当たりにしてしまった....— コミさん (@komi_edtr_1230) 2022年1月19日 これを見て「いや

    Scalaの学習コストについての私見 - kmizuの日記
  • Qiita記事「エンジニアの"有害な振る舞い"への対処法」への強烈な違和感 - kmizuの日記

    最近、Qiitaで話題になってそこそこバズった(?)記事に、 qiita.com がありました。これ、最初は一読して凄いまともなことばかり書いているように見えましたが、一方で何か妙な違和感がありました。それは、私がいくつかの振る舞いについて思い当たりがあるせいではないか?と考えてみましたが、反省するところがあるなと思いつつも、何かが変だと感じていました。今朝、違和感の理由がわかった気がするので、書いておきたいと思います。 一番大きな問題は、「有害な振る舞い」といいながら、客観的に観察できる行為ではなく、主観的に行為の意図を勘繰っていることです。 そもそも、著者様は 私個人の経験に基づくため定性的かつ主観的な意見にはなりますが、メガベンチャーにて8年間様々なチームメンバと開発業務に携わりながらスクラム開発の各役割を1年ずつ、それからミドルマネージャーを2年経験し、さ> らに周辺チームや他部署

    Qiita記事「エンジニアの"有害な振る舞い"への対処法」への強烈な違和感 - kmizuの日記
  • 私なりのオブジェクト指向プログラミングの定義 - kmizuの日記

    きしださんの以下のツイート オブジェクト指向はこの20年だれも再定義せずみんな自分の思うオブジェクト指向を暗黙に仮定して適当に話してるだけなので、技術的な共通認識のもとの議論はほとんどできないんですよ。という話を「オブジェクト指向をきちんと使いたいあなたへ」の記事に書いたのだけど、そろそろ公開するか— きしだൠ(K8S(Kishidades)) (@kis) July 29, 2019 を読んで、そういえば、私が思うオブジェクト指向の定義、についてツイッター以外ではあまり語ったことがなかったなと思い返し、ちょっと記事にしてみることにしました。まず、結論からいうと、私はオブジェクト指向プログラミングとは サブタイピングを活用したプログラミング手法の総称 と考えています。ここで、クラス継承とかインタフェース継承とかダックタイピングとかではなく、単にサブタイピングであるのがポイントです。なお、型

    私なりのオブジェクト指向プログラミングの定義 - kmizuの日記
  • 実践Scala入門(共著)が発売されます - kmizuの日記

    https://www.amazon.co.jp/dp/4297101416 企画自体は2015年くらいから始まっていたんですが、紆余曲折あって、約3年経ってしまいました。ともあれ、ようやく出版までこぎつけられてほっと一息です。 実際には多少遅れる可能性がありますが、10月27日から技術評論社さんから発売予定なので、この機会にScalaを勉強してみたい方は、是非予約していただければと思います。 さて、書いてる間の紆余曲折書いても意味がないので、このエントリでは、この書籍のウリを簡単に書きたいと思います。 現状の日語のScala書籍は、大半が新しいバージョンのScalaに追随できてなくて、新しくScalaに入門する人に勧められるいい書籍が ほとんどないという問題意識がありました。いわゆるコップScala書籍の中でもかなり売れていることもあってか、2.12対応の第三版まで出版されているも

    実践Scala入門(共著)が発売されます - kmizuの日記
  • Javaのジェネリクスは「まがい物」ではない - kmizuの日記

    先日、自分が書いた kmizu.hatenablog.com に対する反応として、「Javaのようなまがい物のジェネリクスと比較するのは適切でない」「Javaのジェネリクスと比較するのは適切でない」(おそらくC#や(C++等(2017/09/24追記))の言語と比較して)といった コメントをいくつか見かけました(はてなブックマークコメントやツイッターなどで)。しかし、ここでは、そのような言説こそが適切でない、ということを言いたいです。なお、methane氏との 対話については既に終わったものなので、それとは関係ありません。 そもそも、Javaジェネリクスは、静的型付き関数型言語で既に一般的であったパラメータ多相をJavaに追加する目的で導入されました(C++テンプレートのようなものをJavaに追加するためだと思っている人がいるかもしれませんが、それは実態にあっていません)。実際、Java

    Javaのジェネリクスは「まがい物」ではない - kmizuの日記
  • 技術イベント「Understanding Scala」を開催しました(6/10) - kmizuの日記

    Understanding Scala - connpass 昨日、表題の技術イベントを自分主催で行いました。なんでこんなイベントをやろうと思ったかというと「皆、Scalaを難しくめんどくさい方法で学んでるのでは?」という疑問が自分の中であって、その原因として、サンプルプログラムの集合を通して、ボトムアップになんとなくイメージで 全体像を作りあげてるのではという思いがありました。 そのようなアプローチに対して懐疑的な自分としては、このイベントでは(厳密にはやってませんが)どちらかというとトップダウン的アプローチでプログラミング言語について理解してもらおうと思い(もちろん、例は大切なので必要に応じて詳細に下りるのは忘れませんでしたが)、5つの発表の全てを全部自分でやりました。さすがに、5時間程度しゃべりっぱなしというのは疲れましたが、おかげさまで(?)、色々な疑問が解決したとか、メソッドと関

    技術イベント「Understanding Scala」を開催しました(6/10) - kmizuの日記
  • Scalaに関する誤解と事実を語る - kmizuの日記

    TL;DR 世間のScalaに関するイメージは、昔のままであることが多い 昔のままどころか、最初から間違ったイメージを持たれていることも多い 実際には、既に解決されている問題は多々あるし、改善に向かっていることも多い プロジェクト管理の問題を言語に押し付けているケースもある はじめに 自分が最初にScalaに触れたのが2005年(Scala 1からカウントした場合)、あるいは2007年(Scala 2以降からカウントした場合)と、Scalaとの付き合いも結構長くなってきましたが、その間に Typesafe社(現Lightbend社)の設立 実質標準ビルドツールとしてのsbtの確立 ライブラリのバイナリ後方互換性に関するポリシーの策定 公式ScalaイベントScala Daysのはじまり Play 2 Frameworkの登場 Scala Center発足 その他色々 がありました。この間、

    Scalaに関する誤解と事実を語る - kmizuの日記
  • TwitterはScalaを捨ててません(少なくとも現在は) - kmizuの日記

    なんだかTwitterの一部で www.utali.io の記事が話題になってるようですが、はっきり言って誤情報です(というか、何故そんな誤解をしたのか知りたいくらい)。根拠はいくつかありますが Twitterは最近(ここ数ヶ月)にScala CenterのAdvisory Boardにjoinしている 置換えたとされるFinagleのコミットが最近でも活発である そもそも引用元ツイートで一言も、Scalaを捨てたに相当する表現が見られない 1についてですが、Scala作者のMartin Odersky先生が Odersky先生も参戦してる。"For what it's worth Twitter just joined the Scala Center advisory board as a full member. Don't believe the FUD."— 水島宏太(ゆる糖質制

    TwitterはScalaを捨ててません(少なくとも現在は) - kmizuの日記
  • Scalaの学習コストを下げるための心得 - kmizuの日記

    追記:Twitterで、「それって、言語マニアにしかできない技のような気が」という指摘を受けました。自分としては一般的に適用可能な話だと思っていますが、あるいは自分の感性が著しくずれているのかもしれません。その辺承知の上でお読みください。 Scalaは習得が難しい言語だ、とよく言われます。また、実際問題として、Scalaの言語仕様の全体はそれなりに複雑でもあります。しかし、それはたとえばJavaでも言語仕様の全体像を把握するのは難しい話であり、Scalaに限った話ではありません。にも関わらず、Scalaの習得が難しいとよく言われるのはプログラミング言語の学習モデルが誤っているからではないかと最近思うようになりました。そこで、Scala(や他の言語も含めて)のコストを下げるために必要な心得についてちょっと書いてみます。 Scalaはオブジェクト指向言語である これは、Scalaは関数型プログ

    Scalaの学習コストを下げるための心得 - kmizuの日記
  • 個人的に好き(な/だった)技術書籍10選 - kmizuの日記

    「プログラマのための技術書籍○選」とかよく見るじゃないですか。あれ、自分はどうにも好きになれないというか、後進を自分がたどってきた道に引きずり込みたいだけじゃねーかと思うのが多いです(全部がそうだとは言いません)。なので、今回のエントリでは、あくまで、「私が好きな」技術書籍を10冊紹介することにします。単に思い出深いというだけの書籍も入っており、間違っても「オススメ書籍」ではないのでご注意を。 オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング) 作者: バートランド・メイヤー,酒匂寛出版社/メーカー: 翔泳社発売日: 2007/01/10メディア: 単行(ソフトカバー)購入: 11人 クリック: 307回この商品を含むブログ (130件) を見る オブジェクト指向入門 第2版 方法論・実践 (IT Archi

    個人的に好き(な/だった)技術書籍10選 - kmizuの日記
  • 名前を簡単に変えられることのありがたさ - kmizuの日記

    何を当たり前のことを、と言われそうだが、最近の静的型付き言語のIDEには、「名前変更」のリファクタリングを自動的に行ってくれる機能があり(リフレクションなどIDEが追跡可能な範囲を超える場合を除いて)、後から簡単に名前を変更することができる。このような機能は動的型付き言語用のIDEにもみられるものではあるが、IDEが追跡できる範囲がより限定的であるため、結局、IDEによる変更が正しいかどうかは目視に頼らざるを得ない。 静的型付き言語であっても、文字列を使ってリフレクションAPIを使用する場合など注意すべき点はあるのだが、その範囲が限定的であるため、名前の変更を安心して行うことができる。名前というのは後になってから変更したくなるものの一つであるため、これは静的型付き言語用の高度なIDE(Eclipse, NetBeans, IntelliJ IDEA等)の利点という事ができるだろう。 特にプ

    名前を簡単に変えられることのありがたさ - kmizuの日記
  • 『C.J.Dateのデータベース実践講義 - エンジニアのためのリレーショナル理論』 雑感(途中) - kmizuの日記

    データベース実践講義 ―エンジニアのためのリレーショナル理論 (THEORY/IN/PRACTICE) 作者: C.J.Date,株式会社クイープ出版社/メーカー: オライリージャパン発売日: 2006/02/01メディア: 大型購入: 4人 クリック: 170回この商品を含むブログ (52件) を見る 実はまだ完読してないのだけど、結構刺激的で面白いなのでブログ再開ついでに紹介してみよう。 まず断っておく必要があるのは、このは、SQLや特定ベンダのRDBMSの取り扱い方のノウハウではないということ。その意味でこのを読むことで即座に実践に何かを活用できるかは不明である。彼は関係モデルの祖であるCoddと共同作業をしていた時期があったこともあってか、このではRDBの基礎であるべき(と彼が主張する)リレーショナルモデルをきっちり理解しなければならないという主張で一貫しており、こ

    『C.J.Dateのデータベース実践講義 - エンジニアのためのリレーショナル理論』 雑感(途中) - kmizuの日記
  • JavaとScalaとC#のジェネリクス機能比較表 - Onion開発しつつ、PEGEXを開発する日記

    JavaScalaとC#のジェネリクスは、いずれも継承を持ったオブジェクト指向言語においてParametric Polymorphismを実現するための手段であり、それぞれ異なった特性を持っている。というわけで、それぞれの言語においてジェネリクスがどのようにサポートされているかを比較した表を用意してみた。後で気が向いたら、各項目の説明を追加するかも。 Java(5.0以降) Scala C#(4.0) ジェネリックなクラス ○ ○ ○ ジェネリックなメソッド ○ ○ ○ 型パラメータの上限 ○ ○ ○ 型パラメータの下限 × ○ × 型パラメータの推論 ○ ○ ○ 全ての型のサブタイプ(ScalaにおけるNothing) × ○ × definition-site variance × ○ ○ use-site variance ○(Wildcard) ○(Existential Typ

    JavaとScalaとC#のジェネリクス機能比較表 - Onion開発しつつ、PEGEXを開発する日記
  • 1