태그 보관물: java

Java의 함수형 프로그래밍이 생각보다 위험하지 않은 이유

어제 집에서 빈둥거리던 중 Why Functional Programming in Java is Dangerous란 제목의 글을 읽었습니다. 이글은 다음과 같은 Clojure 코드를 Java로 구현하면 OutOfMemeryError 혹은 StackOverflowError의 재앙이 닥칠 것이라 경고하고 있습니다.

(take 25 (squares-of (integers)))

하지만 이것은 사실이 아닙니다. Java는 분명 함수형 언어가 아니지만 저 글에서 언급한 재앙 없이 위 코드를 충분히 구현할 수 있습니다. Java에게서 억울한 누명을 벗겨주고 싶은 생각에 이 포스트를 작성합니다. 제목도 “Java의 함수형 프로그래밍이 생각보다 위험하지 않은 이유”라고 지어봤습니다. 🙂

계속 읽기

*오류 수정* C++와 C#, Java, 그리고 Node.js 정렬 성능 비교

조종국님께서 댓글에서 지적해주신 절사평균 오류가 수정되어 소스코드와 측정 결과가 업데이트되었습니다. 결과적으로 C# 이외의 언어들에 대한 정렬 성능 평가가 낮아졌습니다.
– 2014년 10월 17일 –

어제(2014년 6월 16일) 추가된 Java 코드가 공정하지 못했습니다. 예상보다 Java 코드가 느려서 검토해본 결과, 기존의 C++, C#, Node.js는 모두 rand() 네이티브 함수를 사용해 난수를 만들었기 때문에 난수 도메인의 크기가 15비트인 반면 Java 코드는 매개변수 없는 버전의 java.util.Random.nextInt() 함수를 사용했습니다. 이 포스트의 관심사는 언어별 정렬 속도가 아닌 최대한 유사한 코드를 이용한 CPU 집약적인 코드의 성능 비교이기 때문에 Java 역시 15비트 난수를 사용하도록 수정했습니다. 결과는 많이 달라졌습니다. 이것과 관련되어 수정된 부분은 별도 표시했습니다.
– 2014년 6월 17일 –

처음엔 귀찮아서 제외했지만 찝찝한 느낌이 사라지지 않아 Java를 추가했습니다.
– 2014년 6월 16일 –

며칠전 Swift의 -Ofast 컴파일러 설정에 대한 글을 접했습니다. 저는 아직 Swift에 대해 잘 모르고 실습 경험도 전혀 없지만 이 글에 의하면 -Ofast 설정은 약간은 도박적으로 코드의 제한을 풀어 성능을 극대화합니다. 결과적으로 정렬 작업에 대해 C 코드보다 약간 높은 성능을 보여준다고 하네요. 안정성을 담보로 하기 때문에 개발자의 주의를 강하게 요구하면서도 최소한의 성능 집약적 코드를 최적화하는 데에 이용 가치가 있을 수도 있겠습니다.

그렇다면 안정적 코드를 제공하는 ‘관리’ 개념을 가진 .NET 코드와 Java 코드는 어느 정도 성능을 보여주는지 C++ 코드와 비교해봤고 기왕 하는김에 성능 미신이 따라다니는 Node.js를 포함해 봤습니다.

계속 읽기

웹 서버 개발 플랫폼의 역할과 위치

w3techs.com은 웹 기술에 대한 조사 결과를 공유하는 사이트입니다. 이곳에서 웹 서버 개발 플랫폼의 시장 위치에 대한 보고서를 읽고 ASP.NET 개발자 입장에서 느낀점을 정리합니다.

저의 웹 개발 환경 경험은 ASP.NET 75%, Java 15%, 기타 10% 정도 될 것 같습니다.

2014년 1월 26일 기준 상위 5개 웹 서버 개발 플랫폼에 대한 차트를 보면 눈에 띄는 3가지가 있습니다.

  1. PHP의 넘사벽 점유율
  2. 그 뒤를 따르는 ASP.NET의 높은 점유율
  3. Java로 개발된 사이트의 높은 트래픽

계속 읽기