회사내 사용하는 언어의 선택(?)

alwaysN00b의 이미지

안녕하세요.

아직 kldp 익숙치가 않아서 이곳에 올려도 되는지 모르겠네요
(관리자님 게시판 성격에 맞지 안으면 이동해주세요~)

주제를 적어야 되는데 뭐라 적어야 될지도 모르겠네요.. -_-;;

일단. 저희 회사는 sun-e5500 에 informix (DBMS) 와 iplanet (netscape 웹서버 계열) 을 사용하고 있습니다.

중요한건... web programming을 CGI/C를 이용하고 있죠. 제가 2년 넘게 근무하면서 느낀건... 정말... 노후화 (?) 되어있다. 라고 생각합니다.

개발 시간이 너무 많이 소요됩니다. 개인적으로 C를 좋아하지만 web 프로그래밍으로는 타 언어(php,jsp등)보다 별루라고 생각합니다.

그래서, 제가 오늘 간단히 db 에서 불러오고 update하는 프로그램을
똑같은 방법으로 php, C 를 이용해서 만들어 속도 차이를 보여줬습니다.

php가 엄청 빨랐는데 "왜 빠르지?" 라고 물으시더군요. -_-;;

저도 정확히 몰라서 횡설수설 했는데(php는 parsing 모듈이 떠있느니 하는등.... 제대로 알지도 못하면서 둘러댔습니다.)

그분이 완강하십니다. -_-;

적절한 검색어도 모르겠고 명애의 전당에 '최고의 언어'인가하는 쓰레드는 읽어보았습니다.

제가 그분께 설명하길 "못을 박을때 아무거나로도 박으면 되지만 돌보다는 망치로 박는게 훨씩 쉽고 간단하다" 라고 했습니다.

그런데.. 안통합니다.ㅋ

고수님들 기술적으로 설명할수 있는 관련자료나 문서 추천 해주셨으면 합니다.

읽어주셔서 감사합니다. 즐거운 하루 되세요.

angpoo의 이미지

php가 C로 만든 cgi보다 빠른 정도가 아니라 엄청나게 빨랐다는 상황은 이해가 가질 않네요.
정상적인 경우라면 C가 더 빨랐을텐데요.
그렇다고는 해도 정말 특별한 경우가 아니라면 여전히 C보다는 php를 추천하겠지만서두...

그분의 위치와 님과의 관계는 모르겠지만서두
상사를 설득시킨다는 것은 힘든일이죠.
그래도 C를 쓴다니 asp대신 php쓰자는 것보다는 훨씬 전향이 쉽겠네요.

차리서의 이미지

저도 거의 문외한이지만, 전에 잠깐 줏어들은 바에 의하면 이런 경우의 속도 차이는 PHP vs C의 문제라기보다는 혹시 Apache module vs CGI의 문제가 아닐까요? 작성하신 PHP 스크립트를 mod_php가 아닌 CGI 방식으로 컴파일된 PHP 엔진으로 돌린 결과는 어떤지, 반대로 C로 만든 CGI를 FastCGI나 mod_cgi에 걸고 돌리면 어떤지 확인해보시면 뭔가 보이지않을까 싶습니다……

……만, 역시 제가 너무 몰라서 헛소리였을 가능성이 99%입니다. '아님 말구' 성 코멘트여서 죄송합니다.

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

alwaysN00b의 이미지

답변 감사합니다.

차리서 wrote:
저도 거의 문외한이지만, 전에 잠깐 줏어들은 바에 의하면 이런 경우의 속도 차이는 PHP vs C의 문제라기보다는 혹시 Apache module vs CGI의 문제가 아닐까요? 작성하신 PHP 스크립트를 mod_php가 아닌 CGI 방식으로 컴파일된 PHP 엔진으로 돌린 결과는 어떤지, 반대로 C로 만든 CGI를 FastCGI나 mod_cgi에 걸고 돌리면 어떤지 확인해보시면 뭔가 보이지않을까 싶습니다……

……만, 역시 제가 너무 몰라서 헛소리였을 가능성이 99%입니다. '아님 말구' 성 코멘트여서 죄송합니다.

php는 sun-fire 에서 돌려보고 cgi는 5500에서 돌렸는데

차리서님 말씀대로 FastCGI를 사용하여 같은 조건에서 test한번 해봐야겠습니다.

다시한번, 답변 감사드립니다.

언제나 시작

서지훈의 이미지

첫째, 일의 성격에 맞는 언어
둘째, 되도록 손에 익은 언어
셋째, 성능...
요즘 같은 시대에 성능을 최우선으로 따져서 개발을 한다는건 자기 발등에 자신이 도끼질 하는 거나 매 한가지 인것 같더군요.
일단은 개발하기 편하고 아무나 읽고/수정하는데 무리가 없는 언어가 가장 적당할 것같습니다.
이를 위해서도 방대한 주석 작업도 필요하고, 최대한 쉽고 코딩을 하고...
이러다 보면은 성능은 뒷전이 되는건 당연 지사.
주석 없는 코드는 정말 쓰레기 보단 좀 나은 정도...
그리고 C/CGI도 지양을 하되...
이게 아니면 안되는 부분들이 있을 겁니다.
그런 부분에서만 이걸 사용하는게 좋겠죠.

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

fender의 이미지

