http://blog.naver.com/PostView.nhn?blogId=seo330&logNo=150007551250

'computing > programming' 카테고리의 다른 글

perl로 게임만들기  (0) 2013.02.02
C#과 JAVA  (1) 2013.01.28
웹개발 도서모음  (0) 2013.01.25
Perl, Python, Ruby, PHP, C, C++, Lua, tcl, javascript, Java 성능비교  (0) 2013.01.25
Perl 공부하기  (1) 2013.01.25
The most popular Perl web sites  (0) 2013.01.25
Posted by Corealight

댓글을 달아 주세요

C#과 JAVA

computing/programming 2013. 1. 28. 23:42 |

C# vs JAVA
- 강력함과 다재다능함의 대결 -
 

1.     서문

내가 작년 초에 크게 고민한 부분이 있다과연 JAVA를 배우는 것이 효과적일까아니면 C#을 배우는 것이 효과적일까에 대한 것이다두 언어 모두 IT업계의 뜨거운 감자로 취급되는 것들이었고지금도 그렇다. JAVA가 지금의 선두자라고 한다면 C#은 미래의 선두자가 될 수 있는 가능성을 가지고 있었다.

 그렇지만 두 언어는 각각의 장점과 단점을 갖고 있었다프로그래밍 언어론에서 말하 듯완벽한 언어는 없으며 각 그 언어의 장점이 있다면 그에 상응하는 단점을 가질 수 밖에 없는 것이다강력한 성능의 언어는 복잡한 문법을 가지거나 Perfomance가 떨어질 수 밖에 없듯이그런 장단점이 있었다.

하지만 결론적으로 나는 C# JAVA 두 언어를 모두 공부하게 되었고두 언어를 C++만큼 깊게 파보진 않았지만 두 언어의 장단점을 파악할 수 있을 정도는 되었다고 생각한다그래서 두 언어를 비교해보자고 한다.

 

2.     C#의 특징

A.     C#에 대한 간단한 소개

C# Microsoft(이하 MS) .NET Framework와 함께 사람들의 곁으로 다가왔다많은 개발자들은 C# JAVA를 잡기 위해 MS에서 내놓은 언어라고 평한다실상 그런 것이 C#을 이용해보면 JAVA와 흡사하다는 느낌을 떨칠 수가 없다아래에서 다시 언급하겠지만 C# C++ VB의 특징을 조합하고, JAVA의 강점까지 포함한 언어라고 볼 수 있다어떤 사람들은 ‘MS JAVA 킬러’ 라고 부를 정도로 JAVA를 이기기 위한 MS의 각별한 노력이 돋보이는 언어라고 할 수 있다.

 

B.      기본적으로 제공하는 강력한 기능

C#의 기능은 기본적으로 강력하다. JAVA Utility Class 들이 강력한 기능을 갖고있듯 말이다물론 요즘은, C++ STL을 넘어서 Boost 등의 강력한 라이브러리를 갖고 이것을 표준안으로 채택하는 방향으로 가고 있다그러나 기본적으로 갖고 있고, MS에서 직접 개발한 것과는 다르다고 생각한다기본적으로 제공하는 강력한 성능은 C#의 큰 장점이라고 할 수 있다.

 

C.      편리한 개발환경을 제공하는 IDE

언어의 강력함이나 사용의 편의성만큼그 언어의 성패를 결정짓는 것이 IDE라는 것은 불보듯 뻔한 일이다. C# IDE는 누구나 알고 있고누구나 한번쯤은 사용한 적이 있으며게다가 Direct X  API관련 개발을 하며 누구나 썼던 Visual Studio(이하 VS)이다우선 이것으로 반은 먹고 들어갔다고 볼 수 있는데사람들에게 익숙한 VS를 개발환경으로 사용하면서 익숙하고 편리한 개발환경을 제공한다게다가 VS는 날이 갈수록 강력해지고 있으며그 기능을 십분이용할 수 있는 것이 바로 C#이다.

 

D.     컴포넌트 기반 언어

C# C/C++ 기반 언어 중에 최초의 컴포넌트 기반 언어이다. C# C/C++ 에서파생되며 간단하고 현대적이며 객체지향적이고 형 안정성을 갖는 언어이다또한C# Visual Studio의 높은 생산성과 C++의 강력한 힘이 합쳐진 언어이다.

 

E.      CLR(Common Language Runtime) / CLS(Common Language Specification)의 강력함

  CLR은 높은 수행 능력을 갖고 있다실행 엔진가비지 컬렉터실시간 컴파일러보안 시스템그리고 .NET Framework가 포함되어 있다여러 언어를 지원할 수 있도록 설계되어 었다.

CLS는 언어 기능에 대한 공통의 기준을 규정한다그 기준은 까다롭지만여러 언어를 묶어주는 역할을 한다이 그룹에 속한 언어들은 .NET Framework의 기능을 이용할 수 있으며 상호 호환기능을 갖는다 , C# Class  VB에서 상속받거나오버라이딩 할 수 있다는 말이다.

사실 CLR을 기반으로 만들어진 언어는 상당히 많으나우리가 아는 VB, VC++ 등등 또한 CLR기반의 언어라 할 수 있다.

 

3.     JAVA의 특징

A.     JAVA에 대한 간략한 소개

JAVA의 특징들을 열거하자면 상당히 많다하지만 특징들을 몇가지 살펴보자면, JAVA는 간단하고객체지향적이고분산처리되고인터프리트되며강건하고컴퓨터 하드웨어에 영향을 받지 않고보안성이 있으며포팅하기 쉽고성능이 우수하며멀티쓰레드를 사용하고동적인 언어라고 표현이 된다사실 저기에 써있는 것 중에 C#이 더 우월한 강점을 갖고 있는 부분도 많다하지만 일반적인 관점에서 JAVA를 볼 때 JAVA는 이와 같은 강점을 갖고 있다.

