ネットワーククライアントのHello World 第20回は、ネットワーククライアントのHello Worldです。これは、特定のホストの特定のポート番号にTCPで接続し、そこから受信した文字列を表示するプログラムです。具体的には、第12回で作成したネットワークサーバのプログラムに接続し、サーバから送られてくるHello Worldの文字列を表示するようなクライアント側のプログラムを作成します。 第12回では、サーバ側の動作をテストするため、クライアント側にはtelnetコマンドまたはnc(netcat)コマンドを使いましたが、今回はそのクライアント側のプログラムを、各種言語で作成してみるという趣向です。 C言語の場合 まずはC言語からです(リスト1)。ここでは、エラー処理はあえて省略しています。クライアント側のプログラムでは、socket()でソケットを作成したあと、connect()で
結城浩 (ゆうき ひろし) Java,Perlなどの書籍でおなじみの著者。 最新刊は「数学ガール」。 このイラストは結城浩さん書き下ろしのもの。 http://www.hyuki.com/ 日経ソフトウエア2007年8月号,特集のテーマはプログラミング言語のRubyです。「Ruby大作戦」と題した本特集の中で,Ruby作者のまつもとゆきひろ氏と,JavaやPerlの書籍や本誌連載の執筆,Web上での活動で著名な結城浩氏の対談を設けました。以下は,日経ソフトウエア2007年8月号に掲載した対談の全内容です。ぜひお楽しみください。なお,この対談では,お二人のファンで日経ソフトウエア特集「Ruby大作戦」のPart5にも寄稿いただいた松岡浩平氏にも同席していただきました。この対談でRubyに興味を持たれた方は,ぜひ日経ソフトウエア2007年8月号をお読みください。 はじめてのRuby ――結城さ
二日続けて飲んでしまったよ。しかも、おとといは、「終電に間に合わなくて帰れないサラリーマン」ソリューションの実現に成功してしまうことに。 30歳前後に見えるらしい… メールは早く返すほうが良い。できるハッカーは2分で返事(らしい) 二次会は回避。(カラオケに行ったかどうかは知らない) あまりにもネタが思い付かないのでHaskellを勉強することに いくつか、Haskellで挫折しないようにする方法を見つけたので書いておく Monadを理解しない → 変に気合い入れてMonadを理解しようとするとそこで挫折します IO a の a を取り出すには do n <- nanika こんな感じ IO() 型が欲しいときはとりあえずreturn () → 何もしないmainが書けなくて悩んだりしなかったですか!? あんまり細かいことを気にしない → 気にしたら挫折します 名前が短かくてなんかわからな
π-calculus 超入門 π-calculus は、80 年代の終わりごろに Milner らによって提案された並行計算のモデルの一つです。そこでは、プロセスと呼ばれる複数の独立した主体が、通信チャネルと呼ばれるデータの通り道を介して値をやりとりしながら、計算を行っていきます。π-calculus にはいろいろな変種があるのですが、ここではとりあえず次のような構成要素からなるものを考えましょう。 new x . P 新しいチャネル x を作ってから、プロセス P を実行する (channel creation) x![v1, ..., vn] チャネル x に値 v1, ..., vn を送る (asynchronous output) x?[v1, ..., vn] . P チャネル x から値 v1, ..., vn を受け取って、P を実行する (input guard) P |
言語Scalaは、EPFL大(仏ローザンヌ)のMartin Odersky教授により開発された、強い型付けをもつ純粋なオブジェクト指向と関数型が理論的にほぼ完全に融合したプログラミング言語です。Scalaは、JVM上で実行されるため、言語内からすべてのJavaクラスが普通に利用可能であり、簡潔で高い表現力とJavaとほぼ同等の実行性能をもっています。 強い型付け言語でありながら型推論機能のおかげで冗長な型宣言が不要であり、Ruby以上にコンパクトなコード記述を許し、GenericやMixin(Trait)等の抽象クラス管理機能、パターンマッチング機能などの簡潔で豊かな表現力と相まって、新世代の実用スクリプト言語としての高い可能性も秘めています。 ○言語Scalaの基本サイト The Scala Programming Language(ダウンロード、ドキュメント充実) http://www
val fruits = List("apple", "banana", "avocado", "papaya") val countsToFruits = // count how many 'a' in each fruit fruits.groupBy(fruit => fruit.count(_ == 'a')) for (count, fruits) <- countsToFruits do println(s"with 'a' × $count = $fruits") // prints: with 'a' × 1 = List(apple) // prints: with 'a' × 2 = List(avocado) // prints: with 'a' × 3 = List(banana, papaya)
雑多な文書 † Coq/install インストールのしかた(cygwin+Meadow) Coq/tactics tactic の中途半端な解説 Coq/Proofs? 証明したこと
電話会社エリクソンの研究所で作られた言語「Erlang」についてしばらく調べてみようと思います。読み方はたぶん"あーらん"で。 リアルタイム処理や誤り検出が可能で組込用途に使われていて、並行処理の記述も可能、 ML や Haskell、Clean などに代表される関数型プログラミング言語の一種である、 と、見た目なかなか盛りだくさんな感じ。さてさて。 ご意見・間違いの指摘等大歓迎。 インストール 概観1 概観2 * 変数 構文の基本 データ構造 * パターンマッチ1 パターンマッチ2 パターンマッチ3 関数定義 落ち穂拾い メモ プロセス1 * プロセス2 インストール (2003/04/09) Open Source Erlang のページから、 ソースやメジャーなOS用のバイナリが手に入ります。異様にデカいので、 回線の細い方には厳しいかもしれません。Windowsの場合、 落としたイ
Befunge-93 Documentation 伝統的なBrainf*ckやFalse言語の伝統をひん曲げてひねって作られた言語である Translated by INA,May,2005 Chris Pressey, Cat's Eye Technologies Original document September, 1993 Updated December, 1996 Updated Yet Again September, 2004 Befunge-93の基本 Befunge-93プログラミング特有の要素はそのプログラムカウンタにある(以下これをPCと表記する)。大抵のプログラミング言語においてPCは前に進み続け、時として他の場所にジャンプするといった物である。 しかしBefunge-93のPCは異なった動きをする。前に後ろに、そして左へ右へと移動するのである。
event Session Perl, PHP, Python, Rubyの20年とこれから 2003年に本イベントの第1回で扱ったプログラミング言語はPerl, PHP, Python, Rubyの4つでした。 今回は再びこれら4つの言語を取り上げ、今までの20年を振り返りこれからの展望を語っていただきたいと思います。 タイムテーブル: 13:00 - 13:20 Perl 13:25 - 13:45 PHP 14:00 - 14:20 Python 14:25 - 14:45 Ruby 15:00 - 15:45 この20年を振り返る座談会 16:00 - 16:45 これからどうする座談会 Perl
例えば,1から10までの整数の総和を計算して表示するプログラムは,MyC言語では次のように書ける(これ以降,このプログラムはsum.mycというファイルにセーブされているものとする)。 { zero = 0; minus_one = -1; sum = 0; n = 10; while (n > zero) { sum = sum + n; n = n + minus_one; }; print sum; } このプログラムは,個々の行が先の構文と正確に対応していることに気をつけてほしい。例えば,「zero = 0」と「n > zero」は,単に「n > 0」と書きたいところだが,今回の言語には変数と定数を直接比較する構文がない(!)ので,このような書き方になっている。minus_oneについても同様だ。もちろん,このような制限はあくまで説明や実装を簡単にするための「手抜き」に過ぎないので
忙しい人のためのまとめ 一般に「オブジェクト指向プログラミング」と呼ばれる考え方には発案者が異なる二系統がある。(ただし簡単のため、次のうち前者から批判的に派生して生じたプロトタイプベースのオブジェクト指向はここには含めていない) アラン・ケイによる、変化に強い長期運用可能な遅延結合システムを SIMULA67 にあった「オブジェクト」をメッセージの受け手とすることで実現(オブジェクトにメッセージ送信)するアイデアに基づく「メッセージングのオブジェクト指向」と、 ビアルネ・ストラウストラップ(前後して抽象データ型を発案したリスコフ本人、オブジェクトクラスを考えたニガードらSIMULA陣営、Eiffelのメイヤーらも同様の着想を得ている)による、ユーザー定義型(抽象データ型)を SIMULA67 にあった「クラス」という言語機能を使って実現(カプセル化、継承、多態性)するアイデアに基づく「抽
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く