Mono๋ฅผ ์ฌ์ฉํ C# ํ๋ก๊ทธ๋๋ฐ
๊ฒ์ ์๋ฒ ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ฌ์ ๊ฐ๊ณ , ๊ณต๋ถ๋ฅผ ํ๊ฒ ๋ ์ ๋ C#์ด๋ผ๋ ์ธ์ด๋ฅผ ์ ํ๊ฒ ๋์์ต๋๋ค. ๋ฌผ๋ก C# ์ธ์ด๋ฅผ ์ฒ์ ์ฌ์ฉํ ๊ฑด ์๋์ง๋ง, ๊ทธ๋ ๋ค๊ณ ์ ์์ผ๋ก ๋ฐฐ์ด ์ธ์ด๋ ์๋์๊ณ , ๊ธฐ๊ปํ ๊ฒ์ด๋ผ๊ณ ๋ Visual Basic ์ธ์ด๋ฅผ ํํผํ๊ณ ์ ์ ์ ์ฌ์ฉํด๋ณธ ๊ฒ ์ ๋์์ต๋๋ค.
Microsoft์์ ๊ฐ๋ฐํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
C# ์ธ์ด์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ์ ์ด๋ณด๊ธฐ ์ ์ ์ด ์ธ์ด๊ฐ ๋ฌด์์ธ์ง์ ๋ํ ๊ฐ๋ตํ ์๊ฐ๋ถํฐ ํด๋ณด๊ฒ ์ต๋๋ค.
C# ์ธ์ด๋ Microsoft์์ ๊ฐ๋ฐํ๊ณ ์๋ C++ ์ธ์ด ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ๋ฌธ๋ฒ์ C++์ Java ๋น์ทํ์ง๋ง, ๋๋ถ๋ถ Java์ ๋น์ทํฉ๋๋ค.
C# ์ธ์ด๋ Microsoft์์ ๊ฐ๋ฐํ .NET Framework์ ์ผ๋ถ์ ๋๋ค. ์ต์ด .NET Framework 1.0 ๋ฒ์ ์ด ๋์จ ๊ฒ์ 2002๋ ์ ๋์ธ ๊ฒ์ผ๋ก ๊ธฐ์ตํ๊ณ ์๋๋ฐ, ๊ทธ ๋๋งํด๋ .NET Framework์ ์ฑ๋ฅ์ ๊ทธ๋ค์ง ์ข์ง ์์์ต๋๋ค. (๋ฌด์จ ํ๋ ์์ํฌ ์ค์นํ๋ ๋ฐ ์๊ฐ ๋ฟ๋ง์ด ์๋๋ผ, ํ๋ ์์ํฌ์์ ๋์๊ฐ๋ ํ๋ก๊ทธ๋จ์ด ํฐ๋ฌด๋ ์์ด ๋๋ ธ์ง์.)
C#์ GUI ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ ฅํฉ๋๋ค. ์ ๊ฐ C#์ ์ ๊น ์ฌ์ฉํ์์ ๋๋ง ํด๋ Visual Basic๊ณผ ๋๊ฐ์ด Windows Form์ ์ฌ์ฉํด์ ์ฌ์ด ์ปดํฌ๋ํธ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์์๊ณ , (JavaFX์ ๋นํ๋ฉด ์์ฒญ๋ ํธ๋ฆฌํจ๊ณผ ์ฑ๋ฅ์ ์ ๊ณต) ํ์ฌ๋ WPF ํ๋ก๊ทธ๋๋ฐ์ ํตํด MVPP ํจํด์ผ๋ก ๋ ์ฝ๊ฒ GUI ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์์ต๋๋ค.
์ง๊ธ์ C# ๊ฐ๋ฐ ํ๊ฒฝ์ ์์ Boland ํ์ฌ(์ง๊ธ์ Codegear)์์ ๊ฐ๋ฐํ Delphi/C++ Builder์ ๋น์ทํ๋ฐ, Microsoft๊ฐ C# ๊ฐ๋ฐ์ ์ํด Anders Hejlsberg ์ ์์ ํ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ด์ ๋ก ๊ผฝํ๊ณ ์์ต๋๋ค. ์ค์ ๋ก ์ ๋ ์ต๊ทผ์ Embacadero RAD Studio ๊ฐ๋ฐ ํ๊ฒฝ์ ์ฌ์ฉํด๋ณด๋ฉด์ ์ปดํฌ๋ํธ ํ๋ก๊ทธ๋๋ฐ์ ์ต๊ฐ์๋ผ๊ณ ๋ถ๋ฆฌ์ธ ์ ๋๋ก ๊ฐ๋ ฅํ๊ณ , ์ฌ์ด ์ปดํฌ๋ํธ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ๊ฐ์ง๊ณ ์์์ต๋๋ค. "RAD Studio"๋ผ๋ ์ด๋ฆ์ด ์๊น์ง ์์ ์ ๋๋ก ๋ง์ด์ฃ ... (ํ์ง๋ง ์ค์ํ ๊ฑด ๋ผ์ด์ผ์ค ๋น์ฉ์ด ๋ฌด๋ ค 1000๋ง์์ด ๋๋๋ค๋ ๊ฒ;;;)
.NET Framework
.NET Framework(๋ท๋ท ํ๋ ์์ํฌ)๋ผ๋ ๋จ์ด๋ฅผ ์กฐ๊ธ ์ฌ์ฉ์ ํ๋๋ฐ, .NET Framework๋ Java๋ก ๋งํ์๋ฉด JRE์ ๋น์ทํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. .NET ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ ํ๋ก๊ทธ๋จ์ .NET Framework ์คํ ํ๊ฒฝ์ ์๊ตฌํฉ๋๋ค. ๊ทธ๋์ ์ฌ์ฉ์๋ค์ด ๊ฐ๋ ํ๋ก๊ทธ๋จ์ ์ค์นํ ๋๋ง๋ค .NET Framework ํน์ Visual C++ Runtime ๋ฑ์ ์ค์นํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ์.
๋ณ๋์ ์คํ ํ๊ฒฝ์ ์ฌ์ฉํ๊ณ ์์ด Java์ ๋๊ฐ์ด Garbage Collection์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋์ C/C++ ์ธ์ด์ฒ๋ผ ๊ฐ๋ฐ์๊ฐ ์ด๋ ์์ ์ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ฐ๋ฉํ ๊ฒ์ธ๊ฐ๋ฅผ ๋ฐ๋ก ์ ํด์ค ํ์๊ฐ ์์ด ๊ฐ๋ฐ์ด ์ฝ๋ค๋ ์ฅ์ ์ ์ง๋๊ณ ์์ง๋ง, Java์ ๋ง์ฐฌ๊ฐ์ง๋ก, C/C++์ ๋นํด ์ฑ๋ฅ์ด ์ข์ง๋ ์์ต๋๋ค.
Mono ์ ๋ฌธ๊ณผ ์ค์น
C# ์ธ์ด์ ๊ฐ์ฅ ํฐ ๋จ์ ์ Windows Platform์์๋ง ์ ๊ณตํ๋ค๋ ๊ฒ์ด ์ ์ผํ ๋จ์ ์ ๋๋ค. ํ์ง๋ง, NIX ๊ณ์ด ํ๋ซํผ์์ .NET์ ์ฌ์ฉํ ์ ์๋ Mono๊ฐ ๊ฐ๋ฐ์ด ๋์๊ณ , ์๋ ์ ๋ ์์ ํ๊ฐ ๋๋ฉด์ ์ต์ข ์ ์ผ๋ก NIX ๊ณ์ด์ ์๋ฆฌ์ก๊ฒ ๋์์ต๋๋ค.
- MonoDevelop IDE
- Xamarin Studio IDE
Mono๋ฅผ ํตํ C# ๊ฐ๋ฐ์ ํ๋ก๊ทธ๋จ์ ์์ ๋ ๊ฐ์ง IDE ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ํ์ฌ๋ OS X ์ฉ Visual Studio๊ฐ Beta ๋ฒ์ ์ผ๋ก Release ๋์ด์์ด์ Visual Studio๋ก๋ ๊ฐ๋ฐ์ ํ ์ ์์ง๋ง Linux ๊ณ์ด์์๋ ์์ง Visual Studio IDE๊ฐ ๊ฐ๋ฐ๋์ด ์์ง ์์ผ๋ฏ๋ก MonoDevelop IDE๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก Linux์์ Mono๋ฅผ ์ค์นํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
$ sudo apt install mono-complete monodevelop
Linux์์ Mono๋ฅผ ์ค์นํ๋ ๋ฒ์ ์๊ฐ๋ณด๋ค ์ฝ์ต๋๋ค. mono ๊ด๋ จ ์ค์น๋ mono-complete, IDE ๋๊ตฌ๋ monodevelop์ผ๋ก ์ค์นํ์ค ์ ์์ต๋๋ค.
MonoDevelop์ ์ฌ์ฉํ C# ๊ฐ๋ฐ
์ค์น๊ฐ ๋๋ฌ์ผ๋ฉด, ๋ณธ๊ฒฉ์ ์ผ๋ก MovoDevelop์ ์ฌ์ฉํด ๊ฐ๋ฐ์ ์์ํด๋ณด๊ฒ ์ต๋๋ค.
MonoDevelop์ ์คํ์ํค๋ฉด New ๋ฒํผ์ด ๋ณด์ด์ค ๊ฒ์ ๋๋ค. New ๋ฒํผ์ ํด๋ฆญํด ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ CLI ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ Console Project์ GUI ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ Gtk# 2.0 Project๊ฐ ์์ต๋๋ค. ๋ณธ๋ Windows์์๋ Windows Form Project์ WPF Project๋ก ๊ฐ๋ฐํ๊ธฐ ๋๋ฌธ์ NIX ๊ณ์ด๊ณผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฐ์ง ์์ผ๋ฏ๋ก ํธํ์ด ๋์ง ์๋ ์ . ํ์ธํ์๊ธฐ ๋ฐ๋๋๋ค.
์ฌ์ฉํ ์ธ์ด๋ C#, VB.NET, IL ์ค ํ ๊ฐ๋ฅผ ๊ณ ๋ฅด์ค ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ C# ์ธ์ด๋ก ๊ฐ๋ฐํ ๊ฒ์ด๋ฏ๋ก, C#์ ์ ํํ ํ, Next๋ฅผ ํด๋ฆญํฉ๋๋ค.
Project ์ด๋ฆ๊ณผ ์์น๋ฅผ ์ ํด์ค ํ Create ๋ฒํผ์ ํด๋ฆญํ๋ฉด, ํ๋ก์ ํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
์ ์ฒ์์๋ ์ด๊น์์ด Hello World๋ฅผ ๋ง๋ค์ด์ฃผ๋ค์ ~_~
์ ๋ ๊ฐ๋จํ ์คํ๊ณผ ํ๋ฅผ ์ง๋ดค์ต๋๋ค. ์ ์ฌ๋ฌ๋ถ๋ Let's Coding !
Windows์์ ์ฌ์ฉํ๋ ๊ฒ ๊ทธ๋๋ก Linux์์ C#์ผ๋ก ์ฝ๋ฉํ ์ ์์ต๋๋ค. (์ ์๋๋ ์์ง๊น์ง๋ ๋น์ทํ๋ฐ....)
๋ง์น๋ฉฐ....
์ฌ๊ธฐ๊น์ง Mono๋ฅผ ์ฌ์ฉํ ๊ฐ๋จํ C# ํ๋ก๊ทธ๋๋ฐ์ด์์ต๋๋ค.
์ฌ์ค Mono๊ฐ ์์๋ ๊ฒ์ ์์ ๋ถํฐ ์๊ณ ์์์ง๋ง, C#์๋ ์์ง ์น์ํ์ง ์์๊ณ , ์ด์ฉ๋ค๋ณด๋, C# ์ธ์ด๋ฅผ ๋ค์ ์ ํ๊ฒ ๋์ด ๋ธ๋ก๊ทธ์ ๊ธ์ ์ฐ๊ฒ ๋์์ต๋๋ค. ์์ง๊น์ง ์๋ฒฝํ C# ์ธ์ด๋ฅผ ์ง์ํ์ง ์๋ Mono์ด์ง๋ง, ์กฐ๊ธ๋ง ๋ ํ์ฑํ ๋๋ค๋ฉด ๋ถ์กฑํ Linux์ GUI ํ๋ก๊ทธ๋จ์ ๋งค๊ฟ์ค ์ ์ผํ ์๋จ์ด ๋ ์๋ ์์๊น ์ง์ํด๋ด ๋๋ค.