≪韓国語≫ニム
韓国語「ニム」とは、「ニム」の意味
韓国語の「ニム」は、「~様」という意味を表す丁寧なかしこまった表現だ。例えば、接客する相手のことを日本語では、「お客様」という。「お客さん」は、そんざいな印象を与える言い方だと考えられている。日本語の感覚でいえば、この「お客様」の「様」に当たるのが、「ニム」なのである。韓国語では、お客様のことを「손님(ソンニム)」または、「고객님(コゲンニム)」と表現する。この二つには、使い分けがあって、「손님(ソンニム)」は、家に来る客に対しても使うし、食品マーケットや飲食店の客に対しても使う。一方、「고객님(コゲンニム)」のほうは、銀行をはじめとして、ビジネスシーンでの客に対して使われている。会員登録して利用する「顧客」といったイメージもある。また、百貨店の客も「고객님(コゲンニム)」と呼ばれる。「ニム」は、人の名前につけて、「~様」という意味を表現する場合にも、使われる。例えば、「田中様」という場合には、「다나카님(タナカニム)」と表記される。
ところで、日本では、自社の社員に対しては、役職が上の者に対してであっても「様」はつけないのが一般的である。「社長様」「会長様」などという言い方を自社の社員に対して使うのは、違和感のある表現となる。「様」をつけるのは、他社の社員に対してだけだ。しかし、上下関係の厳しい韓国においては、自社の社員であっても、役職が上の者に対しては、「役職名+ニム」という形でこの「ニム」を使う。
韓国語「ニム」のハングル表記
「ニム」は、ハングルで表記すると、「님」となる。子音「ㄴ」と母音「ㅣ」、それにパッチムとして子音「ㅁ」が組み合わされて構成されている。いくつか、「님」を使った例をあげてみる。坂本様は、「사카 모토님(サカモトニム)」。先生は、「선생님(ソンセンニム)」。理事は、「이사님(イサニム)」。などがある。韓国語「ニム」の発音
韓国語の「ニム」の発音は、〔nim〕である。日本語の「ム」の場合とちがい、母音「u」はないことに注意が必要だ。パッチム「ㅁ」は、口を閉じて発音する「m」の音の子音だ。そもそも、19文字あるとされている子音のうちの16文字がパッチムとなることができるわけなので、パッチムには、母音が含まれることはない。カタカナで発音が表記されていると、日本語の文字の性質上、どうしても母音を含んだ発音を想定してしまう。正しい発音に近づくためには、発音記号を見ることや、パッチムの特性を覚えておくことを心がけることも大切だ。Nim
Nim
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/10/29 04:18 UTC 版)
|
Nim crown のロゴ
|
|
| パラダイム | マルチパラダイム: コンパイル言語、並行プログラミング言語、手続き型、命令型、オブジェクト指向 |
|---|---|
| 登場時期 | 2008年 |
| 設計者 | アンドレアス・ランプフ |
| 最新リリース | 2.2.4 / 2025年4月22日[1] |
| 型付け | 静的型付け[2]、強い型付け[3]、型推論、構造的な型付け |
| 影響を受けた言語 | Ada、Modula-3, Lisp、C++、Object Pascal、Python, Oberon |
| プラットフォーム | クロスプラットフォーム |
| ライセンス | MIT[4][5] |
| ウェブサイト | nim-lang |
| 拡張子 | .nim |
Nim (旧称Nimrod[6]) とは命令型、マルチパラダイム、コンパイル言語という特徴を持つプログラミング言語[7]であり、アンドレアス・ランプフにより設計・開発された。Nimは「効率的で表現豊かで優雅」であるように設計されている[8]。メタプログラミング、関数型プログラミング、メッセージパッシング[4]、手続き型プログラミング、オブジェクト指向プログラミングをサポートしており、 コンパイル時のコード生成、代数的データ型、C言語のForeign function interface (FFI)、JavaScriptへのコンパイルなどの機能を提供している[9]。Pythonのようなシンプルな構文で書かれるが、C言語並みの高いパフォーマンスを有している。Nimは様々な用途に使用可能なシステムプログラミング言語である[10]が、Nimのように比較的新しい(C/C++以降に発表された)言語としては他にもRust、Go、D言語などの言語がある[11][注釈 1]。
概要
Nimはシンプルな構文による静的型付き言語である[12]。構文マクロや項書き換えマクロなどのコンパイル時のメタプログラミング機能をサポートしている[13]。項書き換えマクロは例えばBignumやMatrixなどのデータ構造の効率的ライブラリ実装を可能にしており、BignumやMatrixなどがあたかも元々の言語機能に組み込まれていたかのような効率的な実装を可能にする[14]。イテレータもサポートしており、このイテレータはNimの中で第一級オブジェクトとして用いることができ[13]、これら機能は関数プログラミングを可能にする。オブジェクト指向プログラミングは継承と多重ディスパッチによってサポートされている。関数はジェネリックになりうるし、オーバーロードも可能である。またTypeクラスがサポートされており、これはジェネリクスを促進するものである。演算子オーバーロードもサポートされている[13]。Nimは循環参照検出つきの遅延参照カウントに基づくガベージコレクタを搭載している[15][16]。アンドリュー・ビンストック[注釈 2]はNimに関して「(Nimは)PascalおよびPythonにまたがる非常に独創的なデザインを提供し、CやJavaScriptのコードにコンパイルすることができる[17]」と述べた。
歴史
Nimの開発は2005年にアンドレアス・ランプフ[18]によって始まった。NimのコンパイラはPascalによって書かれていた[19]。2008年にはNimで書かれたコンパイラがリリースされた[20]。Nimのコンパイラはオープンソースであり、アンドレアス・ランプフに加えてボランティアのグループが開発を行っている[21]。
言語設計
Nimに影響を与えた言語
- Modula-3: traced pointer vs untraced pointer.
- Delphi: 型安全な列挙型 (set of char).
- Ada: 部分範囲型、特殊型、safe variant / case object.
- C++: Excessive overloading、ジェネリックプログラミング
- Python: インデントに基づくシンタックス。
- Lisp: マクロ・システム、抽象構文木の採用、同図像性
- Oberon: The export marker.
- C#: async/await, lambda macro.
- Go: Defer.
コンパイラ
Nimのコンパイラは最適化されたCのコードを吐くことができ、Cのコンパイラなどの外部コンパイラに従ったコンパイルを選択することもできる[22](ClangやGNU Compiler Collectionなどの多くのコンパイラがサポートされており、これらコンパイラの最適化や移植能力を利用することができる)。Nimのコンパイラは加えてC++とObjective-Cのコードを吐くことができ、これらの言語で書かれたアプリケーションプログラミングインタフェース(API)を備えた簡易なインターフェイスを提供する[7]。この機能によってNimによるiOSやAndroidのアプリケーションの開発も可能である[23][24]。
パッケージシステム
Nimble はNimによってNimモジュールをパッケージするのに用いられているパッケージマネージャーである。これは構成にNimScriptを用いている。NimbleはGitリポジトリ上でパッケージの主要ソースとして働く。パッケージのリストはJSONファイルに保存され、nim-lang/packages repositoryから自由にアクセス可能である。このJSONファイルはNimbleに要求されたGit URLを与え、パッケージをクローンし、インストールする。
ツール
Nimble
Nimble[25]はNimモジュールのパッケージに使われているパッケージマネージャである。Nimbleの構成にはNimScriptが使われている。Nimbleのパッケージは主にGitで管理されており、NimbleはGitリポジトリ上で動作する。NimbleのパッケージのリストはJSONファイルに保管されており、nim-lang/packagesリポジトリで自由にアクセス可能である。このJSONファイルはNimbleにGit URLを提供し、そのURLからパッケージがクローンされインストールされる。
c2nim
c2nimはAnsi CのコードからNimのコードに変換するときに新たなBindingを生成するのに寄与する。出力は人間に読むことが可能なNimのコードになり、これにより変換後に人の手での改善・改良が可能になる。
ライブラリ
NimのプログラムはC言語で使われているものであれば、どんなライブラリでも使用することが可能である。GTK2、SDL2、Cairo、OpenGL、WinAPI、zlib、libzip、OpenSSL、cURLなど多くの言語に言語バインディング (Language binding) が存在する[26]。NimはPostgreSQL、MySQL、SQLiteのデータベースを使用することができる。NimはLuaインタープリタおよびPythonインタープリタとインターフェースをとることができる。
コードの例
以下のコードサンプルはNim 0.13.0.のシンタックスで有効であり、バージョンが新しくなるにつれて記法が変わる可能性がある[27]。
Hello world
NimによるHello worldのプログラム:
echo "Hello World!"
Stringをひっくり返す
Nimの機能を知るためのシンプルな例。
proc reverse(s: string): string =
result = "" # 暗黙的なresult変数
for i in countdown(high(s), 0):
result.add s[i]
var str1 = "Reverse This!"
echo "Reversed: ", reverse(str1)
もっともエキゾチックな機能は暗黙的なresult変数である。すなわち、returnの型がvoidではないNimのすべてのプロシージャは暗黙的なresult変数を持っており、result変数は返される(returnされる)値を保持している。Forループでは、countdownという呼び出しが見られ、このcountdownはイテレータである。もしFor loopに際して型が定義され、またイテレータが省略されればNimのコンパイラはitemsイテレータの使用を試みる。
メタプログラミング
これはNimのテンプレート機能を使ったメタプログラミングの例である。
template genType(name, fieldname: untyped, fieldtype: typedesc) =
type
name = object
fieldname: fieldtype
genType(Test, foo, int)
var x = Test(foo: 4566)
echo(x.foo) # 4566
genTypeはコンパイル時に呼び出され、Test型が作成される。
Cの関数をラップする
次のプログラムは既存のCのコードがNimで直接使うことができることを示す例である。
proc printf(formatstr: cstring)
{.header: "<stdio.h>", varargs.}
printf("%s %d\n", "foo", 5)
この例では有名なCの関数printfがインポートされ使用されている[28]。
コミュニティ
NimはGitHubおよびフォーラムによって主催されているバグのトラッキングをするコミュニティがある[29][30]。 O'Reilly Open Source Convention (OSCON)でのプレゼンテーションが2015年に行われた[31]。 O'Reilly Community: Essential Languages: Nim, Scala, Python.[32][33]
関連項目
脚注
注釈
- ^ システムプログラミング言語#主なプログラミング言語も参照。
- ^ 英: Andrew Binstock (Dr. Dobb'sの編集長)
参考文献
- ^ 出典URL: https://github.com/nim-lang/Nim/releases/tag/v2.2.4
- ^ “Nim by example”. GitHub. 2014年7月20日閲覧。
- ^ Караджов, Захари; Станимиров, Борислав (2014). Метапрограмиране с Nimrod. VarnaConf (ブルガリア語). 2014年7月27日閲覧.
- ^ a b “FAQ”. Official website. 2015年3月27日閲覧。
- ^ “copying.txt”. Nim. GitHub. 2015年3月27日閲覧。
- ^ “Version 0.10.2 released - Nim Blog”. 2020年12月11日閲覧。
- ^ a b Rumpf, Andreas (2014年2月11日). “Nimrod: A new systems programming language”. Dr. Dobb's Journal. 2014年7月20日閲覧。
- ^ “The Nim Programming Language”. Official website. 2014年7月20日閲覧。
- ^ “What's so special about Nim?”. Hookrace blog. 2015年3月27日閲覧。
- ^ “nim-lang.org”. nim-lang.org. 2020年12月17日閲覧。2020年12月17日時点でトップページに「Nim is a statically typed compiled systems programming language.」とある。
- ^ “BEST SYSTEMS PROGRAMMING LANGUAGES”. slant. 2020年12月17日閲覧。
- ^ “Nim Syntax”. akehrer. 2015年3月27日閲覧。
- ^ a b c “Nim Manual”. Official website. 2014年7月20日閲覧。
- ^ “Strangeloop Nim presentation”. 2015年4月30日閲覧。
- ^ “Nim's Garbage Collector”. Nim documentation. 2015年4月3日閲覧。
- ^ “A Quick Comparison of Nim vs. Rust”. 2015年5月8日閲覧。
- ^ The Rise And Fall of Languages in 2013 By Andrew Binstock, January 07, 2014 Dr. Dobb's
- ^ 独: Andreas Rumpf
- ^ “Nim Pascal Sources”. Nim. GitHub. 2013年4月5日閲覧。
- ^ “News”. Nim-lang.org. 2016年6月11日閲覧。
- ^ “Contributors”. Nim. GitHub. 2013年4月5日閲覧。
- ^ Rumpf, Andreas (15 January 2014). Nimrod: A New Approach to Metaprogramming. InfoQ. 該当時間: 2:23. 2014年7月20日閲覧.
- ^ Hankiewicz, Grzegorz Adam (2014年3月10日). “Nimrod for cross platform software”. Rants from the Ballmer Peak. GitHub. 2014年7月20日閲覧。
- ^ “Nimrod-on-android failure” (2012年7月28日). 2015年2月28日閲覧。
- ^ Nimble
- ^ “Nim Standard Library”. Nim documentation. 2015年4月4日閲覧。
- ^ Nim code examples at Rosetta Code
- ^ “What is special about Nim?”. HookRace (2015年1月1日). 2015年2月17日閲覧。
- ^ “Primary source code repository and bug tracker”. GitHub. 2015年5月4日閲覧。
- ^ “Nim Forum”. nim-lang.org. 2015年5月4日閲覧。
- ^ “Nim at OSCON 2015”. OSCON (2015年7月20日). 2015年5月4日閲覧。
- ^ “Essential Languages: Nim, Scala, Python”. 2015年5月8日閲覧。
- ^ Presentation of Nim by Andreas Rumpf on OSCON 2015 - YouTube
外部リンク
-nim
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/09 09:10 UTC 版)
-nim( ハングル : 님 )敬語の上記の最高の形である- SSI、それでも客、顧客、クライアント、および不慣れな人のための一般的敬語として使用される。-nimはまた、かなりの量のスキル、知性、知識などを持っていることで尊敬され賞賛されている人に使用され、自分よりも高いランクの人に使用される。 例には、家族( eomeo-nim 어머님 & abeo-nim 아버님)、教師( seonsaeng-nim 선생님)、聖人(例:牧師– moksa-nim 목사님)、および神 ( haneu-nim 하느님/ hana-nim하나님)が含まれます。-nimは、手紙/電子メールおよび郵便小包の受取人の名前に従う。
※この「-nim」の解説は、「朝鮮語の文法」の解説の一部です。
「-nim」を含む「朝鮮語の文法」の記事については、「朝鮮語の文法」の概要を参照ください。
「nim」の例文・使い方・用例・文例
- nimのページへのリンク