우선 JAVA Sun Microsystem(이하 SUN)에서 가전제품 시장에 관심을 갖고가전 제품을 제어할 S/W를 개발하기 위해 만들어진 언어이다많은 가전제품들이 CPU를 사용하고 있으며, CPU가 자주 바뀌거나 다양한 종류의 CPU를 사용하는 전자 제품들을 위해 CPU에 무관하게 돌아갈 S/W가 필요했다초기엔 C++을 확장하는 것으로 목적을 이루려 했지만그것으로는 역부족이라 느껴 Oak란 언어를 만들었다그리고 이 Oak에 다양한 기능을 추가해서 나온 것이 JAVA이다.

 

B.      플랫폼 독립적이다.

JAVA JAVA VM(Virtual Machine)을 통해 플랫폼 독립적이다이것은 다양한 Edition을 갖고 있는 JAVA의 특징이 이루어 낸 강점인데, JAVA에는 다양한 에디션이 존재한다일반 S/W 개발을 위한 J2SE(Standard Edition), 임베디드 기기를 위한 JSME(Micro Edition), 그리고 워크스테이션 등을 위한 J2EE(Enterprise Edition)이 있다하지만 이 모든 것들은 VM을 통해 새로 컴파일 되며그래서 기기의 성능이나 상태에 연연하지 않고 개발할 수 있다는 것이 큰 강점이다.

 

C.      JAVA가 업계에서 독보적인 선두에 위치하는 이유

                     i.         많이 쓰인다.

우선 JAVA는 많이 쓰인다그 이유는 위에서 쓰인 플랫폼 독립적이다와 같은 이유지만, C#이나 C++에 비해 클래스의 재활용성에 대해 우수함을 갖고 있기 때문이다또한 다양한 Edition을 통해여러 플랫폼을 지원하며 각 플랫폼에 대한 재활용 성이 높으니 당연하다고 볼 수 있다. Web이나일반 Application 등에도 얼마든지 사용할 수 있음이 JAVA가 업계 1위를 차지하는 것에 영향을 갖게 한다.

 

                    ii.         다양한 IDE를 이용할 수 있다.

JAVA는 여러가지 IDE를 갖고 있으나대표적으로 2개의 IDE를 갖고 있다. SUN에서 제공하는 NET Beans , 많은 사람들이 이용하는 Open Source IDE Eclipse이다내가 VS.NET Net beans 그리고 Eclipse를 모두 사용해봤지만, Eclipse만큼 강력한 IDE는 없었던 것 같다하지만 익숙한 VS를 따라가진 못했지만, Eclipse는 익숙해진다면 엄청나게 강력한 기능을 발휘할 수 있을 것 같다.

 

                   iii.         다양하고 강력한 Utility Class

JAVA는 언어 자체에 강력하고 다양한 Utility Class를 갖고 있다게다가 단순한 Syntax JAVA를 더욱 강력한 언어로 만들어준다 Utility Class Language Processing 부터 UI, 통신 관련까지 모든 Class를 제공하고 있다.

 

 

4.     JAVA vs C#

A.     두 언어의 공통점에 대하여

사실 두 언어는 객체지향 언어라는 점부터 공통점을 갖고 있다고 볼 수 있다또한 C# JAVA를 이기기 위해 만들어진 언어고둘 다 뿌리가 C++이니 비슷한 언어라고 할 수 있지 않을까 싶다강력한 기본 Class, 그리고 좀 더 객체지향적인 언어 지향이런 것들 것 두 언어를 비슷하게 하면서도 어느 언어가 더 강력한 언어인지 고심하게 만든다.

B.      IDE vs IDE

                     i.         JAVA  IDE

1.     Net beans
Net beans는 많은 사용자를 확보하고 있는 성공적인 오픈 소스 프로젝트이다. 2000 6월에 활성화 프로젝트가 시작되었다대규모 데스크탑 Application을 개발할 때 뼈대로 사용할 수 있는 기반 소프트웨어로써의 모듈화가 잘 되어있고 확장성이 매우 높다 

 

2.      Eclipse

Eclipse는 자바 기반의 확장할 수 있는 개발 Platform이다그리고 Eclipse에는 JDT(Java Development Tools)를 포함한 표준 Plugin set이 포함된다. IBM 4000$를 들여 시작한 프로젝트이다국내외 많은 사용자들에게 많은 호응을 받고 있으며 내가 여태까지 사용해본 IDE중에 가장 강력한 기능을 갖고 있는 것 같다.

 

                    ii.         C# IDE

1.      Visual Studio .NET

C# IDE하면 이것이 가장 먼저 떠오르고이것밖에 없지 않나 싶다. Windows용 프로그램을 개발하기에는 VS만한 것이 없으며이것만큼 강력한 것도 없다게다가 MS에서 C# 개발자들을 위해 Inside C#, 2E  VS.NET 2008 Express Edition for C#을 무료 배포하고 있으니 더할 나위 없지 않나 싶다.

 

C.      VM machine vs .NET Framework

VM  .NET Framework를 비교하려면 비교할 수 있지만 약간은 다른 속성을 갖고 있지 않나 싶다. VM은 이종의 Architecture,   Platform에 무관하게 프로그램을 구동시킬 수 있는 것이며, .NET Framework는 강력한 기능들로 구성된 Library라고 볼 수 있지 않나 싶다그러나 이것은 개발의 편리성을 지원하기 위한 도구라는 점에서 비슷하게 볼 수 있지 않나 싶다. JAVA VM은 웹 상의 환경 등에서 손쉽게 구동될 수 있는 환경을 지원하지만, .NET Framework Windows 기반의 프로그램들이 좀 더 가볍고 쉽고 강하게 개발하기 위해 이용된다가장 대표적인 예를 들자면, .NET Framework  Direct X 를 이용할 수 있기 때문에 3D 가속을 확실히 지원해 게임 개발에 좀 더 강점을 갖고 있는 것은 사실이다.

