ページ「Vi」と「エントリポイント」の間の差分

提供: MonoBook
(ページ間の差分)
ナビゲーションに移動 検索に移動
 
 
1行目: 1行目:
{{小文字}}
+
'''エントリーポイント'''(entry point)とは、[[プログラム]]を実行する際の開始地点のことである。[[サブルーチン]]という用語を用いる[[プログラミング言語では]]'''メインルーチン'''と呼ぶこともある。
'''vi'''(読み:び)とは、[[BSD]]発祥の[[テキストエディタ]]である。
 
  
==概要==
+
[[スクリプト言語]]などでは[[ソースコード]]の先頭をエントリーポイントとするものが多い。
viは[[BSD]][[Pascal]][[コンパイラ]]に密かに同梱されていた秘密の[[テキストエディタ]]である。
+
また、[[Python]]や[[Ruby]][[Perl]]などのように同一[[ソースコード]]でも呼ばれ方の違いにより、メインルーチンとして動いたり、ライブラリとして動いたりということを容易に切り替えれる[[プログラミング言語]]もある。
  
名称は'''Vi'''sual Editorの「'''ビ'''」であり、[[ラインエディタ]]全盛の世の中に颯爽と登場したビジュアルで操作ができる画期的な[[テキストエディタ]]であった。Visualと冠していても[[Visual Studio]]とは特に関係はない。
+
== 記述例 ==
  
