言語編「C言語」とは、世界を回すプログラム言語のことである|#エンジニアあるある システム開発現場・実録IT用語辞典

【言語編】「C言語」とは、世界を回すプログラム言語のことである

お疲れさまです。ここのところずっと、WindowsプログラムとかかわりあっているMWです。C++は気を使わないとすぐに機嫌を損ねるので、ほかの言語と比べてやはり実装にかかる時間は若干長い気がします。その代わり実行速度はやはり高速ですが。

プログラムの世界には、さまざまな言語があります。C、C++、C#、Java、PHP、Ruby、Python、Perl、Lisp、COBOL、FORTRAN、D言語。有名どころを挙げただけでも、両手が埋まります。

それぞれに特性があり、どれも使っているとそれなりに楽しい気持ちになるものですが、個人的にはPythonが一番お気に入りです。

#エンジニアあるある 実録IT用語辞典【言語編】INDEX

「C言語」とは

世界が石油で回っているように、プログラムの世界はCで回っていると言っても過言ではないかもしれないくらいスタンダードな言語。

プログラムの入門希望者に「どの言語から始めればいいですか」と聞かれた時、「とりあえずCから」と答える人を多く見かけるくらい、スタンダードな言語。

ただ、ほかの多くの言語と比べて明らかに習得の難易度が高く、最初からこの言語にぶつかって行ってしまうと、高い確率でポインタの壁にぶつかってプログラムを諦めてしまうような気がするので、もっと簡単な言語から勉強するという選択肢もありだと思われるもの。VBScriptとか。

オブジェクト指向やガベージコレクションといった、最近の言語にありがちな機能は持たず、同じ機能を実装してもほかの言語より数倍コード量が多くなることから、大掛かりなプロジェクトで使用するには向いていないと言われているもの。

実装していると、おいしいけど小骨が多くて食べづらい魚を食べているような気持ちになる言語である。それでもプログラムはCで回っている。

「C++」とは

プログラミング言語界のバーリトゥード(何でもあり)的な立ち位置にいる言語。

JavaやRubyなどと比べると若干古い言語になるが、主にWindowsプログラムの案件などでまだまだ現役として活躍している。

Cの機能も備えているので普通にポインタも使えるし、気持ちいいくらい強力なテンプレートや、多重継承、引数のオーバーロード等も使える、良い意味でも悪い意味でも戦闘能力が高い言語である。

コンパイラによってネイティブなコードを吐き出すため、処理速度も速く、スクリプト言語ではボトルネックになる箇所をカバーするという用途でも使える。

最近の主流になっている言語の多くが、プログラマのミスを防ぐためにいくつかの機能をあえて制限しているのに対して、C++は「好き放題やる機能は用意したから、おまえたち、自由に正しく創れ」(筆者脳内での勝手な解釈)という感じで機能が提供されている。

実装していると、素肌に革ジャンを着て荒れ果てた地をバイクで走っているような気分になれる言語である。

「Java」とは

C++がフリーダムな世界だとすると、Javaは校則が厳し過ぎて生徒が7日間くらい廃工場に立てこもってしまう学校のような、きっちりと制約された世界である。

プログラムの再利用に対する意識の高さや、スコープや名前空間の明確さなどから、大規模なシステムの構築に向いている言語と言われている。

実装していると、レゴブロックでお城を作っていた子供のころのことを思い出すような、きっちりとした部品と組み合わせができる言語である。

「Ruby」とは

Ruby on Railsというキラーアプリケーションの登場もあって、このところ案件の量が増えてきた感のあるプログラミング言語。

日本の人が作った言語なので、マルチバイトという概念とあまりなじみがない国で作られたプログラミング言語を使っているとたまに遭遇する、日本語を使うと文字化けが…… とか、バグが…… といった現象と出合う確率が少ないところに快適さを感じることができるかもしれないもの。

真性オブジェクト指向言語と呼ばれたりするように、文字列も数値もすべてオブジェクトとして扱われている。と書くと硬そうな言語に聞こえるかもしれないが、ユーザ入力に応じて継承するクラスを変えられるとか動的にコードを生成できるとか、非常に柔軟な記述ができるフリーダムさを持つ言語である。

どのくらいフリーダムなのかは、「ruby 黒魔術」で検索をするとさまざまな結果がヒットすることから察してもらえるかもしれない。 

「Ruby on Rails」とは

WEBアプリケーション用フレームワークの1つ。 Railsを使う利点の1つに、「10分でアプリケーションができる」というちょっと胡散臭い気もする宣伝文句が使えてしまうような、便利なアプリケーション自動生成機能がある。実際に必要なソフトウェアをインストールし、いくつかのコマンドを打てば、データベースへの参照、登録、更新、削除をするための味も素っ気もないデザインのアプリケーションが出来上がっている。

もちろん、それだけではアプリケーションとして使える代物ではないが、多くのエンジニアが自動生成された同じソースを元にコードを書いていくことで、それぞれが個性的なディレクトリ構成を作ることを防いでくれる効果が期待できる。

