愚問をてってれーするの楽しすぎるでしょβ

ESRのエッセイに唆されてPythonする初心者が半端な勉強ログを書き散らす場所 ICT文化にどうしても住みたいという遠大な啓示が下った人の住処/気持ちよさのためだけに/お客様のお忘れになった恥の概念が母胎に届いているようです

MSDOSとEXEファイル

そういえば、cmdいじってたら、MSDOSは分かるかと訊かれた。MSDOSとは?

MS-DOS Microsoft Disk Operating System DOS

Microsoft社のOS。IBM社が同社初のパソコンであるPC/ATに採用したことで爆発的に普及し、パソコン用OSの標準となった。現在はMicrosoft社の別のOSであるWindowsにその座を譲っている。

 
MS-DOSWindowsで実行できるプログラムが収められたファイル。ファイル名に「.exe」という拡張子がつけられていることからこう呼ばれる。
EXEファイルは機械語で記述されているため、直接編集するには特殊な編集ソフトと高度な知識が必要。Windowsでは複数のソフトウェアが共通して必要とする処理内容はDLLファイルなどのライブラリにまとめて格納されている。ほとんどのEXEファイルは内部で他のDLLファイルなどに処理を委託しているため、EXEファイルが参照しているDLLファイルも、EXEファイルを実行するために必要になる。
MSの規格の上にしかEXEファイルはないのか?!ひええ。ここから推測するなら.hのファイルはDLLファイルとして実行される?
 
Executable (実行可能な)の略なので、本来エグゼと発音するのは間違ってるらしい。
 

Cはどこにある?Pythonはどこにある?

いろいろインストールしたけどCが無い、そう思っていた。Cは、結局どこにあるの?ファイルはどれ?

暫定的には結論から言うと、C用のコンパイラとCの文法をもって、そこにCを存在させることができるようになるらしい。

Pythonはどこにあるのか?という問いも改めて問題になってきた。Cでできている、というだけのざっくりとした印象で理解した気になっていたので、困った。Pythonという機能はPEPなども含めて存在する、ということになるだろうし、その機能を支える機能にまで敷衍していけばドキュメントや文化も含めてPythonが存在するとかいう話になってしまって、的を射ない。

そうじゃなくて、言語実装者がどういった手順で実装していくのかを描いた、実際のコードなんかも含むエッセイみたいなものないかな。それで、とりあえず納得したい。(待てよ、CやっていったらC-Pythonの内部表現(って言い方でいいのか)を読めるんじゃないか?Pythonソースコードってどこにあるんだ?)


更に、PythonとCを比較した話をすると、コンパイラにはプリプロセッサの指示が要って、インタプリタにはヘッダを与える必要がなく、せいぜいmoduleのimport関数と、文字コードの指定だけで済むのも不思議。

そういえば文字コードは、コンパイラ/インタプリタへの指示?カーネルへの指示?カーネルにベット。ファイルに付随する、拡張子文字コードの指示。カーネルっぽい。

Pythonよりも、内部表現への興味が満足されやすい。char型が1バイトだとか、int型が2-4バイトだとかいう情報は、Pythonではあり得なかった。

コンパイル(あるいはbuild)の結果.exeファイルがHDD上に得られ、それをrunつまり実行する指示を出して初めてコードが動く。

恐らくPythonでは.exeファイルを作らない。そしてそれが、インタプリタ言語だという事なんだろうと思う。多分、メモリの上に全て置いておいて、HDDにタッチしない。

完全に妄想だけで書いているので、なんとなく、罪滅ぼしにこれを読んだ、CPU - Wikipedia。要はこの辺から分かってないと分からないんだろうなという感じがする。これも妄想。

CPUはプログラムによって様々な数値計算情報処理、機器制御などを行う。CPUは通常はハードウェアであるプロセッサにより実現され、現代のプロセッサの大多数はマイクロプロセッサである。最近の製品では一つのCPUがコア化され、その複数が一つのマイクロチップに実装されプロセッサ・パッケージ内に収められているもの(マルチコア型)も多い。

