LispMan

数理系やグラフィックス系のソフトウエアの開発に長年携わってきました。 その経験からプログラミングやそれに関連したことに関する所感を書き留めます。 http://ailisplabo.ec-net.jp

LispMan

数理系やグラフィックス系のソフトウエアの開発に長年携わってきました。 その経験からプログラミングやそれに関連したことに関する所感を書き留めます。 http://ailisplabo.ec-net.jp

最近の記事

Gensimで機械学習を行う:掲示板の分析

Gensim はオープンソースのトピック分析が行える機械学習ツールで誰でも利用することができます。通常は大規模なデータで実行するのですが、あまり大規模だとありふれた結果に成りがちなので、あえて偏ったデータで試してみます。 今回はある掲示板の500件の投稿です。掲示板のスレッド名は“コロナ禍で宅配増”です。コロナ禍での宅配が増えたことに関する投稿です。 まず最初に、掲示板に書き込まれた投稿をLDA分析(トピック数10)を行い可視化した結果を示します。 次にword2vec

    • One Point of Python “リスト内包表記”

      Python の初心者向けに、知っておけば得するちょっとした豆知識を提供したい。今回は、“リスト内包表記”について取り上げる。 この表記は、シーケンスの個々の要素に対して関数や式を適用して結果としてリストを得るという方法である。for文を使うより遥かに便利な表記法なので使い慣れることをお勧めする。 >>> ll = []>>> for x in range(97,102):... ll.append(chr(x))... >>> ll['a', 'b', 'c',

      • One Point of Python “map, filter, reduce 関数”

        Python の初心者向けに、知っておけば得するちょっとした豆知識を提供したい。今回は、“map, filter, reduce 関数”について取り上げる。 map関数は第1引数の関数を第2引数のシーケンスの要素ごとに適用する。 以下の例にしめすようにfor文を使ったループを省略できる。第1引数の関数には当然lambda式が使える。 >>> ll = [0,1,2,3,4,5]>>> mm = []>>> for x in ll:... mm.append(x*2)

        • One Point of Python “lambda 式”

          Python の初心者向けに、知っておけば得するちょっとした豆知識を提供したい。今回は、“lambda式”について取り上げる。 lambda式は関数オブジェクトを作成する手段で無名関数とも呼ばれる。 lambda式は、以下に示すようにdef文を用いずに“式”で定義され、コードを短く記述できる。 >>> def f(x,y,z):... return x*y*z... >>> f(1,2,3)6>>> f = lambda x,y,z: x*y*z>>> f(1,2,

          One Point of Python “動的型付け”

          Python の初心者向けに、知っておけば得するちょっとした豆知識を提供したい。まず最初に“動的型付け”について取り上げる。 通常のプログラミング言語では、変数の型の宣言が必要なものが多いが、Pythonでは変数の型宣言が不要である。変数は代入と同時に作成される。 例えば、代入文 a = "Diamond" で変数 a が宣言される。ところが、その後に a = 3.0 を実行しても特に問題は起こらない。それは a には型がないからであ る。オブジェクトである "Diamon

          One Point of Python “動的型付け”

          SageMathで学ぶ微分・積分

          線形代数に続き微分・積分についてもSageMathを使って学ぶヒントを提供したい。一変数の微分・積分については、大抵の方が高校数学で多少学んだ経験があると思われる。大学では多変数の微分・積分まで範囲が広がる。また、極限の取扱いが厳密になる。 ただ、極限の厳密な取扱いで必要な実数の性質に関することやε-δ論法などは数学科以外の人は必要ないだろう。それより、微分・積分をいかに応用で使えるように慣れるかの方が重要と思われる。そのためにも、実際の計算ができなければ役立てることにはな

          SageMathで学ぶ微分・積分

          オブジェクトを視たことありますか

          対話環境ではオブジェクトを視ることができる。例えば Python + Jupyter の環境で、class を使うとオブジェクトを実在させることができる。そこにどんな属性やメソッドが組み込まれているか明らか。 この例では class として MyRobot を定義し s として実在させ、メソッド hello で操作している。 s だけで何か分かるし、型 (type) や 属性およびメソッド (dir) で視ることができる。 対して、C言語の struct でできるのは

          オブジェクトを視たことありますか

          “どんな賢明なことでも既に考えられている。それをもう一度考えてみる必要があるだけだ。”(ゲーテ)いまある #アルゴリズム が最良とは限らない。もう一度 #レビュー してみよう。#プログラミング初心者 の心がけ

          “どんな賢明なことでも既に考えられている。それをもう一度考えてみる必要があるだけだ。”(ゲーテ)いまある #アルゴリズム が最良とは限らない。もう一度 #レビュー してみよう。#プログラミング初心者 の心がけ

          “いかなるものといえども、必ず急所を持つものだ。急所を見別け得るものは成功する”(横光利一)最低限の #データ構造とアルゴリズム をものにできなければプロにはなれない。配列だけではものにならない。#プログラミング初心者 の心がけ

          “いかなるものといえども、必ず急所を持つものだ。急所を見別け得るものは成功する”(横光利一)最低限の #データ構造とアルゴリズム をものにできなければプロにはなれない。配列だけではものにならない。#プログラミング初心者 の心がけ

          SageMath で学ぶ線形代数

          何らかの必要性があって線形数学を学ぶ必要がある方にプログラマーからのちょっとしたヒントを提供したい。例えば、文系で高校までしか数学を学んだことは無いが、縁があってAIの担当になったとか。 昨今のAIやデータ解析のブームもあって、それらで使われる数学として線形代数、微積分、統計学がある。ここでは線形代数について取り上げる。微積分や統計学は別稿にしたい。 実際に学ぶとなると、数学科なら数学書を紙とペンで読み進めることも大事だが、その他の人、特に社会人には時間的にちょっと厳しい

          SageMath で学ぶ線形代数

          プログラマーのためのお勧め本

          プログラマーの雰囲気を味わえる本をいくつか紹介する。公共図書館などには必ずあると思われる。  『実録!天才プログラマー (アスキー出版局)』 パソコン創世記の天才プログラマー19人のインタビューを取りまとめたもの。本人直筆のプログラム・スケッチや未公開のソースコードの一部も公開されている。天才プログラマーの経歴やモチベーションを知ることができ大いに参考になる。 若き日のビル・ゲイツが、コンピュータ・サイエンス・センターのごみ箱へ行って、オペレーティング・システムのリステ

          プログラマーのためのお勧め本

          Pythonからはじめる

          いろんなプログラミング言語があるけどPythonからはじめたらどうだろう。大学や専門学校ではC言語をメインにしているところが多い。ただ、ほとんどの仕事はPythonで出来るような時代になった。最近需要が増している機械学習やディープラーニングではほぼPythonで開発されている。ネット関連の開発もPythonが主流である。 C言語は原始的な言語で、ある意味なんでもできる。ただ、キチンと使うには相当に技量が必要で、プログラミングの入門段階では難しすぎる。もともとは、変数の型や演

          Pythonからはじめる

          オンラインが好き

          オンラインが好きだ。Webカメラさえあれば気楽に打ち合わせができる。資料はPDFで事前に送ればいい。ソフトウエア業界はもっと前から積極的にオンラインの活用をするべきだった。現場で顔合わせしてからという古風な日本的な仕事のやり方を見直すべきだ。 対面のコミニュケーションが不要というわけではないが、移動の時間や場所の確保を考えると、ネット環境さえあれば、どこでも、いつでも稼働できるオンラインはこれからのメジャーなコミニュケーション・ツールだ。 電話でも直接会話することはできる

          オンラインが好き

          Linux

          私はLinuxで仕事している。Windowsを使ったことはない。Linuxの前はFreeBSD、その前はSUN WorkStationを使っていた。さらに前はMSDOSのPC9801である。 最初にプログラミングをしたのは物理科の大学生の頃でFORTRANである。この言語に良い思い出は無い。就職した頃にパソコン(当時はマイコンと言っていた)が出てBASICが使えるようになり、やっと気楽にプログラミングに取り組めるようになった。 最初は通信の技術者だったのだが、はんだ付けが

          ビジュアル・プログラミング言語

          先にも書いたがプログラミングはアルゴリズミックな記述である。プログラムの記述にはプログラミング言語を使う。言語なので一定の文法があり低学年の学生には難しい面もある。 そこで考え出されたものがビジュアル・プログラミング言語である。図形で表現されたものをマウスなどで操作して並べ替えてプログラミングする。実際には裏で適当なプログラミング言語に翻訳されて実行される。子供がレゴで遊ぶのと変わらない。楽しい経験をさせることにはプラスである。 ただ、いずれはビジュアル・プログラミング言

          ビジュアル・プログラミング言語

          プログラミング教育

          小学生や中学生にプログラミングを教育するそうだ。論理的な思考に慣れるのが目的だとか。 ただ物事を考えるときには論理的にというより、直感を働かせて試行錯誤し、出てきた結果を論理的に整理するのが通常の流れだと考える。 長年プログラミングで食べてきた者として、プログラミングは論理的な思考というより、アルゴリズミックな手続きの記述である。そういう意味では考えを数式で記述するのと変わらない。 プログラミングする場合でも、新規性の高いものは試行錯誤で作ってみて、出来たら最後の仕事と

          プログラミング教育