約 2,919,699 件
https://w.atwiki.jp/programing_wands/
プログラミング wikiへようこそ! プログラミング wikiはプログラミングについての情報を掲載しているwikiです。 編集はログイン済みのユーザーが行えます。 プログラミングの基本 プログラミング言語とは エディタとは プログラミング言語まとめ(プログラミング言語以外の言語もあります) C言語 C++ C# CSS Go Groovy HTML Java JavaScript Perl PHP Python Ruby Sass Scratch SQL Swift TypeScript エディタ Atom Sublime Text Visual Studio Code みんなのコメント ニックネーム コメント すべてのコメントを見る ここにテキストが入ります -- (テスト)
https://w.atwiki.jp/programing_wands/pages/33.html
"プログラミングの基本"ページ一覧 プログラミング言語とは エディタとは
https://w.atwiki.jp/programming-study/pages/10.html
プログラミング言語には様々な種類があり、実行対象環境も多種多様です。 今回は、そんな多種多様なプログラミング言語についてご紹介したいと思います。 C Cは、「基礎中の基礎」とも言えるプログラミング言語です。 この言語をマスターすれば、ファイルの操作や複雑な計算、メモリ操作までできるようになります。 プログラミングをしっかり深く理解したい方、実用的なアプリを作りたい方におすすめです。 HTML / JavaScript / CSS これらの言語の最大の特徴は、Webサイトを作成するための言語であることです。 例えば、この「プログラミング言語まとめ」の記事は、HTML、JavaScript、CSSを使って作成されています。 HTMLやCSSは正確にはプログラミング言語ではなく、マークアップ言語です。 プログラミング言語とは異なり、感覚的に記述することができ、初心者でも比較的容易に習得することができます。 副業でプログラミングを学びたいという方にとてもオススメの言語です。 Python 最近普及している言語であり、ディープラーニングや機械学習が簡単にできることが特徴です。 ディープラーニングはAIの基礎技術で、画像認識や音声合成など様々な最先端技術で利用されています。 自分でAIを作りたい人、短いコードを書きたい人におすすめの言語です。 Java この言語の特徴は、オブジェクト指向言語であること、つまりクラスという概念で構成されていることです。 オブジェクト指向とは、プログラムを手続きとして考えないシステム構成の考え方の一種で、クラスは初期化して何度も再利用することができます。 オブジェクト指向に挑戦したいという方にお勧めの言語です。 まとめ 今回は、プログラミング言語の選び方や特徴についてまとめました。 やはり、プログラミング言語には様々な種類があり、用途や目的に合ったものを選ぶことが大切です。 最後までお読みいただき、ありがとうございました。
https://w.atwiki.jp/programing_wands/pages/10.html
プログラミング言語とは プログラミング言語とは、簡単に説明すると人間がPCなどの機械に命令などを伝えるときに使う人が作った言語のことです。 プログラミング言語は様々な種類があり、低水準言語と高水準言語、インタープリタ方式言語とコンパイラ方式言語などに分類することができます。 低水準言語と高水準言語 先ほどの説明で”低水準言語”と”高水準言語”という言葉がでてきました。これらはプログラミング言語の分類のしかたの一つです。低水準言語と高水準言語のちがいは、機械語に近いか人間の言語に近いかです。性能が高い、低いという違いではありません。 機械語とは0と1で表された機械がそのまま理解できる言語です。低水準言語は機械語に近いので人間が理解するのは難しいですが機械にとっては機械語に変換しやすく読みやすい言語です。そのため低水準言語は高水準言語より処理に使うCPUのリソース(”PCの頭脳のような物”の容量)をあまり使用することなくプログラムを処理することができます。これの利点は処理が重くなりにくいという点です。CPUはPCの頭脳のような役割をしているのでたくさん使うと処理が重くなってしまいます。 高水準言語は機械語より人間の言葉に近く、プログラミングしやすい言語です。その代わり、機械はそのまま読めないので処理は低水準言語よりも重くなります。高水準言語の利点は、人間にとってわかりやすい点です。人間にとってわかりやすくすることでプログラミング作業やバグ修正などがしやすいので効率よく作業することができます。 インタープリタ方式言語とコンパイラ方式言語 もう一つプログラミング言語の分類を紹介します。インタープリタ方式言語とコンパイラ方式言語です。これはプログラミング言語を機械語に翻訳する方法によって分類したものです。つまり、インタープリタ方式で翻訳する言語と、コンパイラ方式で翻訳する言語ということです。 インタープリタ方式とは翻訳しながらプログラムを実行する方式です。例えるなら同時通訳のような感じです。翻訳できた部分から伝えます。この方式のメリットは一行ずつ処理が行えるのでデバッグがしやすいこと、コードがすべて完成していなくても実行できるので初心者の学習に向いていることなどが挙げられます。逆にデメリットは処理速度が遅いことです。先ほど説明した通りインタープリタ方式は同時通訳のような状態です。翻訳できていない部分はわからないため翻訳されるまで待つ必要があります。そのため処理が遅くなってしまうのです。 コンパイラ方式とは全て翻訳してからプログラムを実行する方式です。こちらは翻訳された本を読む感じです。この方式のメリットは処理速度が速いことです。全て翻訳してから読むので読めない部分が翻訳されるまで待たなくていいのでインタープリタ方式より速く読むことができるのです。そのため大規模な開発などに向いています。デメリットは一度に翻訳するためコードが完成していないと実行できないので初心者向けではない点と、同じ理由でデバックがしにくい点です。 まとめ プログラミング言語とは人間が機械に命令などを伝えるときに使う言語である。 プログラミング言語はいくつかの分類方法がある。 低水準言語は機械語に近く処理速度が速い 高水準言語は人間の言葉に近く効率よく書くことができる。 インタープリタ方式言語は少しずつ処理できるのでデバッグがしやすい コンパイラ方式言語は一度に翻訳するため処理速度が速い みんなのコメント ニックネーム コメント すべてのコメントを見る
https://w.atwiki.jp/programing_wands/pages/37.html
プログラミング言語まとめ(プログラミング言語以外の言語もあります) C言語 C++ C# CSS Go Groovy HTML Java JavaScript Perl PHP Python Ruby Sass Scratch SQL Swift TypeScript みんなのコメント ニックネーム コメント すべてのコメントを見る
https://w.atwiki.jp/denpaprog/pages/13.html
チュートリアル:Hello,Worldアプリケーション 簡単なHello,Worldプログラムを題材に電波プログラミングを紹介する。 プログラミング言語としてはPerlを使用するが、プログラム例としては単純なものなので、読者諸兄によってそれぞれ好みの言語に移植することは容易であろう。 要件定義 電波プログラミングは電波文と異なる。あくまでプログラミングであるので、要件定義は必要である。 例としてHello,Worldプログラムの要件を定義するならば、以下のようになるだろう。 端末上に"Hello,World!"というASCII文字列を表示すること "Hello,World!"という文字列を表示する、という点について注意したい。つまりこの時点で、以下のようなプログラミングは要件を満たさないことになる。 print "HW!\n"; #私の内的な宇宙においてHello,World!の意味をなす文字列 また、以下のようなプログラムは当然のことながら「計算機的」という意味で本稿の目的とはそぐわない print "Hello,World!\n"; #完全に計算機的なロジックに依拠している! 電波プログラミングの世界では、要件を超計算機的なロジックにおいて実装することが求められる。超計算機的なロジックは計算機的なロジックと異なり、最適化が不可能であることが多く、また様々な思想信条に左右されるためこれが正解というものがない。それぞれが己の内的世界と向かい合うことによって要件を解釈し、また実装することが必要とされるのである。 「自分の」電波プログラムを行う前に、例えばどのような手法があり得るか?ここで比較的ポピュラーな実装例を2,3紹介してみたい。 乱数派による実装例 電波プログラミングの有力な派閥として乱数派というのがある。彼らのロジックは明快であり、「全ての出力は疑似乱数の周期中に存在する」というものである。 彼らの論理でHello,Worldアプリケーションを実装するならば以下のようになるだろう。 while(1){ my $str=""; for($i=0;$i 12;$i++){ $str .= pack("C*", 33+int(rand()*93)) #乱数からASCII文字を一つとりだす } print $str,"\n"; if($str eq "Hello,World!"){ last; #break } } 実行してみるとプログラムはrand()関数によって得られた疑似乱数周期の中から"Hello,World!"という文字列を探索し、見つけるとただちに停止する。 残念ながら現在(2008年)においては、世界最高のスーパーコンピューターですら乱数派の要求するスペックとはほど遠い為、おそらくは読者諸兄のPCでこのプログラムが諸君の寿命がつきる前に停止することはないだろう。 しかしながら、「全ての出力は疑似乱数の周期中に存在する」という超計算機的なロジックに基づく限りにおいて、このプログラムが最終的に"Hello,World!"と表示することは自明であるため、電波プログラム的な意味においてこのアプリケーションは完全だと言える。 グーグル派による実装例 グーグル派のロジックは「全ての求められる出力はGoogleで検索することによって得られる」というものである。彼らはまた、グーグル指向最適化言語環境(Google Oriented Optimization Language Environment=GOOGLE)という独自の言語系を使うことでも知られている。GOOGLE言語の仕様では唯一の関数はgoogle(string)である。 彼らのコードは以下のようになるだろう。(実行結果はリンクを押す事で表示される) google("Hello,World!") 見事にHello,World!がいくつも出力されている。(要件定義では文字列は1つとは規定されていないのでこれも解である) しかしここで読者諸氏は疑問に思われるかもしれない。例えば出力する文字列が"Hello,World!"ではなく以下のように「おめがぽらんげ」というような未知語であった場合は、意図したとおりに出力されないのではないか?と、 google("おめがぽらんげ") その心配はない。何故ならこのwikiが「おめがぽらんげ」と記述していることによって、いつかはGoogle botがクロールを行い、意図どおりに出力されるようになるのだ! これがグーグル派における「再帰」である。 自分なりの超計算機ロジックを見出す 電波プログラミングにとって重要なことは、自分なりの超計算機ロジックを見出すことである。 やり方は人それぞれであるが、筆者の電波プログラミングを行う手法を紹介しよう。 もしあなたが計算機的プログラマであるなら、コンピューターが何故動いているかなどといった瑣末な知識はむしろ邪魔となるため綺麗さっぱり忘れてしまおう。ここで必要なのは"Hello,World!"と出力するにはどうすればいいか?ただその一点であると言っていていい。 おもむろにエディタを起動し、以下のように書いてみる Hello,World! 出力はされた。よし。しかし、これは自分が手を動かした結果である。これではプログラミングとは言えない。これを計算機に行わせる事ができればよいのである。一瞬キーボードを叩くロボットの姿が垣間見えれば電波プログラミングの入り口にさしかかったと言っていいだろう。しかしロボットはない。プログラミング言語というのを使ってすれば良いらしい。ここで一気にではなく、少しずつ、ギリギリと絞りながら使い慣れたperlのシンタックスを思い出そう。端末に出力する命令は"print"である。これは間違いない、では"Hello,World!"は?文字列とはそもそも何だ?終端がnullのバイト列であるなどと考えてしまったのなら、それは計算機的プログラミングである。頭を冷やすべきだ。そうではない。文字列は文字列だ。"Hello,World!"は"Hello,World!"なのだ。エディタ上に現れた文字を見直そう、この文字はどうやって現れたのだ?キーボードを打った。そうだ、そうだった。では何故キーボードを打ったのだ?"Hello,World!"と書きたいと思ったからだ。つまり意識は計算機に通じるのである。 となればそれをプログラミングすればよい。意識を変数$mindと置く print $mind; 実行してみよう。出ない。ここで当たり前だと思ってしまったら失格である。最初からやり直そう。何故でないのか?意識してないからだ、そうか。意識をしよう。意識をしながら実行する。やはり出ない。 気を落ち着かせるためにコーヒーでもいれよう。コーヒーと好みのスナックを口にしながらコンピューターに向かう。ふふふ僕はまるでハッカーみたいだぞ!さあ、$mindに僕の意識を代入するのはどうすればいいのか?とりあえず関数を呼び出してみよう $mind=readMyMind(); print $mind; 実行する。エラー。readMyMind()がない。そのような関数はperlにはないことに気づく。関数がなければ自分で作ればいいのだ!とりあえず、"Hello,World!"だけを考えていると呼吸が止まってしまうので、全ての意識を連結して返す関数になる。 sub readMyMind{ return join("",@MyMind); } あとは意識をperlに転送するために自分の意識をMyMind配列にマップすればよい。 @MyMind=("オリオン座の下でセックス","30代で職歴なしはヤバいよなあ・・", "宝くじがあたればいいんだ","死にたい","俺何やってるんだろう","Hello,World!"); $mind=readMyMind(); print $mind; sub readMyMind{ return join("",@MyMind); } 実行する オリオン座の下でセックス30代で職歴なしはヤバいよなあ・・宝くじがあたればいいんだ死にたい俺何やってるんだろうHello,World! でた!やった! …と、あくまで例であるが、このような形で電波プログラムを行うことができる。
https://w.atwiki.jp/prog/pages/17.html
Cプログラミング入門以前 Cプログラミング入門以前 C言語を理解するためには、コンピュータやプログラミングについてあらかじめある程度の知識を持っている必要があります。 この本には、CPUやメモリといったコンピュータの仕組み、計算機としてのコンピュータ、変数とメモリ、アルゴリズム、ソフトウェア開発の基礎、他言語にも共通していることが多いデータの表現方法など、C言語を学ぶ前に知っておいて欲しいことがまとめてあります。 この本を読んでこれらのことを知ってから、C言語でのプログラミングに挑戦すれば、プログラミングの上達速度が上がると思います。 C言語を学ぶ前か同時並行でこの本を読むと効率良くプログラムを書くことができます。 選択肢 投票 この本を推薦する! (11)
https://w.atwiki.jp/media-pgm/pages/21.html
プログラミングコンテスト (2008/5/25) 第1回コンテスト終了しました! ご応募ありがとうございました! (2008/3/7) サンプルプログラムをUPしました。 ボタン連打サンプル.zip (2008/3/5) 第1回 プログラミングコンテストを 開催いたします!! テーマ:マウスを連打するソフト (連打さえすれば、ゲームでもお役立ちソフトでも何でもOKです) 言語 何でもOKです!VBでもExcelVBAでもCでもFLASHでもHSPでも! 応募方法 このwikiにUPしていただくか、すずきまでメールでお送り下さい。 応募締切 2008/3/30(日)→2008/4/30(水) ※延長しました! ご参加お待ちしております!! コメントをどうぞ~ サンプルが起動できない... -- さいと (2008-03-10 01 31 53) あっ、申し訳ありません。.NET FRAMEWORKがインストールされている必要があります。 -- すずき (2008-03-10 07 17 05) サンプルというより私はこのまま作品にします! -- しろいわ (2008-03-10 14 41 42) 了解です!名作だし -- すずき (2008-03-10 19 24 30) こんにちは。プログラム作りました。VBAで作りました。ファイル名は「umasuru.lzh」でUPしました。 -- 立川 (2008-03-24 01 02 27) 投稿ありがとうございます!かなりすごいねこれは!触発されたのでもう一作品作ることにしました! -- すずき (2008-03-27 07 16 40) 名前 コメント
https://w.atwiki.jp/izaya/pages/11.html
プログラミングスタイルの一覧 工事中ではありますが、予定しています。
https://w.atwiki.jp/denpaprog/pages/12.html
電波プログラミングとは何か? 電波プログラミングとは、「超計算機的なロジックによって構成されたプログラム」である。超計算機的とはその原語meta-computational の意味する通り、メタ的な意味において計算機を超越した論理に基づいて計算機プログラミングを行うことに他ならない。 超計算機の概念を説明するために、その対極の概念である「計算機的」プログラミングを例示しよう。 例として偶数かどうかを判定するプログラムを思考する。多くの計算機的プログラマは以下のように実装を行うだろう。(コード例はCである) bool IsEven(int number){ if( number % 2 == 0){ /* %2の剰余が0であるかを判定 */ return true; }else{ return false; } } %は言うまでもなく剰余を求める演算子である。この部分はあるいは以下のように書き換えることができるだろう。 if(number 1 == 0){ /* 最下位ビットが1であるかそうでないかを判定する */ 質のいいコンパイラを使えば前者のプログラムと後者のプログラムはほぼ等価のアセンブリコードとなることが容易に推察できる。つまり、我々の通常の思考するプログラムとは「偶数かそうでないか」という自然科学的なロジックを「最下位ビットが0であるかそうでないか」という計算機的なロジックに変更することによって成り立っていると言える。 対して、電波プログラミングはある概念を超計算機的なロジックによって実装することになる。 const static bool even_check[]={true,false,true,false, true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false, true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false, true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false, true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false, true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false,true,false, 省略 }; /* 可能な限り記述 */ bool IsEven(int number){ assert(size_of(even_check) number || number 0); return even_check[number]; } このプログラムの最も着目すべき点は 最初にeven_check配列に偶数であるかそうでないかを代入しておくところにある。つまりこのプログラムを作成したプログラマはeven_check配列を通じて「偶数は0から一個とびにある数字である」または「偶数と奇数は交互に繰り返す」という内的ロジック=超計算機的ロジックを、そのままの形で実装していることになる。(さらに言えば、非常に大きな数-例えば一億五千八九四のような数字、またはマイナスの数字に関しては、それが偶数であるかそうでないかは当然不明である、というプログラマの論理的限界そのものも記述できていることに注目すべきであろう) こうしておくことによってIsEven関数は実際に配列内の真偽値(=プログラマの内的論理の写像)を読み取って返すだけの単純明快な形となり、また、変数の最下位ビットがどうなっているかなどという全くもって直感的でない計算機的な思考の呪縛を逃れることができるわけである。 c.f 電波プログラミング入門 計算機的プログラミングの危険性 電波プログラミングが計算機的プログラミングのアンチテーゼであることは前項で説明した。では計算機的プログラミングの何が問題であるのか?ここでは計算機的プログラミングの危険性について説明しておきたい。 計算機的プログラミングの限界 近代計算機の全ての祖であるアラン・チューリングによるチューリングマシンが、ゲーデルの不完全性定理を証明するために思考されたことを知っている読者は多いだろう。この事実はしかし逆説的に以下の事実を指し示している。 その機械がチューリング完全である限り、不完全性定理を無視することはできない つまり、計算機的プログラミングとは、不完全性定理の束縛(無矛盾であれば、自身の無矛盾性を証明できない)を常に受けることになるわけである。 数学的素養のない読者のためにチューリングマシンに話を戻すと、これは停止性問題に帰結する。すなわち、 チューリング機械(≒プログラム、アルゴリズム)Aに入力xを入れたら有限時間で停止するか という問題をチューリングマシンは解決できないことが示されている。これは言い換えると「そのプログラムが停止するかどうかは実行してみないとわからない」ということである。考えてみればいい、今まで計算機的プログラマが「絶対大丈夫」といったプログラムが全く問題なく動いた試しがあるだろうか!? そう、これはプログラマ個々の問題ではなく、計算機的プログラムの限界であったのである。 これまで我々が依拠していた計算機的プログラミングのなんと脆弱なことか!この一点をもってしても計算機的プログラミングがいかに脆く、危険に満ちた物であるかということがおわかりいただけたかと思う。 計算機からの自由 前節の例をあげるまでもなく、計算機的プログラマは業務や概念を以下に計算機のロジックに置き換えるか?ということを思考し続けなければならない。 ここでは、注文をオブジェクト化するであるとか、顧客の状態を定数で表すなどという非人間的で不可解なメタファーがまかり通っており、プログラマはこの常識離れした概念を、あたかも自然なものとして考えることを強いられている。 このようなことが長く続く筈はなく、事実この業界では鬱病あるいはノイローゼを患ってしまうプログラマが後を絶たない。言わば彼らは計算機の奴隷となりはて、人間性を失ってしまったわけである。 しかしながら電波プログラミングは超計算機的な概念をそのまま実装し、計算させることを主眼にしている。すなわち計算機に使われるのではなく、電波プログラムを行うそれぞれ個々の人間性に基づいて計算機に計算させることができるわけである。計算機と人間のあるべき姿としてどちらが正常といえるかは、もはや言うまでもないことだろう。 最も高度で自然なプログラミング技法 電波プログラミングは言うまでもなく最も高度なプログラム技法である。この世界では計算機的プログラミングのあらゆるセオリーが通用しない。熟練したプログラマであっても、電波プログラミングに習熟するには3年ないしは5年の期間が必要とされる(デスマーチ中など、強いストレス化と過剰労働状態に一定期間おかれることよってそれまでの計算機的プログラミングに慣れた脳がリセットされ、偶発的に電波プログラミングが可能になる場合もあるが、このようなケースはごくまれである) また旧来のプログラミング技法のパラダイム(OOP,AOPなど)では、基本的にセミナーであったり解説書を読むことによって学習が可能であるが、電波プログラムにおいては、そのような形での学習はほぼ不可能である。 Don t Think. Feel!(考えるな、感じろ!)こそが電波プログラミングの真骨頂であり、それがために個々人の才能が最も試される分野でもある。 また、たまに新入社員やバイトで入ったプログラミング未経験な若者が、最初に書くプログラムが電波プログラムである場合がある。これこそ電波プログラミングが人間のリビドーによって生み出されている自然なプログラミングスタイルである証拠といえるのであるが、そのようなスタイルが旧来の価値観に縛られた環境によってスポイルされ、やがて、典型的な計算機プログラマとして虚勢されていく現状は問題視すべきであろう。 神秘主義と電波プログラミング (執筆中) 神は計算機の中に存在する (執筆中) 電波プログラミングで実装されている例 計算機的プログラムでは実現できないことを、電波プログラミングで実現できる例も多い。電波プログラミングによって作成された著名なアプリケーションを例示する。電波プログラミングの威力が実感できるものである。 新メモリ最適化ツール(compJapan製) 悪魔召還プログラム Pyramid倶楽部 マインドシーカー(ナムコ) JAPH 電波プログラミングではない例 最後に練習問題として、電波プログラミングのようで、そうでないものの典型的な例をあげていく。ここまで読まれた読者諸兄においては、これらが電波プログラミングでない理由はおわかりいただけるかと思う。 Perl詩perlインタプリタが実行可能なソースの形式で詩を書くというのがPerl詩である。ソースを一見すると電波プログラミングの一例であるかのようだが、アプリケーションとして見た場合、実際には実行される結果は詩と何の関連性もない場合が多い。つまり手段と目的が倒錯している意味以上のものはここにはなく、よって電波プログラミングではないと言える。仮にプログラマーが求めるアプリケーションの要件が存在し、その要件を満たすために詩を書く必要があるのだとすれば、それは電波プログラムと言ってよいだろう。 関数型言語 lisp