「CPU」と「プロセッサ」と「マイクロプロセッサ」は、ほぼ同義語として使われる場合も多い。本来は「プロセッサ」は処理装置の総称、「CPU」はコンピュータ上で中心的なプロセッサ、「マイクロプロセッサ」はマイクロチップに実装されたプロセッサである。

複数コンパイラの中からひとつを選ぶ、ということも、実際に目にしてやってみて、どういうことだか分かりたい。

Counting Characters in C

MacOS上のUbuntu使ってて、言語設定を変更できなかったので、無理矢理英語で書いてたやつ。

As always, it's done online. (IDEs never behave well!!!!)

http://codepad.org(よく考えたら、paizaとかのエディタも同じ機能か!機能の上ではオンラインエディタ=オンラインコンパイラですよね)

#include <stdio.h> /* Display character frequents in a file*/



#define LIST_MAX 300 //What is this pre-processor??#defineは文字列を他の文字列等に変換する働き.This function on a compilar!?!? 



//Line2 means, LIST_MAX gonna be changed into 300.



//the 2 has no data type...











int main(){//I know it's the beginning of this scoop, everything is mainly defined here.



    int i, CHcount[LIST_MAX];//i and CHcount is given as int, and its value is 300



    char ch, CHlist[LIST_MAX];//why is it char? though it's defined 300



    FILE *textin;//what is this about??







    for(i=0; i<LIST_MAX; i++)



        CHcount[i]=0; /* count 0 for each char */



        CHlist[i]=0; /* default character */



    }







    textin = fopen("test.txt", "r");



    do{



        ch+fgetc(textin);



        for(i=0; ((i<LIST_MAX) && (CHlist[i] !=0)); i++){



            if(ch==CHlist[i])//&& means logical conjunction



                break;



        }



        if(CHcount[i]>0){



            00000000000000;



        }else{



            00000000000000;



            00000000000000;



        }



    }while((ch 1= EOF));







    for(i=0; ((0000000000) && (0000000000)); i++){



        printf("%c = %d 

", CHlist[i], CHcount[i]);



        }



    fclose(textin);



}/* end of chcount.c */

 

 Output:

1



2



3



4



5



6



7



8



9



10



11



12



Line 14: warning: data definition has no type or storage class



Line 14: warning: initialization makes integer from pointer without a cast



Line 14: error: initializer element is not constant



Line 15: error: expected identifier or '(' before 'do'



Line 27: error: expected identifier or '(' before 'while'



Line 29: error: expected identifier or '(' before 'for'



Line 29: error: expected identifier or '(' before numeric constant



Line 29: error: expected ')' before '&&' token



Line 29: error: expected '=', ',', ';', 'asm' or '__attribute__' before '++' token



Line 32: warning: data definition has no type or storage class



Line 32: warning: parameter names (without types) in function declaration



Line 33: error: expected identifier or '(' before '}' token



 

C

アドレスとポインタの話なんだけど、メモリを食わないように変数を減らすという安直な発想をした時に、まるで人間に対するみたいだなと思った。あまり覚えておくことを増やすと邪魔になってパフォーマンス落ちるのは人間も同じだという経験則。

アセンブラプログラマの方の記憶領域を食うらしいし、なんだか、何らかの正体不明の気持ちを掻き立てられる。我々と彼らの関係をみつめていたい。

で、なんとなくなコード未満のもの。



#include<stdio.h>
#include<limits.h>
//プリプロセッサコンパイラに指示を与える
//スタンダードアイオーの正体は不明だが、どこかにフォルダが同梱されていると思われる
//ヘッダファイルはフォームの規則が.cファイルより厳しいが、自作することもできる

main int(){
//バグの元になりがちなグローバル変数を持たせないために全てこのブロックに突っ込むのがどうやら定石

char
int

}

やっつけC言語

 

 

 

http://www5c.biglobe.ne.jp/~ecb/c/c00.html
#include <stdio.h>
読みは「スタンダードアイオードットエイチ」「ストジオドットエイチ」など諸説ある

