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

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

関連項目

参考文献

外部リンク