タグ

プログラミングに関するrryuのブックマーク (552)

  • あるゲーム体験版の“ボス超硬化バグ”と“謎のノイズバグ”が、「同じ原因だった」との報告。過去にもいろんな開発者を悩ませたとある罠 - AUTOMATON

    あるゲーム体験版の“ボス超硬化バグ”と“謎のノイズバグ”が、「同じ原因だった」との報告。過去にもいろんな開発者を悩ませたとある罠 - AUTOMATON
    rryu
    rryu 2024/11/27
    数値のパースをロケールを解釈するルーチンでやってしまったというバグか。日付と数値をパースするルーチンはデフォルトがロケール解釈する方なのでやらかしがちである。
  • 私の心を揺さぶったプログラミング言語 - ABAの日誌

    'Programming Languages That Blew My Mind'というブログ記事で、8歳からプログラマーとして活動しているDavid Tellerさんが、人生で出会った革新的なプログラミング言語について紹介している。 BASIC A language designed to make programming simple. Mind blown: Programming my own games! Mind blown: Arrays (or DIM, as they were called)! Mind blown: GOTO! Mind blown: GOSUB! Original, line-based, Basic is dead, but its legacy lives on in VB.Net, VBA, but also in more subtle ma

    私の心を揺さぶったプログラミング言語 - ABAの日誌
    rryu
    rryu 2024/11/07
    NewtonScript。今思えばSelfの派生言語なのだが、継承チェーンがprotoとparentの2系統があってイベントバブリングの仕組みを言語仕様でカバーしているのがおもしろいと思う。
  • 中学生から来た質問「プログラミングってChatGPTに訊いた答えをそのまま書いてもプログラミングって言えるんですか?」

    くまぎ @kumagi 中学生から来た質問 「プログラミングってChatGPTに訊いた答えをそのまま書いてもプログラミングって言えるんですか?」 僕の答えは 「もちろん、いくらでもChatGPTに訊いたらいい。そのうち絶対どこかで自分の期待と実物のズレができるからそれを直さなきゃいけなくなった所が今のスタート地点」 ばびぶう @game_babibon プログラミング言語を使ってコードを記述すること=プログラミングってなってしまっているせいかなと 意図した計算を行うため、コンピューターに指示(プログラム)を出すことがプログラミングの定義なので プログラミング自体はChatGPTに問いている段階で成立しているという x.com/kumagi/status/…

    中学生から来た質問「プログラミングってChatGPTに訊いた答えをそのまま書いてもプログラミングって言えるんですか?」
    rryu
    rryu 2024/10/14
    AIにやらせるのも設計から丸投げから翻訳のみのレベルまで色々あるが、設計から丸投げはプログラミングとは言わないだろう。でないとSIerの顧客がプログラミングしていることになってしまう。
  • 汚いコードの害を伝えたいだとか

    汚いコードはよくない (2024.9.22 追記:続編を具体的にかきました!) コードを書くと、コードは増える プログラムは、ソースコードと呼ばれる文字列を記述する事で作成されます。このことを、単にプログラムを書く、コードを書く、などと言ったりします。 ほとんどの場合、プログラムを書くときには、その目的があります。 なにかの目的を達成するために、ソースコードと呼ばれる文字列を記述します。 この記述方法にはいろいろなものがあり、同じ目的を達成するにも無数の方法が存在します。 どの方法を選ぶかは作者に任されている、という言い方もできます。 ところで、ソースコードを記述していき、プログラムで実現できる事が細かくなるにつれて、文字の数はだんだんと増えていきます。 コードの増え方にもいろいろある この文字が増えていく様子を比喩的に表現することを考えます。例えば書類を積み上げることや、積み木を積み上げ

    汚いコードの害を伝えたいだとか
    rryu
    rryu 2024/09/21
    挿絵の積まれた書類は綺麗な部類で、汚いコードというのは「どうしてこうなった」というレベルなのだ。だから触れずに負の遺産として残る。
  • テキストエディタをフルスクラッチで書いてみた - Qiita

    テキストエディタをフルスクラッチで書いてみた 完成品はこちらになります https://github.com/sxclij/sxceditor2 それVimじゃねぇの? これはもしかして、既存のテキストエディタを真似しただけで、当にフルスクラッチで作ったわけじゃないんじゃないかと思い始めました。GitHub上にも数多くのVimクローンが散見されています。そこでC言語の力を借りて「当にフルスクラッチで作ったテキストエディタ」を作ろうと思い立ちました。 とは言っても筆者は宗教上の理由によりmallocを使わない事にしているので今回の記事では一切動的メモリ確保はしません。しかし便利な世の中になった物で、mallocを一切使わなくてもテキストエディタが作れる様になりました。 記事ではそんな「誰でも簡単にできるテキストエディタ開発」をやってみたいと思います。 1. プロジェクトの背景 なんでテ

    テキストエディタをフルスクラッチで書いてみた - Qiita
    rryu
    rryu 2024/09/19
    まさかのchar単位のリンクリスト。ポインタ分のオーバーヘッドがすごい。
  • MS-DOS 1.25 のソースを動かす - Qiita

    するとソースからビルドした MS-DOS v.1.25 が動きます。mcopy などが無い場合は各自でmtoolsをインストールしてください。 (内容と少し関係ない宣伝) Binary Hacks Rebooted というが出ました。 18年前の記録 : https://w0.hatenablog.com/entry/20061106/p5 前回は、Hacks 的なノリで書いてた気がするけど、今回はみんな論文かよというくらいのレビューをしていて、品質は Hacks 的なノリを超えてると思いますね。(私は色々忙しくてあまり参加できなかったけど…) 私も少し書きました。私が書いたのは、 このへんの時に理解したファームウェアプログラミングの話 (結局 FireBox EXPLODED はなんもしてないです) と、それの準備的な話x2、あとそれとは関係なく書いてる時期に知った huge pag

    MS-DOS 1.25 のソースを動かす - Qiita
    rryu
    rryu 2024/09/06
    「IBM PC用のIO.SYSが含まれていないので自作ファームウェア用のIO.SYSを作って動かそう」という思っていたよりハードな話だった。
  • 初心者がプログラミングを学ぶときに最も効果的な方法は「写経」だと思う|shi3z

    プログラミングの勉強方法で最も効果がない方法は「写経」です。コードを記憶しても無駄です。実際のプログラミングでは記憶にないコードを作り出さなければいけないからです 「写経」はタイピング速度の向上やキーワードを覚える効果はあるかもしれませんが、肝心のプログラミングには役に立ちません — Koichi Nakashima (@ko1nksm) September 3, 2024 こういうエントリを見かけたので。 僕は1990年代からプログラミングを人に教える仕事をしています。最初は中学の時に技術家庭科の授業を先生から任されて同級生にプログラミングを教えることから始まりました。その後、色々な方法を試しましたが、結論としてプログラミング初心者は写経した方が結局は上達が速いと今は考えています。 それが特に強く感じられたのは2015年頃から色々な人にAI関連のプログラミングを教え始めた頃です。 AI

    初心者がプログラミングを学ぶときに最も効果的な方法は「写経」だと思う|shi3z
    rryu
    rryu 2024/09/05
    文法エラーを直すには文法の知識が必要だが、正解のあるもので文法エラーの修正を体験すればある程度ルールが分かるので対応できるようになるということらしい。いきなり言語仕様と向き合うよりはましという感じか。
  • プログラミング言語AWKのここがLOVE

    プログラミング言語AWKが好きなので、この言語のどこが好きかを語ります。主にAWKを知らない、知ってるけど使ったことが無いかた向けの記事ですが、使ったことがあるかたも「こういう思いで使ってる人がいるのか」と遠巻きに眺めてもらえればと考えます。また、後半で最近出たAWKの書籍についても紹介しているので、そちらも役立つかもしれません。 AWKとは AWKは1977年にAT&Tベル研究所で生まれたプログラミング言語です。AT&Tベル研究所といえばUNIXが生まれたところです。著者もUNIXに縁が深い、この世界のレジェンドばかりです。たとえばKernighan先生はプログラミング言語Cをはじめ、たくさんの書籍の著者として有名です。なんだか強そうな言語ではないかという気がしてきました。 AWKは汎用プログラミング言語ですが、「1行1レコードになっているテキストファイルを最小の手間で処理するワンライナ

    プログラミング言語AWKのここがLOVE
    rryu
    rryu 2024/08/25
    プログラミング言語AWKってもっと前からなかったっけと思ったら30年以上経ってから第二版が出たのか…
  • Haystack

    An IDE built on top of a canvas, Haystack takes care of the tedious and confusing parts of coding for you

    Haystack
    rryu
    rryu 2024/08/24
    コードを解析する時頭の中はこうなっていてVSCodeにも移動の履歴を辿る機能があるのだが、枝の履歴はすぐ無くなってしまってどうしたものかという感じだったのだがまさにこれという感じ。
  • いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita

    いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう!ShellScriptBashLinuxUNIXmacOS はじめに [ $? -eq 0 ] や [ $? -ne 0 ] は冗長でデメリットしかありません。非常に多く見かける書き方ですが、1979 年に Bourne シェルが広く公開された時からこのようなコードは必要ありませんでした。実際に当時はこのような書き方は使われておらず、このような書き方をしなければならなかった歴史的な経緯などはありません。これはなぜか広まってしまった良くない書き方です。 優れたコードとは無駄がないシンプルなコードです。丁寧なコードとは無駄な処理を書くことではありません。[ $? -eq 0 ] や [ $? -ne 0 ] は書かないほうが、簡単で読みやすくわかりやすくなります。優れた文法

    いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita
    rryu
    rryu 2024/08/22
    コマンドを実行したいだけで分岐したい訳じゃないんだという意図を盛り込むとエラーの分岐を別に書きたくなる。分岐のためにコマンドを実行するならそう書くべきだと思う。
  • 実装する前にきちんとドキュメントを読んだ方が良い、という話 - Qiita

    どうも、初めまして。 tokeと申します。 今回は自分の失敗談を話したい、と思います。 実装する前にドキュメントを読まないと、最後になってゴールに辿り着けない可能性がある そういう経験をしたのでご紹介します。 例えば、自社で集めた顧客のデータを活用し、Marketoにデータ連携したいとします。 marketoのAPIドキュメントを調べると、顧客の情報を登録する手段では以下の2パターンがあります。 POST /rest/v1/leads.jsonを使うパターン 以下のドキュメントにあるPOST /rest/v1/leads.jsonを使って、顧客のデータを送信し、連携する事ができます。 https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/lead-database/leads [※Marketoで

    実装する前にきちんとドキュメントを読んだ方が良い、という話 - Qiita
    rryu
    rryu 2024/08/15
    同じようなAPIが複数ある場合、事前にドキュメントを読んでも違いがよく分からないことがあるが、一通り動くようになってから改めて読むと分かる場合もある。それで適切じゃない使い方に気づくパターンもある。
  • ブロッキングってそもそも何だよ - Lambdaカクテル

    さきほど別のブログ記事を書いていて(それはまたそのうち発射するけど)、その中でブロッキング処理とか同期的に扱う、という言葉を使った。 このときの自分の理解がこれ: ブロッキング 呼ぶと待たされる ノンブロッキング 呼んでも待たされない、すぐ返る そのときはJavascriptの話をしていた。Javascriptはシングルスレッドの言語だ。そして、各種のAPIは基的にノンブロッキングに設計されている。つまり、コールバックを取るようになっていたり、Promiseを返すようになっているということだ。だから、処理系が提供する特殊な処理(例えばNodeが提供するhogehogeSync()といったもの)を利用しない限り、ブロックが原理的に起こらないし、あえてする理由もない。 という話を書いていて、でも重い計算処理は待たされるだろと思った。これはブロックしていることに他ならないのではないか、と。 し

    ブロッキングってそもそも何だよ - Lambdaカクテル
    rryu
    rryu 2024/08/01
    ブロッキングは対応するノンブロッキング処理がある場合の言葉なので、たとえばJSのalert()はブロッキング処理だがノンブロッキングなalert()は無いのでことさらブロッキングとは言わない。
  • これを知らなければ、C++プログラマを名乗れない。ITエンジニアも驚いた「C言語」の配列の仕組み→「初めて知った」「配列へのアクセスの書き方が糖衣構文」

    二項しいぷ @BinomialSheep C++の「す、すげーー!!そんなことすなーっ!!!!!!」シリーズ 『プログラミング言語C++ 第4版/ストラウストラップ』 pic.twitter.com/KjiDaXe0tj x.com/winter_kyopro/…

    これを知らなければ、C++プログラマを名乗れない。ITエンジニアも驚いた「C言語」の配列の仕組み→「初めて知った」「配列へのアクセスの書き方が糖衣構文」
    rryu
    rryu 2024/06/30
    C言語には配列というデータ型は無く構文糖が見せる幻影で実体はポインタであるということなのだが、sizeofだけがなんか違うんだよなあ。
  • 良いコードってどんなコードですか?という質問を受けたら何と答えるか - snoozer05's blog

    技術顧問先で、一生懸命コードに向き合っているプログラマーになりたての方から、次のような質問をもらいました。 最初に面談した時、1年後にいいコードが書ける、上手に書けることを目標にしましたが、 先日スクール時代の同期(それぞれRubyの会社で働いている)と話したところ、会社ごとにレビューの仕方やコードに関する基準がさまざまなようで、良いコードとはなんなのか疑問に感じました。「いいコード」とは、みたいな部分で島田さんの考え方をお聞きできたら嬉しいです。 この質問にぼくは次のような回答をしたのですが、「この質問が来たら他の人はどんな回答するんだろうな」に興味があるので、ここにしたためておきます。もしよかったら「若者にこれを聞かれたら自分ならこう答える」をコメントなどで残していってもらえたら嬉しいです。 とても大事な疑問を見つけられたんだなあと思います。 「良さとは何か」ということに向き合う必要の

    良いコードってどんなコードですか?という質問を受けたら何と答えるか - snoozer05's blog
    rryu
    rryu 2024/06/23
    悪くないコードと良いコードは別物で、良いコードはドメイン特化なので答えが一つにならない。悪いコードの意見は一致するので、まずはその轍を踏まない悪くないコードを目指すべきだと思う。
  • じゃあ何すか、COBOL以外では4.8 - 4.7 - 0.1できないってことっすか / ScalaとSpireで安心安全な計算ライフを実現しよう - Lambdaカクテル

    先日こういうツイートが流れてきた。 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。— 遊撃部長F/S&RWAs (@fstora) 2024年6月6日 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。 普段我々がゴリゴリ馬車馬のように使っているソフトウェアでよく利用されている浮動小数点型、すなわちfloatやdoubleなどは特定の算術に弱いことが知られている。というかもうこの手の話題はあまりに拡散されてしまったので、なぜかネット民はみんな知っている基礎教養、三毛別羆事件とかデーモンコアみたいな感じになっている。 ちなみにこれはCOBOLかそうではないか、という軸が問題になっ

    じゃあ何すか、COBOL以外では4.8 - 4.7 - 0.1できないってことっすか / ScalaとSpireで安心安全な計算ライフを実現しよう - Lambdaカクテル
    rryu
    rryu 2024/06/11
    他の環境での計算と誤差の出方が違うというのが問題になるので、精度が高い方がいいでしょというのは8087由来の80ビット浮動小数点数の悪夢が再来してしまう。
  • エラーが出たら喜べ。エラーをちゃんと出せ。 - Qiita

    どうもエラーを出すもしくはエラーが出るのが怖いという人がいるみたい。例えば改修を行うときに既存部分でエラーが出ないことを最優先にして増築を行いいびつな構造を生み出すとか、単純に例外を全然使わないとか。エラーが出ると、「うわ、エラーになった。手間かけさせやがって面倒だなぁ…」みたいな感覚があって、とにかく自分がコードを書くときも一切例外を投げないというスタンスをとりがちなのかもしれない。 私はここで、適切にエラーが出てくれるのはむしろ喜ばしいことであり、自分がコードを書くときも積極的にエラーを出すようにすべきだ、という主張をする。 関数定義のドキュメンテーションの一部 ある関数の中身で一番最初に書くべき処理は何か、それは引数のチェックをして条件を満たさなければエラーを出すことである。例えば文字列は特定の形式になってなければならないとか、数値に最大値最小値があるとか、これらは関数の入力の前提条

    エラーが出たら喜べ。エラーをちゃんと出せ。 - Qiita
    rryu
    rryu 2024/05/05
    なぜか一部の処理が行われない場合があるという一番きつい不具合を経験すると考え方が変わる。
  • そろそろ「ググる力」とかいう妄言は根絶した方がいい

    従来プログラミング業界においては、やれ「ググる力が重要」だの、やれ「分からないことはググればいい」だのと言われてきたわけだが、もうそろそろこういう妄言は根絶されるべきだ。 そもそも、専門知識の要る分野でそれなりの水準の仕事をしようと思えば、ググって済むようなことはほとんどない。 実際、プログラミング以外のあらゆる分野で「ググればいい」なんて言われることはほぼ無い。その分野の仕事に必要な基礎知識を身につける方が圧倒的にウェイトが高いからだ。 「ググる力」とか言ってるアホは、じゃあためしに俺の手元に、タネンバウムの「コンピュータネットワーク」第6版があったから、これと同等の知識を、コーディング時の調べ物だけで身につけてみてくれないか。 こんな知識は業務で必要ない?そりゃお前がその程度の仕事しかしてないってだけだろ(笑) ネットのサンプルコードコピペするしか能のないIT土方、コンピュータサイエン

    そろそろ「ググる力」とかいう妄言は根絶した方がいい
    rryu
    rryu 2024/04/28
    基礎は別途学べというのは分かるが、一切ググらずに公式ドキュメントの該当記述に辿り着くというのはかなりの縛りプレイだと思う。
  • キャッシュと向き合う、キャッシュと共に生きる / cache pattern

    PHPerKaigi 2024の登壇資料です。 https://phperkaigi.jp/2024/ - https://speakerdeck.com/moznion/pattern-and-strategy-of-web-application-caching - https://sou…

    キャッシュと向き合う、キャッシュと共に生きる / cache pattern
    rryu
    rryu 2024/03/04
    キャッシュはキャッシュすることよりも適切に更新することの方が難しい。適切に更新できないと不具合になる。
  • うるう日にしか発生しないバグ

    昨日うるう日にしか発生しないバグに遭遇した。Javascriptを書く人には有名な話だとは思うので大して面白くはないかもしれないが一応メモ。 詳しくは書けないがバグが発生した関数の仕様としてはざっくりと下記のような感じ。 対象の年月日が基準日の1年前から1年後の間に含まれる場合はtrueを返しそうでない場合はfalseを返す 引数として2020-12-24というフォーマットの文字列が渡される(判定対象の日) 引数として2021-01-01というフォーマットの文字列が渡される(+-1年の基準日) Javascriptで書く (例) 対象の日: 2024/10/10 基準日: 2024/01/28 この時、trueになる範囲は2023/01/28 ~ 2025/01/28。なので2024/10/10はtrue。2023/01/28も2025/01/28もtrueになる。閉区間。 とあるコードの

    うるう日にしか発生しないバグ
    rryu
    rryu 2024/03/03
    日付の計算は規約や法律で決まっているのでそれに従って実装しなくてはならず、ライブラリの実装に安易に頼ってはいけないのである。
  • 継承はなんでダメ? - まめめも

    「オブジェクト指向の継承を使うな」という主張が広まっているようです。なんでダメになったんでしょうか。 インターネットで見かけた「継承はダメ」という主張をいくつか眺めて、友人と議論しつつ、考えてみました。 「コードが読みにくくなる」 継承があると、メソッド呼び出しが実際にどのメソッド定義を呼び出すのか字面でわからない。 デバッガを使って、親クラスのメソッドに飛んだり、子クラスに飛んだりするのを追いかけないと行けない。 つらい。という主張。 めっちゃわかる。わかるんですが、これは「高度に共通化されたコードは読みにくい」という一般的な側面がかなり大きいような。 たとえば継承の代わりに高階関数を使うと、関数呼び出しがどのクロージャに飛ぶか字面でわからなくなる。 ひどいとコールバック地獄になって何が何やらになります。 継承がことさらにまずい理由を想像すると、すべてのメソッド呼び出しがポリモーフィック

    継承はなんでダメ? - まめめも
    rryu
    rryu 2024/02/10
    まあ条件演算子禁止と同じようなもので、理解できない人、とんでもない使い方をする人がいて、かつ使わなくても大抵なんとかなるから禁止という感じ。