그런데, JAVA의 또 다른 강점을 이야기해보자면다양한 아키텍처(Architecture)에서 동일한 작동을 구현해낸다. C언어라면 16bit 환경과 32bit 환경에서 많은 차이점을 보이지만 JAVA  JAVA VM을 이용하기 때문에 , 이종의 아키텍처에서 동일한 구현을 프로그래머가 크게 고민하지 않아도 할 수 있다그렇지만 이것은 다른 부분에서의 Perfomance에 크게 작용을 하게 된다그것은 다음을 보자.

 

D.     성능 vs 성능

많은 JAVA 개발자들은 JAVA의 성능은 C#에 뒤떨어지지 않으며, C# 뿐만이 아니라 다른 언어에 크게 뒤떨어지지 않는다고 얘기한다그리고 사실 언어로써의 성능은 H/W의 엄청난 발전으로 묻힐 정도가 되어가고 있다많은 JAVA 개발자들은 JAVA도 Compiler를 이용하기 때문에 성능에 크게 차이가 없는 것이라고 얘기한다.

 그러나 JAVA가 아직까지 real-time rendering 등에서 아쉬운 성능을 가지고 있는 것은 분명하다나는 게임 분야의 개발을 해왔기 때문에이것은 최소한 나에게는 매우 중요한 문제이다그래픽 프로그래밍을 할 때 floating-point 연산을 많이 하는데 floating-point 연산이 자바에서는 현저하게 떨어짐은 사실이다. 그래픽 프로그래밍에서 rendering 하는데 쓰이는 연산은 거의 다 floating point 연산이기 때문에그런 부분에 대한 성능은 JAVA가 많이 떨어진다.
 그러나, 게임 프로그래밍등그래픽 프로그래밍에 치우치지 않고일반적인 사용을 위한 rendering엔 사용하기엔 문제가 없을 것 같다그렇지만 전체 시장으로 봤을 땐 임베디드쪽이나 엔터프라이즈 같은 쪽에서 보편적으로 JAVA가 사용할 수 있는 범위가 많다대체적인 성능이 떨어져도 그만큼 컴퓨팅 파워가 좋아졌기 때문에 가능한 일이며, JAVA도 계속 발전하고 있기 때문이다. 초기의 JAVA와 지금의 JAVA를 생각한다면 그 속도의 차이는 엄청날 것이다. JAVA가 Intepreter의 한계를 넘고자, Complier를 도입했던 것 처럼 JAVA도 계속 발전해나가고 속도를 개선하겠지만, 결국 그래픽 프로그래밍계열에선 JAVA가 C#을 이길일은 엄청난 시간이 지나지 않는 이상은 없을 듯 하다.

 

E.      활용성 vs 활용성

C#뿐만이 아니라 .NET Framework는 다양한 활용성을 가지고 있다우선 WPF, WF, Cardspace, WCF, silverlight, 그리고 마지막으로 XNA까지! C#으로 할 수 있는 일은 무궁무진하다그것은 다 .NET Framework기반으로 이루어진 일이지만, C#도 엄연히 .NET Framework의 기반이고 XNA같은 경우는 C#을 통해서만 개발할 수 있기 때문이다게다가 일반 Application 개발에서도 C#은 강력한 기능을 갖고 있으며쉽게 이용할 수 있다. XML과의 연동등의 편리함이 C#을 더욱 강력한 언어로 만들어준다.

JAVA VM하나로도 엄청난 성능과 활용성을 가지고 있다플랫폼에 구애 받지 않고 개발할 수 있다는 점 자체로도 엄청난 코드의 재활용 성을 갖기 때문이다. JAVA는 위에서 언급했 듯 여러가지 Edition을 갖고 있기에 JAVA를 공부하면 다양한 플랫폼을 통한 개발을 할 수 있기 때문에 JAVA의 활용성은 상당히 크다고 할 수 있다.

C#의 활용성이 MS Windows OS 기반으로 가지는 여러가지 강력함을 장점으로 둔다면, JAVA는 다양한 플랫폼을 쉽고 강력하게 활용할 수 있는 활용성을 장점으로 둔다고 할 수 있을 것이다.

 

F.      발전성 vs 발전성

두 언어의 발전성은 무궁무진하다사실두 언어의 우월성을 가리는 '어느 언어가 더 훌륭할까?'라는 것은 합당하지 못한 주제일지도 모른다두언어는 각자의 다른 방향을 갖고 발전할 것이다. C#은 결국 원하던 목표인 JAVA를 이길 수 없겠지만, C#나름의 방향을 갖고 강력하게 발전해 나갈 것이다그리고 JAVA는 다양한 활용성을 가지고 IT의 각종 업계에서 이용할 수 있는 지금의 상황을 더욱 굳히고 강력하게 자리매김할 것이다.

 

5.     마치며

사실 이 두 언어는 MS SUN의 대결이라고 해도 모자라지 않다기술적인 측면보다 다른 부분이 언어의 점유율과 성공에 영향을 미치지 않나 싶다. MS는 사실 돌아보면 선발주자기업이 아니라 투자를 하고 M&A를 해서 선점을 노려왔다앞으로 어떻게 될지는 생각해봐야겠지만 둘중 하나가 없어지거나 할 것 같지는 않고 MS Platform에서는 C#이 나름대로 편의성을 지원해주니까 C# , .NET 계열이 꾸준히 사용될 것이다.