http://stackoverflow.com/questions/8958931/what-does-stdio-and-stdlib-stand-for-in-c

 

プリプロセッサ

プリプロセッサとは、コンパイルの前に行う処理や関数、変数や関数の 宣言を行ったりする物です。
  今までプログラムの最初に「#include <stdio.h>」という行を書いてきました。これがプリプロセッサと呼ぶものです。この意味は 後述します。

  C言語では好きなフォーマット(フリーフォーマット)で書くことができます。 しかし、このプリプロセッサはだけはフォーマットが決まっています。その フォーマットとは以下の通りです。

「#」と予約語で始める
行の終わりには「;」は書かない
行の途中で改行したい場合は「」を記述してから改行する
一般に「字下げ」しない

 

http://www9.plala.or.jp/sgwr-t/c/sec06-6.html


#scanfで半角の数字(int型)に対してのみ反応させるか、あるいは全角の

 

C言語の語句の種類
識別子
予約語
定数 文字列
演算子
区切子
コメント//の以降改行まで(コンパイラによってはサポート外)あるいは/*と*/の間(入れ子ができない)
ブランク

 

予約語について

break文

 

ブロック:{}、スコープの範囲

 

変数を使う場合には宣言が要る:データの型、名前、初期値。初期値は省略可能

関数の外かブロックの最初で宣言。関数の外で宣言した場合、グローバル変数となる。ただしこれはあまり良い宣言方法ではありません。 なぜならば、複数プログラマーで大きいプログラムを作っている場合、 不正に書き換えられてしまう可能性があり、バグの発生につながる可能性があるからです。 特別な理由がある場合を除いて、後者のブロックの最初で宣言するべきです。

 

 

C言語のデータ型

データの種類 バイト長 数値の範囲
整数 (signed) char 1 -128~+127
整数 unsigned char 1 0~+255
整数 (signed) short (int) 2 -32768~+32767
整数 unsigned short (int) 2 0~+65535
整数 (signed) long (int) 4 -2147483648~+2147483647
整数 unsigned long (int) 4 0~+4294967295
整数 (signed) int 2 or 4 (signed) short (int)もしくは
(signed) long(int)と同じ
整数 unsigned int 2 or 4 (signed) short (int)もしくは
(signed) long(int)と同じ
小数 float 4 仮数部232、指数部28
小数 double 8 仮数部252、指数部211

 

 

charがASCII文字コードかな

http://www.cc.kyoto-su.ac.jp/~yamada/programming/string.html

文科省のプログラミング教育実践ガイドみつけた

プログラミング教育実践ガイド|学校教育分野|教育の情報化

出た。学校教育、プログラミング教育実践ガイド。

文部科学省では、初等中等教育段階におけるプログラミング教育を推進するため、児童生徒の発達段階に応じたプログラミングに関する学習の事例を 収集し、教員向けの指導に役立つ参考資料を作成しましたので公表いたします。小学校、中学校及び高等学校の授業において実践されている事例となって いますので、ご活用ください。

多脚ロボット


Snake Monster - Initial Locomotion - YouTube

 

Initial demonstrations of autonomous walking of "Snake Monster", a hexapod robot built with modular actuators from the Biorobotics Lab's snake robot project, at the Robotics Institute of Carnegie Mellon University. The series-elastic actuators in each joint allow simultaneous position-velocity-torque control, enabling compliant motions using a simple alternating-tripod walking gait. This work is funded by the DARPA M3 program

 DARPA出資のカーネギーメロン大学の研究所のプロジェクトだ。タチコマはある。

バッドデータハンドブック眺めてる

バッドデータハンドブック ―データにまつわる問題への19の処方箋

バッドデータハンドブック ―データにまつわる問題への19の処方箋

 
 

これを眺めてる。データの本なので、謝辞が年単位の編集の実際が見えるような書き方がされていて楽しい。広義のバッドデータにさらされまくってる毎日を生きているなあ、人にとって優しくないなあ。

Studio☆Femyとかの時代の話

