https://kyoto-nanka.connpass.com/event/324686/ 補足など: https://susisu.hatenablog.com/entry/2024/09/07/213747
開発部のxgotoです。Haskellの初級・中級者向けのトピックを取り上げたいと思います。 今回は型(Type)についてです。型はHaskellの入門書でも必ず最初のほうに説明されるもので、手元の本によれば、 型とは、互いに関連する値の集合である。 ---- 『プログラミングHaskell』 Graham Hutton 著 / 山本和彦 訳 だとか、 値の世界は型と呼ばれる系統的な集まりへと分割される。 ---- 『関数プログラミング入門 Haskellで学ぶ原理と技法』 Richard Bird 著 / 山下伸夫 訳 などのように書かれています。たとえば Bool は True と False の2つの値からなる集合だし、Intは整数の集合というように、型は値の集合というふうにみることができます。それならば型などと呼ばずに集合と呼べばいいと思いますが、「異なるものには異なる名前をつけろ
僕がプログラミングできない理由 — 「まずは、言葉にしてみましょう」の意味を書いたのは、2014年の3月のことだった。ということは、今が2015年の12月なので、その間に流れた時間は1年と9ヶ月ほどだということになる。これは、少し驚きだ。あれから、もっともっと時間が経った気でいたので、少しどころか、正直に言うと、僕はかなり驚いている。 あれから僕はとっくに3年か5年以上の時間が経過したような気でいたのだ。だから、まだ2年すら経ってない事実に呆然と立ちすくむような感じだ。 しかし、これまでに流れた時間を、僕が短いと感じようが、長いと感じようが、まぎれもないもう一つの事実がある。 相変わらず、僕は、プログラミングができない ということだ。勿論、そんなことを自慢したいわけではないけれど、事実なのだから、仕方ない。 ひとつ、恥ずかしながら、書いておきたいことがある。この言い訳がどういう意味をもつの
知らない人がいると困るので、真っ先に書いておくけれど、僕はプログラマーではない。まったくもって、違う。 わずか、4年ほど前、退院後の自宅療養の時期にふと手にしたWeb関連の本に触発されて、HTMLやコンピュータ言語に少し興味をもつようになっただけのことだ。 本気で、自分が複雑なプログラムを書けるようになると考えたわけではない。 ひょっとしたら、僕にだってプログラムが書けるようになるかもしれない、少なくともそんなチャンスくらいはあるのかもしれないと、思っただけのまったくのど素人だ。 50歳を目の前に控えた僕が、プログラムを学ぶために、学校に行くなんてことは到底不可能だった。だけれど、学校に行かずして、しかも無料で学ぶということに関しては、今はいい時代でもある。 ネットで探せば、いろいろとプログラムを教えてくれる講座やブログがあるし、ソースコードを明らかにしてくれるものもある。 ドットインスト
以下の文章は、Paul Graham による How to Start Google の日本語訳である。 本翻訳文書については、Shiro Kawai さんに誤訳の訂正を頂きました。ありがとうございました。 (これは、14~15歳の子たちに、いずれスタートアップを始めたいと思ったら何をやるべきかについて私が行った講演である。多くの学校が、スタートアップについて生徒に何か教えるべきだと考えている。これこそが、私が学校が生徒に教えるべきと思っていることだ。) あなた方のほとんどが、いわゆる現実世界に放り出されたら、いずれはある種の職に就かねばならないと考えているでしょう。それは正しくなくて、今日、私はあなた方が職に就かなくて済むために使える技を指南します。 その技は、自分の会社を始めることです。つまり、それは働くのを避ける技ではありません。自分の会社を始めたら、普通の職に就いた場合よりも懸命に
子どものころは絵を描くのが好きだった。 学校の休み時間は、クラスメートはみな外にサッカーをしにいっていたが一人教室にのこってノートに漫画を描いている、そんな小学生だった。 自宅に戻っても、自室にこもってよく漫画を描いていた。 漫画と書くいっても、別に人を楽しませるために描いているわけではなかった。もちろん褒められると嬉しかったが、それが目的だったわけではなく、いま思えば、それは自分で自分を癒すかのような行為だった。自分を救うために絵を描いていた。 絵を描いているときは、それに夢中で没頭していて、ほかの何にも代えがたい時間を過ごすことが出来た。この時間が、どこか自分の救いになっていた。 中学二年生ぐらいになって思春期にさしかかった頃だろうか。教室で絵を描いていると浮いてしまうことに気づいて、恥ずかしくなって、描かなくなった。 それでもやっぱり絵を描いたりなにか作品を作ったりするのは好きだった
こんにちは、ソーシャル経済メディア「NewsPicks」のむとうです。 先日から『Ghost of Tsushima』の開発者が書いた『ルールズ・オブ・プログラミング』という本をちょっとずつ読み進めていて、プログラミング熱が高まっています。この本は大きな指針を示すだけで具体の話をするものではないのですが、読み物として面白いので私も似たようなことをやってみたくなりました。 何年もこういう仕事をしているとバグが入るパターンというのが見えてきます。そしてだいたいどこに行っても何の仕事でも似たようなことをすることになるのですが、今回の話もその一つです。 構造化テキストを文字列結合で作らない、置換でいじらないというのはこれだけみると何のことか分かりづらいかも知れませんがSaaS Product Team セキュアコーディングの啓蒙 第2回 (SQL インジェクション編)の内容とある面では同じ話です。
Helpful background for code reading The GNU coreutils has its foibles. Many of these utilities are approaching 30 years old and include revisions by many people over the years. Here are some things to keep in mind when reading the code: Tiny programs - These utilities are small, (mostly) single-source file programs designed to do one thing and do it well. They are not designed for long life or to
イントロ YouTubeを見てて、ふとしたきっかけでプログラミング初心者の自分でもアプリが作れるんじゃないかと思い、3週間で完成させた話を共有しようと思います! これからプログラミングを頑張ってみたい人や、既にエンジニアだけどchatGPTが本当に開発に役立つのかどうかを知りたい人のお役に立てれば幸いです。 今の時代なら誰でもアプリが簡単に作れます! 自己紹介 自分は3ヶ月前までプログラミングなんて全く触れたことがない人間でした。 しかし、最近流行りのAI、chatGPTに関して色々と話を聞いてみると、「もしかしたら自分もchatGPTを使えばアプリが作れるんじゃないか!?」と思うようになってきました。 LINEの「AIチャットくん」なんかもchatGPTを利用して一日で作られたらしいですね。 でもあれは元々アプリ開発経験のある人たちが作ったものなので、「本当にプログラミング初心者でもch
米ハーバード大が無償公開しているプログラミング入門講座を日本語に訳したWebサイト「CS50.jp」が公開された。プログラミング教育ベンチャーのLABOTが、「コロナ禍などで大学のキャンパスの環境が不安定になる中、多くの学ぶ意欲がある学生に、良質な教材に母語でアクセスしてほしい」と翻訳作業を進めてきたという。 公開したのは、ハーバード大コンピューターサイエンス学部のデビッド・J・マラン教授が、無料オンライン教育サービス「edX」で公開している人気講座「CS50」のうち、コンピュータサイエンス入門と、Python・JavaScriptを使ったプログラミング講座を日本語訳したもの。YouTubeの英語教材とあわせ、日本語のテキストで学べる。 CS50は、非営利で再配布・改変可能なクリエイティブ・コモンズライセンス(CC BY-NC-SA 4.0)で公開されており、非営利なら改編や再配布が可能だ
TL;DR 空のコレクションに allMatch() 的な判定をするとtrueになるぞ!気をつけろ! 背景 あるリストの全ての要素がとある条件を満たすどうかを返すメソッドがあり、 allMatch(何かしらの条件) した結果をbooleanとして返すという実装になっていた。このメソッドを利用しようとした時、ふと頭に疑問が湧いた。これって、リストが空だったら結果はどうなるんだっけ…? というわけでREPLを開いてちゃちゃっと確認してみたところ、結果はtrueであった。 # 空のリストに対して、「全ての要素が奇数である」という判定をしたら true になる…? jshell> List<Integer> list = List.of(); list ==> [] jshell> list.stream().allMatch(v -> v % 2 != 0); $3 ==> true 直感的には
LLVMやSwiftを作ったChris LattnerがCEOをやっている会社が、Pythonの使用感とC言語並の性能を併せ持つ言語としてMojoをアナウンスした。 まだ手元で試せる状態でリリースされてはいないが、最大35000倍Pythonより速いという。 Mojo🔥 combines the usability of Python with the performance of C, unlocking unparalleled programmability of AI hardware and extensibility of AI models. Also, it's up to 35000x faster than Python 🤯 and … deploys 🏎 pic.twitter.com/tjT09U4F80— Modular (@Modular_AI) May
ChatGPT が出てきて、平均値なものに価値がなくなって、外れ値に価値があるか、人の役割はノイズを与えるだとか言われているのを聞くが、そんなことはないと思っている。間違い方は無数にあるが、正しいのやり方はほんの少ししかない。なにかをするときには、無数の選択肢の中から、正しいものを選び取っていかないと、ゴールにたどり着かない。ChatGPT だってプロンプトとして与えられるものは無数にあるが、求める答えが得られるプロンプトはわずかだ。正しい答えを素早く得る能力の価値は ChatGPT があっても変わらない。 もちろん人間なので、たまに道から逸れるだろう。外乱もある。でも、その場合も都度都度修正していけば、目的地にたどり着ける。 ChatGPT の画期的なところは即座にフィードバックを与えて修正ができることだ。 だが、修正がなしに一発で決める方が、何度もフィードバックを繰り返すより、速い。仕
Basic認証、Digest認証、Bearer認証、OAuth認証方式はRFCで標準化されている認証方式の中で最もよく目にする方式だろう。 Basic認証とDigest認証は多くのサーバ、クライントで実装されており導入障壁が低い認証方式だ。 機密性の高いデータを扱うサービスでは比較的安全なBearer認証、OAuth認証方式を目にすることが多い。 ここではBasic認証、Digest認証、Bearer認証、OAuth認証方式について簡単に触れる。 この4つの概要を理解しておけば大体のWebサービスは理解できるだろう。 もしサービスが固有の認証方式を実装していた場合でもこれらの方式との類似性に着目すればすぐに理解できるはずだ。SAMLやOpenIDと言ったより複雑な認証方式を理解する上でも助けになると考える。 1. Basic認証方式 最も理解しやすいのがBasic認証方式だ。RFC 261
はへん 破片プログラマー 大きなシステムの改修、 巨大に積み上がったプログラムの上での実装、 難度の高い仕事、 ただし破片 巨大な破片 画面を0から 二年、三年、五年と経験を積み、 開発スキルを身に付けたディベロッパー、 だがしかし、 0から画面を作ってみると... ... あれ!? できない。 画面を0から作ったことがほとんどない。 あったとしても、隣の画面の真似ごとをしてただけ。 考えて0から作ったことがない レールのないところ歩いたことがない。 クラスやメソッド クラスを作る。 どうやって?どういう単位で? 決められた中でしか作ったことがない。 その決めがないと何もアイディアが浮かばない。 「どこに何を実装するか?」って、 白いキャンパスの上で考えたことがあるかい? ... メソッドを作る。 どうやって?どういう名前で? どういう引数と戻り値で? メソッドの修正はたくさんしてきたが、
私は新たにプログラミング言語を学ぶとき、しばしば簡単なLisp処理系を作ってみます。いくつかの言語で取り組んでいるうちに、このLisp処理系群に小さな共通基盤も出来上がったりしているので、これを紹介しつつ、Lisp処理系の実装がプログラミング言語の学習にどう丁度いいのかを紹介します。 Rosetta Lisp 自作のLisp処理系群を、ロゼッタ・ストーンから名を借りてRosetta Lispと呼んでいます。Rosetta Lispは以下のような特徴を持ちます。 一定の共通した言語仕様・VMの仕様に基づいて動作する Rosetta Lispは (Rosetta Lispに準拠するLisp処理系群は)、いずれも共通した命令セットのVM上でLispプログラムを実行するように実装されています。 Lispの簡単な実装では、よくインタプリタ形式が採用されます。kanaka/malやrui314/min
One day before Rust 1.0 was released, I published a blog post covering the fundamentals of error handling. A particularly important but small section buried in the middle of the article is named “unwrapping isn’t evil”. That section briefly described that, broadly speaking, using unwrap() is okay if it’s in test/example code or when panicking indicates a bug. I generally still hold that belief tod
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く