여타플랫폼에서는 JAVA계열이 사용될 것이다.  플랫폼 독립적이니까 일관성 있게 사용할 수 있다.

 두 가지 언어를 모두 공부했지만이런 식으로 평론을 하기엔 부족하지 않았나 싶다하지만 이것을 적으면서 두 언어의 장,단점을 좀 더 확실하게 파악할 수 있었던 것 같다두 가지 언어 모두 강력한 만큼 익혀두는 게 좋지 않나 싶다.

 프로그래머에게 언어는 도구가 아닌가 싶다다양한 도구를 능숙하게 다룰 수 있는 프로그래머는 강력한 실력을 보장할 수 있지 않을까 싶다물론 기본기가 가장 중요하지만기본기가 받쳐준다면 자만하지 않고 새로운 기술과 언어를 습득하여 자신의 가치를 갈고 닦는 것이 중요하다고 생각한다그런면에서 이 두가지 언어는 모두 배워도 손색이 없을 정도로 강력한 도구이다누군가가 나에게 두 언어 중 어떤 것을 선택하여 공부해야하냐 묻는다면나는 그 사람이 하고자 하는 일을 상세히 듣고 추천을 해주게 될 지도 모르겠다두 언어 모두 강력하고 훌륭한 언어이기 때문이다. 하지만 혜안은 두 언어 모두 공부하는 것이 아닐까?

출처 : Tong - hanna84님의 c#통

'computing > programming' 카테고리의 다른 글

perl로 게임만들기  (0) 2013.02.02
C#과 JAVA  (1) 2013.01.28
웹개발 도서모음  (0) 2013.01.25
Perl, Python, Ruby, PHP, C, C++, Lua, tcl, javascript, Java 성능비교  (0) 2013.01.25
Perl 공부하기  (1) 2013.01.25
The most popular Perl web sites  (0) 2013.01.25
Posted by Corealight
TAG C#, Java

댓글을 달아 주세요

  1. 초보개발자 2017.07.30 21:10 Address Modify/Delete Reply

    저도 C#과 자바 둘중의 어느 것을 배우는 것이 좋은지 몰라서, 시장성의 우위를 점하는 자바를 먼저 공부를 하였습니다. 그러는 중에 C# 얘기를 많이 듣게 되어 C#의 특징이 궁금하던 찰나에 이런 좋은 글을 볼 수 있게 되어서 정말 다행입니다.

YES24 - [국내도서]모던 웹 디자인을 위한 HTML5+CSS3 입문


YES24 - [국내도서]윤성우의 열혈 C 프로그래밍


YES24 - [국내도서]드림위버 CS6 무작정 따라하기


YES24 - [국내도서]Learning PHP, MySQL & JavaScript 한국어판

'computing > programming' 카테고리의 다른 글

perl로 게임만들기  (0) 2013.02.02
C#과 JAVA  (1) 2013.01.28
웹개발 도서모음  (0) 2013.01.25
Perl, Python, Ruby, PHP, C, C++, Lua, tcl, javascript, Java 성능비교  (0) 2013.01.25
Perl 공부하기  (1) 2013.01.25
The most popular Perl web sites  (0) 2013.01.25
Posted by Corealight

댓글을 달아 주세요

각종언어에 대한 벤치마크 비교

포커스가 문자열을 얼마나 빠르고 메모리 효율적으로 처리하느냐에 맞춰져 있는데..

이렇게 비교를 한 이유가 대부분의 현대적 어플리케이션의 주작업은 문자열을 다루는 것이며
수치계산은 하드웨어 의존적인 면이 있고 컴파일된 native한 코드가 아닌경우 어떤 언어라도
많은 계산을 하기에는 충분히 성능이 나지 않기 때문에 빠른 계산이 필요하다면 컴파일된
native한 코드를 쓰던지 써드파티 수치계산 라이브러리를 각 언어에 붙여 쓰게 되는데
그렇게 하면 언어간 비교가 아니라 수치계산라이브러리의 성능비교가 되기 때문에
의미가 없다.... 뭐 이렇다고 함

성능비교뿐만 아니라 끝부분에 각 언어에 대한 비평도 읽어볼만 함.. 

http://onlyjob.blogspot.com/2011/03/perl5-python-ruby-php-c-c-lua-tcl.html

속도에서는 스크립트 언어인 Perl이 C/C++보다 더 빠르다는게 신기..
Java는 의외로 실망스런수준이고(아마도 Buffered String을 쓰면 그나마 나아지리라 생각하지만....)

* 제일 빠른 Perl속도를 1로 했을때 언어별 상대적 속도 비교표(숫자가 작을수록 빠름)

Line size KibPerl5PHPRubyPythonC++ (g++)C (gcc)Javascript (V8)Javascript (sm)Python3tclLuaJava (openJDK)Java (Sun)Java (gcj)
Average:13.845.215.593.891.233.2319.6613.9221.3534.3631.1631.12247.32

'computing > programming' 카테고리의 다른 글

C#과 JAVA  (1) 2013.01.28
웹개발 도서모음  (0) 2013.01.25
Perl, Python, Ruby, PHP, C, C++, Lua, tcl, javascript, Java 성능비교  (0) 2013.01.25
Perl 공부하기  (1) 2013.01.25
The most popular Perl web sites  (0) 2013.01.25
루비온레일즈  (0) 2013.01.25
Posted by Corealight

댓글을 달아 주세요

  

*nix를 오래도록 사용해오면서 너무나 쉽게 만날 수 밖에 없는 언어 perl. 너무나 당연하게도 perl 또한 오래도록 사용해 왔으나 필요할 때 마다 필요한 부분을 습득하고 이해하고 사용해 왔다. 그랬던 터라 아직 알지 못하는 부분도 많이 존재할 것이고, 잘못 알고 있는 부분도 있으리라 생각된다. 그래서 블로그에 글으로 남기면서 지적을 받아 잘못 알고 있는 부분도 바로 잡고, 이번 기회를 통해 제대로 배워보려고 한다.
 