다들 아시는 이야기지만 웹에서 '성능'은 단순한 웹 요청을 처리하는 응답시간을 뜻하지 않습니다. 한 명이 한 페이지 로드할 때 0.01초 걸리는데 100명이 붙으면 5초로 늘어나는 페이지보다는 한 명이나 100명이나 1초 안에 처리하는 것이 훨씬 바람직한 경우가 많으니까요...

대체적으로 1초에 처리할 수 있는 요청 건 수와 전체 동시접속자수의 그래프나 평균응답시간 - 동시접속 수, 혹은 전체 요청 건수에서 오류의 비율 - 동시접속 수 등의 그래프를 성능의 척도로 많이 사용합니다.

그리고 대부분 이런 쪽의 성능은 언어나 플랫폼 자체의 처리 속도 만큼이나 캐슁 등을 처리하는 방식, 즉 성능을 고려한 설계에 따라 결정됩니다.

만일 페이지 하나 로딩할 때 걸리는 raw performance가 무엇보다 중요하다면... 아예 웹사이트 자체를 C나 어셈으로 아파치 모듈로 만들던가 해당 사이트 전용으로 최소화된 웹서버를 구현해서 데몬으로 돌리는게 낫지 않을까요? :)

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

opt의 이미지

그 분이 C를 고집하는 나름의 이유가 있을 것입니다.
그 분이 C를 고집하는 이유가 기술적인 이유라면 기술적인 근거를 대는 것이 맞겠지만, 정치적인 이유라면 정치적인 부분을 공략하는 것이 맞을 것입니다.

그 분과 alwaysN00b님과의 관계가 중요한 부분 같습니다.

----
LUX ET VERITAS | Just for Fun!

cjh의 이미지

환경에 따른 선택일 수도 있겠죠. 웹서버가 iplanet이면, iplanet에서 php가 돌아가는지 여부부터(apache처럼 모듈 형태로 제공이 되는지 아니면 fork()로 실행해야 하는지 여부도 중요합니다), 제 성능이 apache+mod_php처럼 나는지도 중요하겠죠.

--
익스펙토 페트로눔

bluemoon의 이미지

alwaysN00b wrote:

개발 시간이 너무 많이 소요됩니다. 개인적으로 C를 좋아하지만 web 프로그래밍으로는 타 언어(php,jsp등)보다 별루라고 생각합니다.

그래서, 제가 오늘 간단히 db 에서 불러오고 update하는 프로그램을
똑같은 방법으로 php, C 를 이용해서 만들어 속도 차이를 보여줬습니다.

인포믹스는 잘 모르지만 그쪽에서도 C 인터페이스를 제공해줄꺼라 보고..
C를 좋아하시면 C로 작업하시는게 즐거우실것 같은데..
개발시간이 문제라면 시간을 더 달라고 해보세요.
가능하다면 외주를 줘버리던지.. 그런 말 꺼냈다가 짤릴것 같으면 하지마시고요..;;

그런데 C로하면 개발속도가 느리다고 하시는데 그렇게 차이나지 않습니다.
주 인터페이스는 qDecoder라는 CGI 라이브러리를 쓰시면 되고요.
DB는 인포믹스에서 제공해주는 API를 쓰시고
문자열처리는 qDecoder에서 제공해주는 함수나 아니면 인터넷에 뒤져보면
C 문자열 라이브러리가 널려있습니다.
C++을 쓰시면 더 편하고요. 어려운 자료구조들은 STL로 해결이 되고
CGI 인터페이스는 gnu cgicc를 써도 되고, 안그래도 편한데 더 편하게 쓰게만든
cgicc 익스텐션이라는것도 있고..
문제는 printf("<table width=\"100%%\"> <tr><td>%s</td>.. ", XXX);
이런 식으로 웹페이지를 만들어야 하는건데요.
클라이언트측 스크립트와 XML, 스타일시트만으로 다 커버되는겁니다.
정적페이지를 포함해야하는 문제는 SSI로 다 되고..
동적페이지를 포함해야 하면 역시 XMLHttp를 통해 결과를 다 받아서 DHTML기술로 뿌려주던지, 응답문자열이 xml형태라면 XSL을 쓰면 되고..
이런저런 기술들이 사용되는것이 번거롭게 보이지만 성능면에서나 유지보수 측면에서 매우 효율적인 방식입니다.

밥먹기전에 좀 더 덧붙이면 cgicc에서 제공해주는 HTML 태그생성 함수를 사용하면 ASP.NET 부럽지 않은 템플릿트를 구축할 수 있습니다.
ASP.NET의 웹폼 컨트롤중에 UI와 관련된 것들이 내부적으로 HTML태그로 구성해서
HTTP Request를 받아 다시 Response해주는 방식이거든요.
이때 페이지 리로드가 일어나지 않게 하려면 XML과 DHTML기술을 쓰면 되고요.

lazylady의 이미지

bluemoon wrote:

동적페이지를 포함해야 하면 역시 XMLHttp를 통해 결과를 다 받아서 DHTML기술로 뿌려주던지, 응답문자열이 xml형태라면 XSL을 쓰면 되고..
.
.
이때 페이지 리로드가 일어나지 않게 하려면 XML과 DHTML기술을 쓰면 되고요.

흠;; dhtml은 비표준 아닌가요?
비표준은 쓰지도 권하지도 맙시다.

건축과 다니면서 프로그램 공부하는 이상한 사람;;