viの開発者である[[ビル・ジョイ]]は後に[[サン・マイクロシステム]]を創業し、viで多くの[[プログラマー]]の心を鷲掴みにしたおかげで同社の[[ワークステーション]]や[[サーバー]]が売れに売れまくった。なお、同社の[[コンピューター]]に同梱される[[Sun Type 3 キーボード]]はあまりにもデカすぎたので、[[日本]]でサン製品の[[互換機]]を作っている[[富士通]]は[[Happy Hacking Keyboard]]というあまりに小さすぎるvi特化型の[[キーボード]]を作っている。
+
=== [[C Sharp|C#]] ===
 +
<source lang="csharp">
 +
namespace HelloWorld
 +
{
 +
    class Hello
 +
    {
 +
        public static void Main(string[] args)
 +
        {
 +
            // something in my house
 +
        }
 +
    }
 +
}
 +
</source>
  
[[Linux]]界隈ではviを[[魔改造]]した[[vim]]が圧倒的な勢力をもっているが、[[BSD]]界隈では[[nvi]]が強い。
+
=== [[Java]] ===
なお、[[*BSD]]の中でも圧倒的な勢力を誇る[[邪悪なBSD]]では[[vim]]が[[プリインストール]]されており標準となっている。
+
<source lang="java">
 +
public class HelloWorld {
 +
    public static void main (String[] args) {
 +
        // something in my house
 +
    }
 +
}
 +
</source>
  
== 基本 ==
+
=== [[Python]] ===
 +
<source lang="python">
 +
if __name__ == "__main__":
 +
    # something in my house
 +
</source>
  
=== カーソルの移動 ===
+
=== [[Ruby]] ===
[[ビル・ジョイ]]が[[開発]]に使っていた「[[Lear Siegler ADM3A]]」という[[コンピューター]]には[[十字キー]]が付いていなかったという理由で、基本的に[[カーソル]]の移動はコマンドモードにて「h」「j」「k」「l」キーで行うようになっている。なお近代的なvi実装では[[カーソルキー]]も使えるのが一般的となっており、十字キーを使うことでインサートモードでもカーソル移動が行えたりする。
+
<source lang="ruby">
{| class="wikitable"
+
if $0 == __FILE__
! コマンド
+
    # something in my house
! 概要
+
end
|-
+
</source>
| h
 
| カーソルを←に1文字移動する。
 
|-
 
| j
 
| カーソルを↓に1文字移動する。
 
|-
 
| k
 
| カーソルを↑に1文字移動する。
 
|-
 
| l
 
| カーソルを→に1文字移動する。
 
|}
 
  
=== コマンドモードとインサートモード ===
+
=== [[Perl]] ===
viを起動するとまずコマンドモードとなる。
+
<source lang="perl">
この状態で特定のコマンドを入力することで編集や保存、終了、検索といったことができる。
+
if ($0 eq __FILE__) {
 +
    # something in my house
 +
}
 +
1; #←は「return 1;」の省略表記。
 +
</source>
  
==== インサートモードへの移行 ====
+
=== [[PHP]] ===
コマンドモードで以下のコマンドを入力するとインサートモードへ移行する。複数の種類があるがテキストの入力開始位置の違いなので超基本としては「i」だけを覚えておけば間違いない。インサートモード移行後は近代的なテキストエディタと同様にテキストを入力すればよい。
+
==== 現状わかっている最強の方法 ====
{| class="wikitable"
+
<source lang="php">
! コマンド
+
if (!debug_backtrace()) {
! 概要
+
    // これ最強
|-
+
}
| i
+
</source>
| カーソル位置に挿入開始
 
|-
 
| a
 
| カーソル位置の次に挿入開始
 
|-
 
| I
 
| 行頭に挿入開始
 
|-
 
| A
 
| 行末に挿入開始
 
|}
 
  
==== インサートモードの抜け方 ====
+
==== コマンドラインの場合 ====
インサートモードを終了しコマンドモードへ移行するには以下の特殊キーを入力する。
+
<source lang="php">
{| class="wikitable"
+
<?php
! 特殊キー
+
if (isset($argv[0]) && __FILE__ === realpath($argv[0])) {
! 概要
+
    // something in my house
|-
+
}
| [Esc]
+
</source>
| インサートモードを終了し、コマンドモードへ移行する。
+
==== Apacheモジュールの場合 ====
|}
+
<source lang="php">
 +
<?php
 +
if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) {
 +
    // something in my house
 +
}
 +
</source>
  
=== 保存と終了 ===
+
=== [[F Sharp|F#]] ===
{| class="wikitable"
+
<source lang="fsharp">
! コマンド
+
[<EntryPoint>]
! 概要
+
let main args =
|-
+
    // something in my house
| :q
+
    // 0を返して正常終了
| 終了
+
    0
|-
+
</source>
| :q!
+
 
| 強制終了
+
=== [[Haskell]] ===
|-
+
<source lang="haskell">
| :w
+
{- Haskell "hello, world" -}
| 保存
+
main = putStrLn "hello, world" -- putStrLn は文字列を出力する
|-
+
</source>
| :w!
 
| 強制保存
 
|-
 
| :wq
 
| 保存して終了
 
|-
 
| :wq!
 
| 強制保存して終了
 
|-
 
|}
 
  
 
== 関連項目 ==
 
== 関連項目 ==
* [[BSD]]
+
* [[プログラミング言語]]
* [[emacs]]
 
 
 
 
== 参考文献 ==
 
== 参考文献 ==
{{reflist}}
+
<references/>
 +
== 外部リンク ==
  
 
{{stub}}
 
{{stub}}

2012年5月2日 (水) 09:17時点における版

エントリーポイント(entry point)とは、プログラムを実行する際の開始地点のことである。サブルーチンという用語を用いるプログラミング言語ではメインルーチンと呼ぶこともある。

スクリプト言語などではソースコードの先頭をエントリーポイントとするものが多い。 また、PythonRubyPerlなどのように同一ソースコードでも呼ばれ方の違いにより、メインルーチンとして動いたり、ライブラリとして動いたりということを容易に切り替えれるプログラミング言語もある。

記述例

C#

namespace HelloWorld 
{
    class Hello 
    {
        public static void Main(string[] args)
        {
            // something in my house
        }
    }
}

Java

public class HelloWorld {
    public static void main (String[] args) {
        // something in my house
    }
}

Python

if __name__ == "__main__":
    # something in my house

Ruby

if $0 == __FILE__
    # something in my house
end

Perl

if ($0 eq __FILE__) {
    # something in my house
}
1; #←は「return 1;」の省略表記。

PHP

現状わかっている最強の方法

if (!debug_backtrace()) {
    // これ最強
}

コマンドラインの場合

<?php
if (isset($argv[0]) && __FILE__ === realpath($argv[0])) {
    // something in my house
}

Apacheモジュールの場合

<?php
if (basename(__FILE__) == basename($_SERVER['PHP_SELF'])) {
    // something in my house
}

F#

[<EntryPoint>]
let main args =
    // something in my house
    // 0を返して正常終了
    0

Haskell

{- Haskell "hello, world" -} 
main = putStrLn "hello, world" -- putStrLn は文字列を出力する

関連項目

参考文献

外部リンク