다만, 꾸준히 진행하기는 어려우나 지속적으로 기초정도의 이야기가 끝날 때까지는 반드시 완수한다.!!
 
참고로 아래 내용은 Perl 5에 기초하고 있으며 특정 기능이 정확히 어느 버전부터 동작하는지에 대한 여부를 정확히 알지 못하니 이 목록에 있는 글들을 참고하고 계시는 분이 계시다면 죄송합니다. 이 글 들을 작성을 시작했을 때 제가 사용했던 perl version은 아마도 5.10.1이며, 현재 5.17.1입니다.
 

목록
 
01. 설치는 해야 사용할 것 아니겠어?
+ Perlbrew link
 

02. 프로그래밍 언어 배울 때 누구나 해 보는 이것!!
+ Hello World link
 

03. 스칼라? 백터와 달리 방향성 없는 값? 대체 뭘 이야기하는 거지?
+ Scalar Data link
 

04. 변수. 값이 변한다는 건가? 아니면 값을 저장한다는 거?
+ Scalar Variable #1 link
+ Scalar Variable #2 - Automatic Conversion link
 

05. 문법을 잘 몰라서 그러는데 좀 엄격하게 제한 받을 순 없을 까?
+ use strict link
 

06. 변수에도 삶과 죽음이 있다고?
+ Variable Scope link
 

07. 값을 하나만 저장하는 게 아니라 연속적으로 잔뜩 저장할 순 없을 까?
+ Array Variable #1 link
+ Array Variable #2 link
+ Array Variable #3 - stack, queue with array link
 

08. 잠시 쉬어갑시다. 시간은 어떻게 표현할 까?
+ Time expression link
 

09. 값 저장할 때 말이야. 내가 원하는 키워드로 값을 저장할 순 없나?
+ Hash Variable link
 

10. 뭐라고? 값이 정해지지 않았는데 사용할 수 있다고?
+ undef, use warnings link
 

11. 다른 값을 가르키는데 사용한다고? 음 쓸 때가 있긴 할 까?
+ Reference #1 - Intro + for scalar variable and data link
+ Reference #2 - for array variable and data link
+ Reference #3 - two-dimensional array with reference link
 

12. 프로그램이 위에서 아래로만 수행되네.. 다르게는 안되는 건가?
+ Control Structure #1 - if() link
+ Control Structure #2 - while(), for(), foreach() link
+ Special variable - $_ link
+ Control Structure #3 - unless() link
+ Control Structure #4 - until() link
+ Control Structure #5 - if(), unless() as postfix notation link
+ Control Structure #6 - operator: last, next, redo in loop link
+ Control Structure #7 - Labeled Block
 

13. 특정 일을 하는 녀석을 하나의 단위로 만들어 두고 계속 불러 쓸 순 없을 까?
+ Subroutine #1 - declare, invoke, return value link
+ Subroutine #2 - Arguments, @_ link
+ Subroutine #3 - state variable link
 

14. 입력이랑 출력이랑 친구해야지…
+ Stardard Stream link
+ I/O #1 - Input from STDIN link
+ I/O #2 - Output to STDOUT link
+ I/O #3 - Open & Close a File link
+ I/O #4 - Read & Write a File link
+ I/O #5 - Read command-line arguments, <> link
 

15. Perl은 문자열처리가 뛰어나다며, 문자열을 어떻게 요리하면 되는 건데?
+ Regexp #1 - Introduction link
+ Regexp #2 - Precedence #1 link
+ Regexp #3 - Precedence #2 link
+ Regexp #4 - Pattern Match #1 - Find link
+ Regexp #5 - Pattern Match #2 - Extraction link
+ String #1 - Substitution link
+ String #2 - Split & Join link
 

16. pack/unpack? 무슨 짐을 싸고 푼다는 거야? 다른 말인 가?
+ Pack/Unpack link
 

17. Perl은 누가 잘 만들어둔 걸 가져다 쓰는 쉬운 방법 없어?
+ Core Module #1 - Intro. link
+ Core Module #2 - Object-Oriented link
 

계속 Update 될 것입니다.
 


출처 : http://eriny.net/p/easy.perl5

Posted by Corealight

댓글을 달아 주세요

  1. yukinpl 2013.07.30 00:47 Address Modify/Delete Reply

    안녕하세요 eriny.net에서 ntree를 운영하고 있는 yukinpl입니다.
    다름이 아니라 제 블로그에 있는 글을 그대로 복사하셔서 글로 작성해두셔서 이 글을 내려달라고 말씀드리려고 왔습니다.
    목차에 해당하는 글이니 글을 복사하시는 것보다 그냥 링크주소를 보관하시면 좋겠습니다.

The most popular Perl web sites

Have you ever wondered which Perl-related sites have the biggest audience?

I checked it now.

Made a couple of groups. The number on the right is the rangking of the specific web site among all the web sites in the world.

Community web sites

cpan.org9,565
perl.org15,791
perlmonks.org19,809
metacpan.org208,445
pm.org261,963
perl-community.de360,552

Perl based products

twiki.org125,048
otrs.org156,991
dadamailproject.com171,248
template-toolkit.org353,844
webgui.org378,081
foswiki.org396,906

Web frameworks

perldancer.org446,593
catalystframework.org546,849
mojolicious.org2,733,381

Perl 6 related sites

perlgeek.de878,605
perl6.org1,140,686
perl6maven.com1,238,252
rakudo.org1,721,581