先の大戦の暗号化技術とその解読に始まって、60年代のアポロ計画を軸に、MITやDARPAAT&Tベル研究所といった機関を中心にして技術が進んできたことは分かった。冷戦を背景にしているから、ソ連でも長足の進歩があったのもなんとなく想像している。でもじゃあ日本は?というところで、いい本を探してる。 

 

ニコニコ動画が未来をつくる ドワンゴ物語 (アスキー新書)
 

 

 

今はこれを読んでる。ダイアルアップ接続でモデムを電話線につなぐとか、電話代ガーとか、BBSが云々とか、そういう話に興味がある。

マイコンBASICマガジン - Wikipedia

おー。これにゲームのソースコードが載っててPCに打ち込んで遊んでた世代があるのか。洋裁雑誌にパターンが載っててそれを作って遊んでた人の話は聞いたことあったけど、時代かなあ。

 
本探して図書館プラブラしてたら、結構楽しかった。
f:id:komosudare:20150415203606j:plain
書籍版があった。山形浩生氏によるインタビューなんかもあって、ESRの語り口なんかを見ることができる。特徴あるいい喋り方!
 
f:id:komosudare:20150415204831j:plain
タイトルがおかしい本があったり。
f:id:komosudare:20150415204956j:plain

これ借りたので読みます。字が大きめだし、いろんな意味でちょうど良さそう。


技術書は基本的には買っちゃダメ、読む時は借りて、最終的に気に入った参考書とクイックリファレンスの二冊を持つくらいでいい、という事らしい。

 

ハッカソンとかデータマイニングの外注

面倒なデータマイニング作業を時給200円ぐらいでバングラデシュ人に発注してみた:tks(高須 正和)のブロマガ - ブロマガ

NASAのハッカソンの話。あうあう、hack-a-thon本当に幸せそう…
早く経験したい。ハックは本当に多岐に渡る、と感じた。

基本的に仕事を頼む人間は仕事をもらう人間より給料が高いという資本主義の法則を見た

何でもあり、動くものを動く様に組んで、動かしたもの勝ち、それがハックのひとつの性格のように見えた。だからマネジメントとかストラテジとかっていう、テクノロジと一見関係のない頭の使い方が大幅に異なる領域までIPAシラバスに載ってるんだろうな。もっと言うと、コンプライアンスとかライセンスとか、さまざまに。逆に言えば、多様な人材の受け皿として作用し、適所に移動すれば適材になりうる、という話でもあると思う。

江崎玲於奈が言うTechnology, Product Planning, and Marketingの3つの領域で創造性が発揮されて初めてマスが恩恵を受けることができるという話を思い出した。プロジェクトが利益をもたらすのには、多角的な創造的発想が必要になるんだ。

floot型、浮動小数点数の内部表現


f:id:komosudare:20150414132307j:plain


ぉぉぉぅ、こうなってるのか〜(注目するところが違う)

内部表現、という言い方をするのかあ。

のこり環境構築

JavaJDKEclipseEclipse CDT、MinGWMSYSxyzzyKompoZer、VE、SWTの9つからあとは残り3つ。そして入れたら今度はEclipseからCでHelloWorld.exeを得ることだ。ひぇ大変。

 

EclipseのC設定、MSYSのPathが通ってないことと役割が分からない事、Cがインストールされてる確信がない事、xyzzyがエラーを返してる事が残った問題。

 

ふぇぇとか、考えつく限りのだらだらしたこと言いたくなる。

KompoZer

http://kompozer.net/download.php

 

なんでわざわざHTMLエディタを導入するんだ(文句)って思いながらインストール。

ファイルが多い(文句)。何ができるんだろう?何が予定されてるんだろう?

f:id:komosudare:20150414124910p:plain

 

Mozillaか。アイコンが確かにMozillaっぽい。

f:id:komosudare:20150414125658p:plain

見た目が最初から作られているし、わかりやすそうで綺麗だ!日本語版もある。

ファイルを開いた直後にこんなのポップアップするし、これは参入障壁低そう。

f:id:komosudare:20150414125703p:plain