また「設定よりも規約を優先する」というRails自体のポリシーのお陰で、どのURLがどのクラスのどのメソッド名を呼び出すのかといったフローが直感的に分かるところもメリットの1つである。web.xmlやリライト設定を追いかけて「このURLはどのクラスを呼んでるんだろう?」と悩んだり、管理されていないコメントやドキュメントに仕掛けられた罠に引っかかって見当違いの箇所を探したりすることを防げるのであれば、ありがたいことである。 

「Python3」とは

昔はPython3000(西暦3000年リリース予定という意味で付けられたニックネーム)などといった皮肉まじりのネーミングで扱われていたものが、思ったよりも早くリリースされることになり、巷のパイソニスタとか呼ばれる、海外にはいっぱいいるような話はよく聞くけど日本ではあまり出会うことがない気がする人たちを喜ばせているもの。

Python3は、これまでのPythonの歴史の中で発生してきたさまざまな機能追加や仕様の遷移のせいで徐々に作りに一貫性がなくなってきた箇所が目立つようになってしまったという、同じソースにずっと改修を加えてきた開発現場ではよく聞くような気がする状況を改善すべく、問題点をばっさりと切り捨てて小奇麗な感じにしたものである。

問題箇所を切り捨てたことによって、Python2との互換性も見事なまでに切り捨てられ、これまで動いていたソースをPython3で動かすと当たり前のように動かないという現象が頻発することにもなるようである。

多くのシステム管理者を泣かせること請け合いの意欲的な一品である。

「HTML」とは

WEB上で文書を公開する際に使用されるマークアップ言語。タグと呼ばれる記号を使って、文字の装飾や配置を行うことができる。

1週間も勉強すればそれなりの文書は書けるようになる敷居の低さと、FTPでWEBサーバに配置するだけで世界中の人間が閲覧可能になる公開のしやすさなどが人気の理由。

多くのプログラミング言語は、1文字括弧やカンマを忘れるだけでまったく動かない状態になるのに対して、HTMLは多少間違った書き方をしても、ブラウザが適当に解釈してそれなりに表示してくれる。そんないい加減なところも、より敷居を低くしてくれているような気がするもの。

HTMLの仕様はW3Cによって公開されているが、実際にその仕様を読むと、bodyの下にはこの要素が置けて、その下にはこの要素が置ける等、割と覚えるのが大変な細かい規約がある。ただ、守らなくてもちゃんと表示されるせいか、W3Cのサイト等で公開されているValidation Serviceでチェックをするとエラーが出ないサイトのほうが少ないのが現状だったりするもの。

IEとネットスケープがシェアを争っていたころ(第一次ブラウザ戦争時代)に、仕様を無視したブラウザ独自の拡張が生み出されたことが今でも尾を引き、仕様どおりに書くと動かないという寂しい現象もいくらか発生している。

「スタイルシート(CSS)」とは

文書の表示形式や文字装飾などを指定するもの。主にHTMLの文字装飾などを定義する際に使用されている。

最も有名なスタイルシートに、CSSがある。CSSが有名過ぎるせいか「スタイルシート=CSS」として使われることが多いが、一応ほかにもそれなりに名前の売れているスタイルシートが存在する。XSLとか。

スタイルシートを使用せずに大量のHTMLファイルを作成すると、背景はアイボリーにして、文書のタイトル文字サイズは150%にして、といった設定を1つずつ記載しなければならず面倒である。それに加えて、後になって「やっぱりタイトルの文字サイズは160%にしましょうか」とか「背景色をクリーム色にしたいですね」といった要求が出た時に、全ファイルを書き換えることになる。

そんな作業はできれば遠慮したいので、全体的な統一感にかかわる設定はスタイルシートに記述しておいて、変更を依頼された時にはCSSの数行をさらっと書き換えるだけで済むようにしておきたい。

#エンジニアあるある 実録IT用語辞典 【注目のキーワード】

あわせて読みたい

注意!!

この連載記事には必ずしも正しいとは限らない内容が含まれています。この記事を信じたことによって発生した障害に対して、筆者及び株式会社マイナビは一切の責任を負いません。ご容赦ください。

※この記事は2007/11/23〜2009/08/28に連載された内容を再構成しています

著者プロフィール:MW(えむだぶりゅー)

Java、PHP、C、C++、Perl、Python、Ruby、Oracle、MySQL、PostgreSQL関連の業務経験がある、典型的な広く浅い役に立たない系のウェブ(時々クライアント)アプリのエンジニア。 週に1日休みがあれば、ほか6日間は終電帰りでも全然へーきな体力と、バグが出ても笑って誤魔化す責任感の無さを武器に、今日も修羅場った開発現場の風景を横目で見ながら、適当に仕事をこなす日々を送る。
著書「それほど間違ってないプログラマ用語辞典」(発行:毎日コミュニケーションズ)

  • twitter
  • facebook
  • line
  • hatena

勤務地を選ぶ

職種を選ぶ