Personal

perl.com187,126
modernperlbooks.com562,587
szabgab.com610,988
shlomifish.org763,238
perlgeek.de878,605
perl-begin.org1,209,793

The source

It is not an absolute measurement, but Alexa provides some interesting data on web sites. Specifically it provides some estimates on the traffic each site receives.

For most of the domains, Alexa has no listing for the separate sub-domains. So there is no separate ranking of perldoc.perl.org and blogs.perl.org, but within theAlexa listing you can usually see how the visitors are divided between the subdomains.

The sites of blogspot.com and wordpress.com are exceptions. For these sites Alexa understands that each subdomain is a stand-alone site and can provide the traffic data separately.

The future

This is not the first time I have collected these numbers and not the last. I am going to check these numbers every month and update the listing.

Published on 2012-09-08 by Gabor Szabo

Posted by Corealight

댓글을 달아 주세요

루비온레일즈


는 대부분의 시간을 같이 보낸 언어는 PHP, JAVA 입니다. 가장 익숙한건 아무래도 가장 오래하고 개발자층도 많은 JAVA 겠습니다.
이것은 나의 개인적인 선택이 아닌 돈을 받고 일을 하는 직업 프로그래머의 특성상 국내에서 가장 많이 쓰이는 일감이 많은 언어 순서대로 많이 할수 밖에 없었습니다.
PHP 는 언어의 초기 목표부터가 최대한 간단하며 누구나 쉽게 쓸수 있는 웹개발에 특화된 언어로써 지니는 특성으로 많은 장점과 동시에 많은 한계를 갖고 있었습니다. 지금은 물론 상당히 발전하고 OOP 적인 부분과 신기술이 도입되어 많이 다릅니다.
JSP 는 그런 PHP의 한계를 많이 매꿔주며 JAVA라는 강력한 프레임웍을 토대로 최신기술 트렌드를 주도해나가며 기업시장과 정부주도로 확장해나가게 되어 어쩔수 없이 PHP만 하다가 일거리가 바껴서 JSP 를 배워야 되기에 JAVA 또한 하게 되었습니다.
근데, 항상 일에 언어를 맞추고 나를 맞추게 되다보니 정작 내가 원하는 일과 언어를 사용하지 못하고 있는 내 자신을 볼수 있었습니다. 회사에서 작성하는 그런 팀단위로 이뤄진 웹개발언어의 코드라는건 시간이 갈수록 남의 코드와 같이 모르는 부분은 주석처리하고 다시 만들어 써넣기 반복되며 같은 이름의 클래스와 변수가 다르게 상속되거나 다른 의미로 사용되며 엄청나게 유지보수가 힘든 정말 절대 못푸는 실타래와 같이 암호화된 코드가 됩니다.
그러던중에 알게 된 새로운 언어들과 개발 프레임웍들이 Ruby / Ruby on Rails 와 Python / Django 그리고 Perl / Catalyst 였습니다.
처음에 Ruby on Rails 를 만들기 시작한 david heinemeier hansson 도 비슷한 대중성을 이유로 PHP로 만들어보려고 했다고 합니다. 하지만, 웹프레임웍을 만들려고 할려 한 2000년대초 당시엔 좀 언어로써 부족한 면이 많았습니다.
위에 얘기한거처럼, 사실 저는 Ruby on Rails 로 대규모 서비스 개발을 회사와 프로젝트에서 해본적이 없습니다. 해봐야 PHP나 JSP 서비스의 관리툴 정도로 저혼자 몰래(?) 만들어서 개발 서포트용도로 쓴 경우가 대부분이었습니다. 그리고 개인적으로 작은 필요에 의해서 만든 크롤러라던가, 재미로 간단히 만들어본 웹서비스 몇몇개 수준입니다.
근데 포스팅이 Ruby on Rails 로 대부분 채우게 되고 있습니다. 그건 제가 그만큼 Ruby on Rails 에 매력을 느끼고 최근 관심이 많다는 것이겠습니다. 그러면 왜 그럴까요? 그 이유를 설명하려고 포스팅을 하려 합니다.
Python 과 Perl 은 전에 가끔 간단한 시스템 관리용 복사, 백업같은 스크립트를 만드느라 써본 경험은 있었습니다. 하지만, 웹개발엔 전혀 써본적이 없어서 웹프레임웍이 있다는 사실조차 모르고 있었습니다. 그래서 하나씩 한번 어느것이 나에게 맞고 장단점이 있는지 몇년전부터 테스트하고 써보기 시작했습니다.
Python 은 아주 간결하고 규칙대로 해나가는 언어로 좋았습니다. 하지만, 그 탭을 맞추고 괄호로 이어지는 코드들은 좀 일단 쳐놓고 결과를 빨리 보고싶어하는 성격이 급한 나의 특성상 안맞았습니다.
Perl 은 보다 느슨한 규칙으로 빠른 코드를 쓰고 실행할수 있게 해주었지만, 그게 역시 단점으로 코드가 웹개발로 가면 여러가지 조건처리과 문자열처리로 엄청나게 난해해졌습니다.  물론 이건 제가 해당 언어에 미숙한 탓도 있습니다.
하지만, Ruby 는 이 둘을 절묘하게 섞어서 문법에서 자유와 깔끔한 코드를 만들어주었습니다. 정말 딱 필요한 글자만으로 코드를 내가 할만만 간단히 해서 적을수 있다는 느낌이었습니다. 그 언어적 특성에 기반하여 만들어낸 Rails 는 Ruby 의 특성을 최대한 살리면서 반복적인 작업을 정말 모두 자동화시키며 프로그래머는 뭘 만들어야되는지에만 집중하게 만들어주었습니다.
한때 몇년전에 Ruby on Rails 에 대한 요구가 우리나라에서도 번역된 서적이 출간되며 붐이 일뻔하다가 시장에서 수요에 대한 요구가 너무 없어서 다시 침체되었습니다. 하지만, 최근 Twitter 를 비롯하여 Groupon 같은 해외 글로벌 기업들의 개발 프레임웍으로 인정받으면서 다시 주목받을수 있지 않을까 생각합니다.
저는 국내 기업들과 개발자들이 어느 한 기술에 대해서 너무 얶매여 있지 말고, 다른 여러 시도를 해보는 것이 좋다고 생각합니다. 왜냐면, 저 또한 그런 편견을 깨지 않았다면 PHP 와 JSP만 해도 충분한 국내 개발 수요로 먹고 살며 다른 쪽은 보지도 않고 그냥 현실에 안주하며 새로운 세계를 보지 못했을거기에 말씀드립니다.
Rails 는 정말 어느정도 익숙해지면 경악할만한 개발속도와 차후 유지보수에 드는 노력 또한 엄청나게 절약해줍니다. 이게 정말 놀라운 것은 소프트웨어 개발이란 당연하게도 금방. 빨리. 만들면 코드가 정리안되고 엉망이라 계속적인 업데이트와 유지보수가 힘들어야되지만, Rails 는 그 코드 정리와 설계 과정을 대부분 자동화시켜 주고 필요한 부분에만 직접 써넣게 해주기에 왠만큼만 해놓아도 상당히 잘 정리된 설계가 나옵니다. 그리고, 당연하지만 OOP 를 완벽히 지원하는 스크립트 언어의 특성상 중복되는 코드도 최소화로 가져가며 클래스가 상속되는 구조로 갈수 있습니다.
물론, 단점도 있습니다. 기술적 내용이라 상세히 이 글에서 다 적지는 못하지만, 좀 느린 실행 속도와 최적화가 어렵다는 점입니다. JSP의 경우 JAVA 미들웨어도 교체하고 스케일아웃에 대한 이것저것 많은 상용 제품도 많고 JAVA 가 일단 기술 지원이 되니 해결책이 상당히 많습니다. PHP의 경우는 최적화를 하지 않아도 기본적으로 소규모사이트에선 언어 자체의 성능으로 충분하니 문제가 없습니다.
그러나, Rails 는 중간에 위치하기도 애매하고 아예 대규모 서비스로 가기도 퍼포먼스 측면에서 힘든 부분이 있습니다. 물론 제가 아직 그정도로 대규모 서비스 개발은 않해봐서 아직 모르는 부분이기도 합니다. 하지만,  Twitter 처럼 Back-end 부분은 분리해 나눠서 Rails 가 개발 효율성이 높은 Frond-end 부분을 맡고 아닌 부분은 타언어로 대체 합니다. 그래도 빠른 개발 속도와 유지보수가 쉬운 코드는 이런 단점을 모두 상쇄하고도 남는다고 저는 자신합니다.
마지막으로, 아마추어 프로그래머라면 어떤 언어로 무엇을 개발하든 사실 상관없습니다. 시간에 구애받지 않고 목표는 자신의 취미를 위해 하는 것이니까 말입니다. 하지만, 프로페셔널한 직업 프로그래머의 경우는 다릅니다. 자신의 최소한의 노동으로 최대한의 결과를 뽑아내는게 내 자신과 나를 고용한 회사 모두에게 이익입니다.
물론, 최대한의 노동으로 최대한 좋은 결과를 뽑아내면 좋겠지만, 그건 내 자신이 너무 힘든일입니다. 회사에서 맨날 야근할수도 없는 노릇이니, 누가 과연 그렇게 힘들게 살고 싶을까요? 프로그래머의 생활이란  회사에서 야근으로 중첩되고 지친 생활이 아니라 주어진 일을 빨리 끝내고 집에 가서 취미생활도 하는 것이 맞다고 생각합니다.
그런 시간의 여유를 가능하게 해주는 도우미? 친구? 도구가 Ruby on Rails 라고 생각합니다.
이것이 Rails 의 포인트이고 중요한거 같습니다.
반복적이고 컴퓨터가 할수 있는 일은 최대한 컴퓨터와 자동화된 도구에 맡기고 사람만이 할수 있는 일은 최소한으로 사람이 하도록 만드는 것.

Posted by Corealight

댓글을 달아 주세요


Catalyst Framework 가이드 이상의 책 - The Definitive Guide to Catalyst

Catalyst Book
Kieren Diment and Matt S Trout, The Definitive Guide to Catalyst, Apress, 2009
Catalyst Framework 관련 책은 별로 없어서 그간은 2007년에 나온 "Catalyst: Accelerating Perl Web Application Development" 밖에 찾을 수가 없었다. 하지만 이미 2년 전에 출간된 책이라 그런지 군데군데 내용이 최신의 Catalyst Framework와 다른 점도 있어서 온라인에서 관련 문서를 찾아가면서 읽어야 했다. 그러다 새로 Catalyst Framework에 관한 책이 나왔다는 Amazon 추천에 낚여 이 책을 샀다. 결과는 아주 만족이다. 한마디로 평하자면 이 책은 Catalyst Framework 가이드 이상의 책이다.
Perl의 기초 문법과 사용법은 알고 있지만 실제로 어떻게 프로그래밍을 할지는 좀 막막할 때 이 책은 훌륭한 길잡이가 될 수 있을 것 같다. 이 책은 Catalyst Framework 설명서라지만 Perl로 어떻게 프로그래밍을 하는지 보여주는 책이기 때문이다.
나는 온라인 이곳저곳에 떠도는 문서로 대충 Perl을 사용하고 있다가 한번 제대로 공부해 보고자 마음을 먹고 최신 Perl의 내용을 충실히 담고 있는 입문서라는 "Beginning Perl"로 공부를 시작했다."Elements of Programming with Perl"과 "Intermediate Perl"을 거치면서 대략 문법과 기초적인 도구 사용법은 아는 정도가 아닌가 생각하고 있었다. 하지만 실제 Perl로 무언가를 하기는 여전히 어려웠는데 때마침 좋은 책을 만난 거 같다.
이 책은 CPAN 환경을 설정하고 모듈을 설치하는 데서부터 시작하여 Moose를 이용하여 객체 지향적인 코드를 짜는 법, perl의 각종 도구를 이용하여 코드를 생성하고 검증하는 법, 테스트를 만들고 실행하는 법 그리고 디버거로 프로그램을 디버그하는 등 Perl로 프로그래밍하는 여러 좋은 방법들을 보여 주고 있다. 간단한 기능을 구현하고 테스트로 검증하며 여기에 점점 기능을 붙여 나가면서 이를 적절히 모듈화하고 그때마다 테스트로 검사 및 확인하는 과정을 따라가며 고수가 프로그래밍하는 모습을 옆에서 바라보고 있는 느낌이다. 이 책을 공부하며 실제 업무에도 응용하여 몇 가지 프로그램도 만들 수 있었다. 한마디로 이 책을 공부하며 Perl로 프로그래밍하는 실력이 한 단계 상승한 느낌이다.
다만 아쉽게도 Catalyst Framework 자체에 대한 설명이 체계적이진 못한 느낌이다. Catalyst Framework 전반을 다루고 있긴 하지만 체계적으로 다루고 있진 않기 때문에 이곳저곳에 흩어져 있다. 온라인에 있는 Tutorial과 매뉴얼 등으로 보충하는 것이 좋을 듯 싶다.
웹프로그래밍을 해 본 사람이 Perl을 배우고 싶다면 이 책도 꼭 보는 게 좋을 듯싶다.


Posted by Corealight

댓글을 달아 주세요

Catalyst vs Rubyonrails

Catalyst vs Ruby on Rails
|  | Comments (1) | TrackBacks (0)






Ruby on Rails는 Perl, Python에 밀려  그렇게 주목받지 못하던 Ruby라는 언어를 화려한 주류언어의 무대로 끌어올린 대표적인 스타 웹프레임웍이다.

Perl하면 옛날의 CGI기반 게시판 등 고리타분 한 인식을 가진 사람들도 있겠지만 그건 호랑이 담배피던 시절 이야기고 현재에는 Perl에도 Ruby on Rails 못지않은 많은 MVC기반 웹 프레임웍들이 존재한다. 그중에서 제일 대표적인 것이 Catalyst인데 최근 Ruby on Rails와 Catalyst의 성능을 비교한 흥미로운 글이 있어 소개하려고 한다.

예전 2009년 4월 Victor Igumnov란 사람이 Catalyst vs Ruby on Rails의 성능을 비교한 글이 있었는데 그때 당시 결과는 Ruby on Rails 가 Catalyst 보다 약 62%정도 빨랐다. 그래서 인터프리터의 성능이 여타 언어보다 빠르다고 알려진 Perl이 비교적 느리다는 Ruby에서 구현된 웹프레임웍 보다 성능이 떨어지는데 의문을 품고 분석한 결과 Catalyst의 Controller구현에서 다중상속에서 메소드의 연속적 호출에 쓰이는 NEXT 모듈의 병목 때문에 성능이 떨어짐을 알아내고 Catalyst개발자에게 알려 이것을 새로운 C3 모듈로 교체하여 성능을 개선했는데

그 후 이런 개선사항이 반영된 새로운 Catalyst 5.8 버젼으로 다시 둘의 성능을 비교했더니 놀랍게도 Catalyst가 single process일때 Ruby on Rails 보다 135%, forking 된 multi process 환경에서는 471% 빨랐다고 한다.

Catalyst는 약간의 진입 장벽은 있지만 여타 프레임웍과는 다르게 ORM과 Template엔진을 필요에 따라 여러 가지로 교체해서 사용할 수 있어 개방적이고 확장성이 뛰어나다고 알려져 있다.

그런데 벤치마크결과에서 더 놀라운 것은 성능이 대폭적으로 향상된 Catalyst 5.8은 예전 5.7대 버젼에서는 OOP구현을 위해 Class::Accessor::Fast 라는 모듈을 사용한데 반해Moose 라는 Meta Object Protocol 기반의 진보된 OOP프레임웍으로 교체하였다는 것이다. Moose는 다소 번거로움이 많았던 Perl OOP구현을 어느 언어보다 편리하고 획기적이며 진보적인 방법으로 할 수 있도록 발전시킨 OOP프레임웍으로 다소 메모리를 좀 더 소비하고 속도가 떨어진다는 비판을 받았는데 Moose가 기반이 된 Catalyst 5.8의 성능이 이 정도로 나오는 걸 보면 그런 걱정은 기우에 지나지 않았나 생각된다.

Catalyst가 쓰이는 대표적인 서비스로는 일본 최대의 Social Network 싸이트인 mixi, 세계 최대규모 도색 동영상 싸이트 중 하나인 Youporn( Alexa 싸이트순위 44위 참고로 우리나라 최대 포털 naver는 60위권) 영국 BBC의 BBC NewsBBC iplayerVoxTicketmasterShopzilla, Takkle, Editgrid, IUseThis, MighTyV 등이 있다. ( Site running Catalyst )

Perl Catalyst 한 번 해보시지 않으시겠습니까?

참고: 또 다른 Catalyst vs Ruby on Rails 자료.

출처 : aero 님 블로그

Posted by Corealight

댓글을 달아 주세요