웹 앱에 C를 사용하지 않는 이유는 무엇입니까?
오늘 아침 G-WAN을 만났을 때 몇 개의 다른 웹 서버를 보고 있었는데, 제가 알기로는 C로 되어 있는 웹 서버이며, C로 되어 있는 웹 사이트나 웹 앱을 작성해서 사용해야 합니다.한 가지 분명한 이점은 G-WAN 사이트에서 제시한 바와 같이 속도입니다.
그러나 포럼에서 G-WAN의 크리에이터가 왜 웹 기반 앱에 C를 사용하지 않느냐고 물었더니 어려운 것 말고는 아무것도 생각나지 않는다(어쨌든 저는 C는 초보입니다).PHP, Python, Ruby 등이 이러한 언어로 개발되기 쉬운 것 이외에 우리가 모두 PHP, Python, Ruby 등을 사용하는 이유는 더 많을 것입니다.나는 그것이 좋은 이유라고 생각하지 않는다.
그래서 내가 말해줄게:웹 앱에 C를 사용하지 않는 이유는 무엇입니까?
흠...
내가 이 토론에 조금 늦은 것 같지만, 나는 그것을 지금 막 발견했다.많은 의견을 주셔서 감사합니다.
저는 G-WAN의 저자입니다.G-WAN은 다른 모든 웹 서버(처리 없음)와 다른 모든 웹 애플리케이션 서버(상상할 수 있는 모든 처리)보다 속도가 빠릅니다.
네, ANSI C를 사용하면 CPU의 파워가 낮아져 스태틱 콘텐츠를 더 많이 처리할 수 있습니다(ANSI C는 동적 콘텐츠를 플라이 상태로 만드는 것만이 아닙니다).
참고로 G-WAN은 C스크립트(C컴파일러 및 링커 불필요)를 사용하기 때문에 컴파일/링크 사이클/지연이 존재하지 않습니다.
G-WAN과 비교 중.NET Java와 PHP, 저는 4개 언어 모두에서 유사한 애플리케이션을 작성했습니다.http://gwan.ch/source/
그리고 실망스럽게도 현대 스크립트 언어는 사용하기 쉽지 않았습니다.
특히 답답한 일 중 하나는 하고 싶은 일을 할 수 있는 '매직' API 호출을 필사적으로 찾는 것이다.
어떻게 하면 'pretty 수천'을 달성할 수 있을지 생각해 보십시오.
C#
String.Format("{0:n}"...
자바
new DecimalFormat("0.00"); ...
PHP
number_format($amount, 2); ...
ANSI C
sprintf("%'.2f", amount);
"..."는 사전 구성 또는 사후 처리가 필요하다는 것을 의미합니다.ANSI C는 분명히 사용하기 쉽고 기억하기 쉽습니다.
PHP가 5900개 이상의 API 호출을 가지고 있는 경우(C#과 Java가 멀지 않은 경우), 적절한 API 호출을 찾는 것 자체가 어렵습니다.이것을 찾는 데 낭비되는 시간(그리고 네이티브 API 콜이 얼마나 잘못 구현되어 있는지 알아내는 시간), 다음에 필요할 때 그것을 학습하는 시간, 이 모든 시간이 애플리케이션 문제를 해결하는 데 필요한 시간을 빼앗기고 있습니다.
PHP가 ANSI C보다 간결하다고 (위에서) 읽었습니다.그럼 왜?"//:: this is a comment ::"
보다는"// this is a comment"
왜 이렇게 바보같이 복잡한 'pretty 수천' 구문을 가지고 있지?
또 다른 일반적인 인수는 자바 등이 웹 어플리케이션 전용 콜을 제공한다는 것입니다.
자바에서 HTML을 피할 수 있는 것을 찾을 수 없어서 내 버전을 썼습니다.
// all litteral strings provided by a client must be escaped this way
// if you inject them into an HTML page
public static String escape_html(String Name) {
int len = Name.length();
StringBuffer sb = new StringBuffer(len);
boolean lastWasBlankChar = false;
int c;
for(int i=0; i<len; i++) {
c = Name.charAt(i);
if(c == ' ') sb.append(" "); else
if(c == '"') sb.append("""); else
if(c == '&') sb.append("&"); else
if(c == '<') sb.append("<"); else
if(c == '>') sb.append(">"); else
if(c == '\n') sb.append("<br/>"); else {
c = c&0xffff; // unicode
if(c < 32 || c > 127) {
sb.append("&#");
sb.append(new Integer(c).toString());
sb.append(';');
} else
sb.append(c);
}
}
return sb.toString();
//szName = sb.toString();
}
ANSI C의 동일한 코드가 더 복잡하다고 정말 믿습니까?아니, 엄청나게 간단하고 빠를 거야.
자바(C에서 파생)는 프로그래머가 여러 줄의 문자열을 '+'로 링크할 것을 요구하고 있습니다.
C#(C에서 파생된)프로그래머들은 '+'과 다중 회선의 문자열과 연계하라고 요구하고 있다.
PHP(C에서 파생된)프로그래머들은 '.'과 다중 회선의 문자열과 연계하라고 요구하고 있다.
ANSIC여기 지금 정말 멍청하(구식)요건을 갖고 있지 않는다.
그래서는 너무 명백한 진전은 현대 언어가 주장한?나는 여전히 그것을 찾고 있다.
진심으로,
피에르.
그것은 C프로그램과 보안 관련된 문제를 돌보고는 많은 시간이 걸린다그것은 관리가 정말 좋은 사람들 프로그램을 작성해야 할 필요가 있습니다.그것은 당신이 더 많은 비용을 지불을 의미한다.
또한, C기능의 어마어마한 단일 표준 도서관으로 빼내는 것의 장점을 가지지 않는다.NET(그리고 다른 주요web-centric 플랫폼) 가지고 있다.그래서 여러분, 또는 interop를 수행하거나"무료로"더 와서 당신 자신의 기능을 구를 부품을 사야 할지도 모르지만, 우리는 PHP 또는 C처럼"web-centric"어#또는 루비거나 말하는 것은 무엇이든지 한다.그것은 당신이 더 많은 비용을 지불을 의미한다.
사실은 싱글-스레디드 계산 속도도 정말이지 그렇게 웹에 중요하지 않다는 것에 넣으세요.네가 만약 더 많은 확장성이 필요해 대다수 기관에서는 경제적으로 단지 그 문제에, 괜찮을 더 많은 코어들을 던질 수 있다.이것은 모든 사람에게, 물론 사실이 아니다.나는 구글의 검색 엔진의 핵심 C또는 속도뿐 아니라 비슷한 언어로 씌여 있지만 전력 비용에 진짜 돈을 아낄 생각했던 것.
대부분의 네트워크 애플리케이션(특히 웹 서버)은 I/O 바운드(즉, 네트워크가 수용할 수 있는 속도보다 훨씬 빠른 속도로 데이터를 퍼낼 수 있는 기능)가 훨씬 높습니다.따라서 CPU 효율이 높은 것은 큰 이점이 없는 반면 확장성과 유지보수가 가능한 것은 큰 이점이 없습니다.따라서 C의 단점을 받아들이고 Java와 같은 관리 환경의 이점을 잃을 이유가 없습니다.NET, Python, Perl 또는 기타 언어.
대부분의 프로그래밍에서 C를 사용하지 않는 것과 같은 이유입니다.장점(대부분 퍼포먼스)은 비용(개발 시간, 자동 메모리 관리 기능 부족, 버퍼 오버플로우로부터의 자동 보호 기능 부족, 편집 단계와 테스트 단계 사이에 컴파일 단계가 있는 것 등)을 상회하지 않습니다.
또 하나의 포인트는 플랫폼 의존성일 수 있습니다.C를 네이티브 코드로 컴파일해야 합니다.이 코드가 모든 플랫폼에서 실행되는 것은 아닙니다.
통역 언어는 통역사가 있는 곳이면 어디든 통한다.예를 들어, 많은 프로바이더는 서버에 설치된 PHP-Interpreter를 Windows OS와 함께 제공합니다.Linux 머신에서 개발 중인 경우.당신은 문제가 있어요.
물론 이 문제는 해결할 수 있지만, 이 경우 PHP로 개발하는 것의 이점을 알 수 있습니다.
이게 도움이 되길 바랍니다, 도마친에 대해
우리가 PHP, Python, Ruby 등을 사용하는 이유는 이러한 언어에서 쉽게 개발할 수 있는 것 말고도 더 있을 것입니다.
이게 모든 이유이고 필요한 유일한 이유야.많은 이점이 있으며, 그 중 가장 중요한 것은 출시 기간입니다.만약 당신이 C를 사용하는 두 달이 아닌 PHP를 사용하여 당신의 웹 앱을 한 달 안에 온라인에 올릴 수 있다면, 당신은 그냥 이길지도 모른다.C를 사용하는 2주가 아니라 Ruby on Rails를 사용하여 일주일 만에 새로운 기능을 추가할 수 있다면 다시 한 번 당첨됩니다.C를 사용하여 이틀이 아닌 Python을 사용하여 하루 만에 버그를 수정할 수 있다면 다시 한 번 승리할 수 있습니다.X 언어를 사용하고 있기 때문에 다른 경쟁사가 Y 언어를 사용하고 있기 때문에 전혀 추가할 수 없는 기능을 추가할 수 있고 리소스 제약으로 인해 해당 언어가 너무 어렵다면 반드시 승리할 수 있습니다.
그리고 "승리"란 정말 지지 않는다는 뜻이야.경쟁사는 보다 높은 수준의 언어와 프레임워크를 사용하여 사이트를 개발하고 있기 때문에 C를 사용하는 다른 사용자와 경쟁하지 않고 C를 사용하지 않는 다른 사용자와 경쟁하지 않습니다.경쟁하려면 비슷한 수준의 추상화 도구를 사용해야 합니다.
퍼포먼스가 문제가 되는 경우는, 사이트의 저속 부분을 퍼포먼스가 뛰어난 언어로 고쳐 쓸 수 있습니다.아니면 하드웨어를 더 투입할 수도 있습니다.실제로 성능 문제는 소위 말하는 "나쁜 문제"입니다. 이는 여러분이 이미 성공했음을 의미합니다.그러나 사이트의 기본 기능을 개발하는 데 더 많은 시간을 할애할 수는 없습니다.더 빨리 실행되도록 C로 쓰는 것은 너무 이른 최적화입니다. Knuth가 우리에게 말했듯이, 모든 악의 근원입니다.
Python이나 Ruby보다 더 높은 수준의 추상화 언어를 사용할 수 있다면 Python이나 Ruby를 사용하는 사람들을 이길 수 있다는 것을 의미합니다.그와 그의 팀이 웹사이트 개발에 LISP를 어떻게 "비밀 무기"로 사용했는지에 대한 Paul Graham의 이야기는 교훈적일 수 있다.http://www.paulgraham.com/avg.html
물론, 만약 여러분이 자신만의 즐거움을 위해 사이트를 개발하고 있다면, 여러분이 원하는 언어로 그것을 하세요.또, 사이트가 CPU에 바인드 되어 있는 경우(어느 사이트나, 통상은 I/O에 바인드 되어 있는 경우), 가능한 한 고속의 언어를 사용합니다.그러나 혁신을 시도하고 있다면, 찾을 수 있는 최고의 추상화를 갖춘 고급 언어를 사용하십시오.
난이도와 복잡성이 전혀 문제가 되지 않는다면(하!) C에서 멈추지 않을 것입니다.저는 x86 어셈블리라고 쓰겠습니다.x86이 아닌 웹 서버를 사용한 지 몇 년이 지났는데, 하루가 다르게 웹 서버가 점점 줄어들어 가고 있습니다.
(어셈블리 또는 더 높은 수준의 것이 아닌) C를 사용하는 것은 C가 프로그래머의 효율과 컴퓨터 효율의 단점임을 시사하는 것입니다.
작성하는 프로그램의 경우는, 다음과 같습니다.C는 내가 쓰고 싶은 프로그램 종류와 잘 맞지 않으며, 괜찮은 매크로 어셈블러에 비해 그 장점은 그다지 중요하지 않다.제가 지금 쓰고 있는 프로그램은 제가 선택한 HLL은 어렵지는 않지만 조립이나 C의 복잡도가 너무 높아서 절대 완성되지 않을 것입니다.충분히 스마트한 프로그래머가 충분한 시간을 가지고 있으면 조립이나 C에서 더 빨리 실행될 수 있다는 것은 인정하지만, 저는 그런 프로그래머가 아닙니다.
말씀하신 언어는 모두 C/+로 표기되어 있습니다.유일한 차이점은 C에서 생성된 고급 클래스와 라이브러리로 현재 이러한 다른 인터프리터 언어를 구성하고 있다는 것입니다.스크립트 언어라고 불리는 것도 이 때문입니다.
케이크를 굽는다고 생각해 보세요(PHP/JS).
- 계란 2개, 우유 1컵, 버터 2개, 밀가루 4컵, 설탕 1컵, 베이킹 소다
하지만 그 모든 요소들을 만들어야 한다고 상상해 보세요. (C/+)
- 중탄산나트륨 17mg, 단백질 15tbs, 비텔린막 12tbs, 아미노산, 황...중성자 입자
C는 많은 현대 언어의 근간이다.그것은 훌륭하고 조립 중에 거의 가장 강력한 언어이다.다른 언어에서 이미 사용되었던 모든 코드를 구축하는 데 투자하기만 하면 됩니다.주기율표에서 케이크를 만드는 것처럼요.
말 그대로 무엇이든 할 수 있다는 것을 배워라!
@Joeri Sebrechts
F.U.D. 활동 중:
PHP, Python 등은 하드웨어로 문제를 해결함으로써 쉽게 확장할 수 있습니다.
글쎄, 사실 그렇지 않아.수직 확장성이 전혀 없고 수평 확장성이 매우 낮습니다.http://gwan.ch/en_scalability.html 를 참조해 주세요.이곳에서는, 실적이 나쁜 기업에 대해서, 얼마나 많은 트러블이 발생하고 있는지를 설명하고 있습니다.
1명이 PHP에서 앱을 개발하는 데 1년이 걸리고, C에서 앱을 개발하는 데 3년이 걸린다고 가정해 보자(C는 같은 작업을 하기 위해 더 많은 노력을 필요로 하기 때문에).
또 틀렸어.만약 PHP 라이브러리가 C로 작성되어 있다면, C에서 직접 사용할 수 있습니다.즉, PHP가 가지고 있다고 주장하는 '독특한 생산성'을 제공합니다.
즉, C 코드의 하드웨어 요구 감소가 C가 매력적이 되기 위해서는 2년치 임금을 나타내야 합니다.실제로는 그런 일은 일어나지 않는다.
순수 F.U.D.(위 답변 참조)
Facebook의 규모가 너무 커서 하드웨어는 신경 써야 할 만큼 비용이 많이 든다.그것이 그들이 PHP를 C++로 교차 컴파일하는 HipHop을 개발한 이유입니다.PHP 프로그래밍의 단순성과 C++의 원시 성능이라는 두 가지 장점을 모두 제공합니다.Facebook은 아직 PHP로 개발되어 있지만, 그것을 사용할 때는 모두 네이티브 코드입니다.
HipHop은 PHP보다 훨씬 빠릅니다. 의심의 여지가 없습니다.그러나 HipHop을 플레인 C 구현과 비교하면 오버헤드는 두 가지 레이어로 구분됩니다.
- PHP-C++ 인터페이스(더부룩한 C++ 라이브러리를 사용)
- C++ 블러트 자체(C++는 플레인 C보다2~10배 느림)
게다가 HipHop은 (실제와는 동떨어진) 전혀 비효율적인 Academic 모드로 쓰여져 왔다.물론, PHP 코더를 감동시킬 수 있지만 임베디드 프로그래머에게 이 코드를 보여주면 그는 페이스북을 불쌍히 여길 것입니다.
「모든 것을 갖추고 있지 않은 언어는, 실제로, 다른 언어보다 프로그래밍이 용이합니다」- 데니스·M.리치
(대부분의) 프로그래밍 언어인 END-USER와 달리 Dennis는 이 문제에 대해 몇 가지 사실을 알고 있었던 것 같습니다.
이 질문에 대한 대답은 이미 끝났지만, 지금까지 언급되지 않은 두 가지가 있습니다. 프로그래밍 패러다임, 특히 웹 개발에서 반드시 프로그래머가 아닌 많은 사람들이 코드를 가지고 작업하는 데 매우 중요합니다.
- 이미 내 문제를 해결한 사람들, 즉 관여하고 유용한 커뮤니티.구글의 가장 작은 noobs조차도 왜 PHP에서 "headers are sended" 오류가 발생하는지 쉽게 알 수 있다. 반면, 그러한 정보는 새로운 프레임워크나 언어에서는 이용할 수 없거나, 그렇지 않으면 임계 질량이 없을 수 있다.
- 프레임워크: 대부분의 프로그래머가 함께 코드를 해킹하지 않고 비즈니스 문제를 해결할 수 있습니다.
궁극의 퍼포먼스를 필요로 하는 중요한 앱이 있으면 C를 사용하지만, 쓰는 데 시간이 오래 걸리기 때문에 시장에 나올 수 없습니다.1번과 2번 중 하나가 있을 때까지는 사용할 수 없습니다.
- 불안하다
- 읽기 어렵다
- 유지하기가 어렵습니다. 개발 시간이 약 1배 느립니다.
- 웹 콘텐츠의 대부분은 I/O에 얽매여 있기 때문에 특히 Java나 C#과 같은 빠른 언어를 사용하는 경우에는 속도 향상은 문제가 되지 않습니다.
다음과 같은 경우 웹 앱에 C를 사용합니다.
- 호스팅 서버(소형 VPS)에 대한 예산도 조금 있고 시간도 많이 들지 않습니다.
- 저는 페이스북이나 트위터, 또는 (수천에서 수백만 명의 사용자가 있는) 서버 사용량을 줄여야 하는 사람을 위해 일하고 있습니다.
- 나는 C를 배우고 싶고 그것을 사용할 수 있는 실제 앱을 찾아야 한다.
- 다른 스크립트 언어보다 C에 대해 훨씬 잘 알고 있습니다.
- 저는 친환경적인 사람입니다. 앱의 탄소 배출량을 줄이고 싶습니다.
G-WAN은 코드를 스크립트로 실행합니다.네, C스크립트는 Play!프레임워크는 Java를 지원합니다.G-WAN은 매우 빠르고 쉬운 API를 가지고 있는데, G-WAN은 다른 서버가 실패했을 때 웹 앱에 C/C++를 사용할 수 있습니다.
한 가지 분명한 것은 C로 웹사이트를 작성하려면 좋은 프로그래머가 필요하다는 것입니다.따라서 어떤 형편없는 개발자도 스파게티 PHP로 사이트를 만들 수 있습니다.C에는 누출 검출기와 가비지 콜렉터도 있습니다.
OP가 이를 질문한 지 10년이 넘었고, 구글 검색 트렌드(웹 프로그래밍 장르 내)는 여전히 이를 활발한 토론으로 보여준다.이것에 대해 2021년의 답변을 하고 싶습니다만, 1979년부터 전문적으로 프로그래밍을 하고 있고, 전술한 모든 언어를 사용해 왔기 때문에, 대답할 자격이 있다고 생각합니다.
다른 언어보다 더 많은 인터넷 장치가 C를 사용합니다.일반적으로는 일반용 디바이스 자체가 아닙니다(Cisco, F5 네트워크 등). 코어는 모두 C로 컴파일되어 있습니다).그러나 이것들은 거의 RTOS와 같은 안정성을 필요로 하는 목적 있는 기능을 가진 임베디드 플랫폼입니다.C는 여기서 계속 지배적인 언어가 될 것입니다.그것은 매우 오래된 언어이기 때문에, 불안정성의 문제는 요인이 되지 않습니다.
Big Tech는 항상 C를 사용합니다.로그 플래시나 백업을 bash 또는 PHP로 작성하는 cron 작업을 스택에서 찾을 수 없습니다.복잡하다면 gcc 링크 바이너리일 가능성이 높습니다.C만큼 신뢰할 수 있는 것은 없습니다.이는 영원히 존재해 왔고 gcc에서 새로운 버그를 찾을 수 없기 때문입니다.
1990년대 기술 회사들은 오늘날 우리가 사용하는 기술의 핵심을 만들어 냈습니다. C는 사용하기에 전혀 매력적이지 않았습니다.많은 앱이 Java Servlet과 애플릿으로 개발되었으며, 이는 MVC 모델과 크로스 플랫폼에 빠르게 도움이 됩니다.후자는 내가 설명하듯이 매우 중요하다.
Microsoft는 C나 C++를 그다지 채용하지 않았습니다.Visual C는 Borland에 비해 형편없는 IDE였습니다.그러나 Visual Basic은 그들에게 큰 인기를 끌었기 때문에 VB는 오늘날에도 많은 웹사이트에서 사용되고 있는 ASP 클래식이 되었다.IIS가 공식적으로 지원하는 최초의 언어(VB 또는 Basic)입니다.Classic ASP는 MSFT의 지원을 받지 않는 오래된 언어로 간주되지만, 개발을 위해 Windows NT(또는 Server)를 사용하고자 하는 초기 웹 앱에서 널리 사용되었습니다.Bill Gates는 당시 최고의 Basic 인터프리터를 썼고 Basic의 단순성으로 인해 매우 빠른 학습 사이클이 개발자가 될 수 있었습니다.그러나 볼랜드의 IDE는 훌륭했지만, 회사는 (Novell과 90년대의 다른 위대한 기업들과 함께) 폭발했다.
1990년대에 제정신이었던 사람은 아직 Linux용 웹 어플리케이션을 개발하고 있지 않았다.다른 Unix 파생 모델도 있지만 상용 버전도 있습니다.많은 사람들이 완전히 다른 OS를 도입했습니다(여기서 AIX 또는 DEC VMS를 생각해 보십시오)."무료"와 "훌륭한 소프트웨어"라는 단어는 종종 자국어의 일부가 아니었다.사실상의 오리지널 웹 마스터가 된 IT매니저는 무료(Linux)에 급여가 들어가는 것을 원치 않았습니다.그 이유는 배포가 부분적으로 단편화되어 있기 때문입니다(RedHat 또는 Mandrake의 것은 제외되었을 가능성이 있습니다).
IT매니저는 프로그래머가 아니었기 때문에 스크립팅 언어가 웹 개발에 더 많이 보급되었습니다.완전히 즉흥적으로 작성된 웹사이트들은 전례가 없었다.
Java(C를 기반으로 한)는 아마도 웹의 미래에 대한 가장 일반적인 개념이 되었습니다. 부분적으로는 Sun이 훌륭한 하드웨어를 가지고 있고 Solaris OS로 유명했기 때문입니다.웹에 관심이 있었던 대부분의 C 프로그래머들은 Java로 이동했고, 거의 비슷했고 동시성을 제공했습니다(C는 동시 언어로 설계되지 않았습니다). 그리고 대부분 안정적인 가비지 컬렉션과 메모리 청소 기술입니다.
VB는 MS에서 개발되어 IIS용으로 컴파일된 언어를 요구하여 현재로 업그레이드되었습니다.복잡성으로 둘러싸인 단순한 VB 또는 C#의 NET 프레임워크.그러나 IIS의 약점은 Windows NT/2000 도입의 수만으로 극복되었습니다.
거품이 꺼지고 Oracle의 Java, Solaris 및 DB는 IT 관리자 사이에서 선호되지 않았습니다(Oracle의 영업 팀이 최고였기 때문에 경영진이 선호했습니다).우선 Oracle의 제품은 매우 비쌌고 최첨단 테크놀로지 기업으로 알려져 있지 않았습니다(아직도 실제로 알려져 있지 않습니다).최신의 IBM은 기능하는 것을 배치하고 기술적 문제보다 비즈니스 문제를 더 많이 격리하고 있습니다.
2000년 이후 Linux는 웹 상에 거의 모든 것을 도입했습니다.이는 배포가 실제로 상용화되기 시작했기 때문입니다.오픈 소스에 대한 이 모든 아이디어는 효과가 있었다.윈도우는 반복적으로 바이러스 문제로 고통받았고 애플은 죽은 존재로 치부되었다.CFO의 예산이 빠듯해지면서 상용 플랫폼이 더욱 비난을 받고 있습니다.
Linux는 처음부터 레거시 PHP 인터프리터를 사용하여 시작되었으며, 그 후 언어가 크게 발전했습니다.Apache를 배포한 대부분의 사람들은 단지 안정적이기 때문에 이 언어를 사용합니다.이 시점에서도, IT매니저는 이러한 대처에 임하고 있습니다.
2000년대 중반 마케팅 기능이 각 회사의 웹 입지를 차지하기 시작하면서 요구는 빠르게 변화했습니다.마케팅 담당자는 테스트(다변수 A/B 캠페인이라고 생각)를 매우 좋아하기 때문에 HTML을 하드코드하지 않고 웹에 푸시할 수 있는 빠른 변경을 실현하기 위한 최선의 방법으로 스크립트 언어가 슬그머니 등장하기 시작했습니다.
ECMAScript(Javascript)가 활성화되고 플래시가 다운되기 시작했기 때문에 브라우저가 UI를 점점 더 빠르게 활용할 수 있게 되면서 DOM을 제어하는 방법에 대한 아이디어가 생겨났습니다.
모든 현대 언어 중에서 프레임워크는 새로운 언어의 성공을 촉진하는 데 큰 역할을 했습니다.모바일이 등장하자 부트스트랩은 빠르게 흡수되었고, 기존 PHP 앱과의 통합은 하드코드화된 C 앱보다 더 쉬웠다.스크립팅이 컴파일된 언어를 대체하는 경우가 대부분이지만 선택 듀쥬르로 인식되기 시작했습니다.NET은 아직 특정 용도를 위한 자리를 마련하고 있지만, 최근 2~3년간 감소했습니다.
결국, C는 여전히 인터넷의 "배후"에서 가장 널리 사용되는 언어입니다.라우터, 로드 밸런서, 침입 감지 시스템..모두 C(또는 C++이지만, 보다 가능성이 높은 C)가 됩니다.이러한 어플라이언스는 현재 소프트웨어 도입으로 이행하고 있지만 하드웨어 어플라이언스는 여전히 대규모 데이터 센터에서 사용되고 있습니다.예를 들어 AWS에는 ToD(시간) 예측을 기반으로 경로를 변경하기 위해 Cisco 스위치의 그룹 주위에 래퍼가 있습니다.Amazon, Google, Facebook 모두 로드밸런싱의 "태양을 따르라" 모델이 좋은 출발점이라는 것을 깨달았으며, 이를 제대로 수행하기 위해서는 저수준의 하드웨어 디바이스에만 의존할 수 있었습니다.스크립트 언어 및 컴파일된 언어도 모두 C를 기반으로 합니다.그러나 k8s와 Docker의 등장에 따라 node.js 프레임워크를 리핑하여 다른 코드 조각과 독립적으로 푸시할 수 있는 작은 코드 유닛에 대해 작업을 시작하는 것이 더 합리적입니다.이전에는 아웃소싱이 많이 사용되었으며, 이는 대규모 개발 환경에서 충돌 없이 시스템을 프로그래밍할 수 있는 유일한 확실한 방법입니다.
우리는 아직 인터넷의 시작 단계에 있다.다시 말해, 10년 후에는 또 다른 사이클이 있을 것이고, 타이핑에서 멀어질 것이다.드래그 앤 드롭 DAG 노드는 VFX 아티스트가 Nuke 또는 Maya를 사용하여 모션 그래픽 클립을 작성하는 것과 유사한 방식으로 웹 애플리케이션을 만드는 데 사용됩니다.Twilio는 이를 수행하고 ML 모델의 훈련도 이미 Peltarion을 사용하여 수행하고 있습니다.
루비나 PHP의 추상화는 아직 C와 같기 때문에 가능한 한 높은 수준의 언어는 아닙니다.STEM 교육에 돈을 쏟아붓는다고 해서 많은 아이들이 컴퓨터 과학을 공부하게 되는 것은 아닙니다.단, 진입 장벽은 지속적으로 낮아지지만 복잡한 애플리케이션이나 CUDA 코어의 직접 어드레싱 등 '뭔가'를 필요로 하는 특정 애플리케이션에는 언어에 대한 다양한 이해의 필요성이 여전히 요구됩니다.
우리는 단순히 Ritchie 자신이 예측한 바와 같이 언어의 다양성을 보고 있다.프레임워크가 성숙했기 때문에 Angular steal을 기동하는 데 5분이 걸렸을 때 C+CGI 프로젝트에 신규 개발자를 투입하는 것은 의미가 없습니다.
사실 이 모든 것은 1980년대 우리 대부분이 예상한 것입니다.프로그래머가 다양해짐에 따라 그들 앞에서 문제를 해결하는 방법도 다양해집니다.오픈소스가 그 어느 때보다 가능해짐에 따라(그리고 놀라운 것!) 처음부터 시작해도 재정적인 이점이 전혀 없습니다.실제로 헤드리스 CMS 시스템은 이미 도입되어 있기 때문에 CMS의 백엔드에서 개발팀이 코드를 쓸 필요가 없습니다.사용자의 경험에 대해 걱정할 뿐입니다.그 후에도 툴은 점점 더 성숙해지고 있습니다.
요점은 C는 확실히 웹에서 사용되고 임베디드 시스템은 항상 그것을 사용한다는 것입니다.MVC 어플리케이션은 컴파일 없이 1시간 이내에 간단한 어플리케이션을 작성할 수 있는 프레임워크로 발전했습니다.또한 이들 프레임워크는 새로운 언어에서도 확장성이 높아집니다.사과와 오렌지의 비교입니다.데이터 정규화에는 아직 C를 사용하고 있습니다만(예를 들어) 웹 앱 작성에 돈을 지불받으면 맥주를 마시면서 Vue.js 앱을 시작할 수 있는데 왜 더 열심히 일합니까?
C는 현악기 조작에 편리한 언어가 아닙니다.
C# 비교:
string foo = "foo";
string bar = "bar";
string foobar = foo + bar;
대응하는 C:
const char* foo = "foo";
const char* bar = "bar";
char* foobar = (char*)malloc(strlen(foo)+strlen(bar)+1);
strcpy(foobar, foo);
strcat(foobar, foo);
//todo: worry about when/where the foobar memory
//which was allocated by malloc will be freed
C는 OOP를 사용하지 않고 리소스를 수동으로 관리하는 등 여러 가지 목적으로 매우 낮은 수준의 언어입니다.
웹에는 C를 제한적으로 사용합니다(예: Klone).대부분의 경우 리소스가 적은 임베디드 애플리케이션 케이스에 사용됩니다.
그러나 고성능 웹 애플리케이션 개발에 사용되는 CppCMS와 같은 C++ 웹 프레임워크가 있습니다.
C++ 를 사용하면, 고도의 추상화와 상세한 조작을 실시할 수 있기 때문에, 대규모 애플리케이션의 도입과 개발에 있어서 보다 뛰어난 옵션을 얻을 수 있습니다.
그러나 일반적으로 Java, Python 또는 PHP와 같은 언어에 적합한 웹 프레임워크를 사용하는 것이 더 빠르기 때문에 출시 기간 및 개발 비용보다 성능 및 리소스 사용량이 훨씬 중요한 경우에 사용합니다.또, 일반적으로, C++ 언어보다 Java/P* 언어 대응 능력이 낮은 프로그래머가 같은 급여로 있습니다.
따라서 우선도가 중요하며, PHP/Python/Perl 또는 Java용 C++ Web 개발 툴도 적습니다.
쉬운 게 좋은 이유가 아니라고 생각하시는군요.좋은 이유인 것 같아요.궁극의 퍼포먼스를 필요로 하는 경우 C는 문제 없습니다만, 그 외의 언어에서는, 생산성과 유지보수의 용이성을 향상시켜, 결함을 저감 하기 위해서, 하드한 것을 추상화합니다.
저는 웹 개발자는 아니지만 어쨌든 이 질문들을 하고 몇 가지 포인트를 제안할 것입니다.
어떤 웹사이트가 한 가지 언어로만 되어 있나요?정말이지 이 실은 망치 하나가 모든 못에 맞는다고 가정하는 것 같다.
C가 복잡하다고 마지막으로 말한 게 언제죠?내 말은, 정말 남자애들은 더 낮은 레벨은 받을 수 없어.C++를 말하는 것이 아닙니다.이 두 가지는 종종 집합적으로 언급되기 때문입니다.
C는 보안에 대한 우려를 부인할 수 없지만 PHP & Perl이라고 하는 클루지에는 없는 것입니까?어느 경우든 안전한 웹 사이트는 프로그래머 규율의 함수입니다.
어쨌든 코멘트로 넘어가겠습니다.특정 언어를 사용하는 것의 어려움은 C가 당면한 문제에 따라 크게 달라지며, 특히 C++는 경험이 풍부한 사람이 문제를 신속하게 해결할 수 있습니다.
임베디드 서버나 사이트등의 Web 서버에는, 통상의 Web 서버에는 언어 선택이 없습니다.따라서 C의 변형이나 BASIC과 같은 것을 사용하게 됩니다.여러분의 목표는 기기에 필요한 기능을 제공하는 것이며 언어에 대해 걱정하지 않는 것입니다.메인스트림 웹 서버에서는 대부분의 경우 고급 언어를 사용합니다.큰 다리미에서 벗어나면 프로그래밍의 자유는 사라집니다.
적절한 라이브러리가 없다면 대부분의 경우 C에서 기초 웹 프로젝트를 수행하는 것은 어리석은 일입니다.좋은 표준화된 도서관의 부족은 여기서 큰 부정적인 것이다.
다음은 웹용 C 라이브러리를 구축할 때 볼 만한 웹 관련 코드입니다.
- cgic: CGI 프로그래밍용 ANSI C 라이브러리
- cgit: git 저장소를 위한 웹 프런트 엔드
- wbox: HTTP 테스트툴
- wget html-timeout.c
- curl cookie.c
- 할인, David Parsons가 John Gruber의 Markdown 텍스트를 html 언어로 구현
- Protothreads (임베디드 시스템의 경우 추가), http://www.sics.se/ ~adam/software.dev.dev.
- protothread, 구글 코드 프로젝트 by LarryRuane
- uriparser sourceforge 프로젝트
- http-parser, c의 http request/response 파서 by Ryan Dahl on github
- nginx
- ...
음, 웹 개발은 유용한 라이브러리(PHP에서 사용되는 종류)를 가지고 있는 문제이기 때문에 C가 어떻게 도움이 되지 않을지 모르겠습니다.
절차 로직은 동일합니다.그 이외의 경우는 C, PHP, .Net, Perl 중 어느 쪽을 사용하든 상관없습니다.
그리고 C 루프나 테스트는 C로 작성되기 때문에 작성하기가 더 어렵지 않습니다.
대부분의 PHP 라이브러리는 C로 만들어지기 때문에 missing-C-libraries-for-the-Web 인수는 그다지 설득력이 없어 보입니다.
C는 Java(SUN)와 의 프로모터에 의해 웹 프로그래밍 언어로 광고되지 않은 것 같습니다.넷(MICROFT)은, 독자적인 지적 자산(특허를 많이 취득한 것)을 가지고 있기 때문에, 채용을 추진하고 있었습니다.
C는 무료(무허가) 표준으로서 개발자에 대한 '락인' 그립을 제공하지 않습니다.그러므로, 아마도 납세자의 돈이 사익에 의해 뒷받침되는 열등한 기술의 채택에 자금을 대도록 확실히 하기 위해 학교와 대학에서 로비의 막강한 힘이 될 것이다.
C가 IBM과 MICROSOFT에는 충분하지만(PHP나 .Net에서는 제품을 개발하지 않음) 최종 사용자에게는 충분하지 않다면 최종 사용자는 왜 그들이 이러한 이중 표준을 적용받도록 초대받았는지 의아해할 수 있습니다.
C 의 문자열 처리는, 다음의 방법으로 간단하게 실시할 수 있습니다.
데이터 유형(libslack의 일부)
Libslack은 List라고 하는 일반적인 확장 가능한 포인터 배열 데이터 유형, Map이라고 하는 일반적인 확장 가능한 해시 테이블 데이터 유형 및 다수의 함수와 함께 제공되는 적절한 String 데이터 유형(대부분 Perl에서 제거됨)을 제공합니다.또한 추상적인 단일 및 이중 링크 리스트 데이터 유형과 옵션인 "확장 가능한" 프리랜서도 있습니다.
또는 다음과 같이 입력합니다.
관리 문자열 라이브러리(C용)
http://www.cert.org/secure-coding/managedstring.html
"domachine"은 다음과 같이 썼다.
플랫폼 의존성: C를 네이티브코드로 컴파일해야 합니다.이 코드가 모든 플랫폼에서 실행되는 것은 아닙니다.인터프리터 언어(PHP 등)는 인터프리터가 있는 곳이면 어디서든 실행됩니다.물론 이 문제는 해결할 수 있지만, 이 경우 PHP로 개발하는 것의 이점을 알 수 있습니다.
휴대용 PHP 인터프리터가 어떤 언어로 쓰여져 있는지 궁금하신 적이 있습니까?
ANSI C의 경우.
따라서 ANSI C의 휴대성을 다시 무시하기 전에 가장 좋아하는 프로그래밍 언어가 어느 언어로 작성되었는지 자문해 보십시오.(팁: 거의 모든 것이 C/C++로 작성되었습니다).
ANSI C 컴파일러는 제가 작업해야 했던 모든 플랫폼에서 사용할 수 있지만, PHP와 그 거대한 런타임에 대해서는 해당되지 않습니다.
portability 인수는 여기까지입니다.
G-WAN과 비슷하지만 Cocoa/Objective-C는 웹 애플리케이션 프레임워크인 Bombax입니다.
Objective-C에 대해서 말하자면, 언젠가 웹 앱을 만드는 방법에 혁명을 일으킬 가능성이 있는 MacRuby를 지적하지 않을 수 없습니다.
PHP, Python 등은 하드웨어로 문제를 해결함으로써 쉽게 확장할 수 있습니다.
1명이 PHP에서 앱을 개발하는 데 1년이 걸리고, C에서 앱을 개발하는 데 3년이 걸린다고 가정해 보자(C는 같은 작업을 하기 위해 더 많은 노력을 필요로 하기 때문에).즉, C 코드의 하드웨어 요구 감소가 C가 매력적이 되기 위해서는 2년치 임금을 나타내야 합니다.실제로는 그런 일은 일어나지 않는다.
모든 규칙과 마찬가지로 예외가 있습니다.Facebook의 규모가 너무 커서 하드웨어는 신경 써야 할 만큼 비용이 많이 든다.그것이 그들이 PHP를 C++로 교차 컴파일하는 HipHop을 개발한 이유입니다.PHP 프로그래밍의 단순성과 C++의 원시 성능이라는 두 가지 장점을 모두 제공합니다.Facebook은 아직 PHP로 개발되어 있지만, 그것을 사용할 때는 모두 네이티브 코드입니다.
최종적으로 어셈블러를 포함한 모든 언어를 사용하여 사이트를 개발할 수 있습니다(CGI 등).컴파일된 언어를 사용하는 것이 어떻겠습니까? 이미 있습니다.NET, Java 및 기타
결과를 얻기 위해서는 자신이 하는 일을 사랑해야 한다.java나 php와 같은 언어들은 사람들의 삶을 더 쉽게 만들기 위해 많은 노력을 기울여 만들어졌다.Php는 특히 오늘날 많은 자기 학습 웹 프로그래머들에게 혜택을 주고 있다.웹 개발의 세계에서 그것이 어떤 지원을 가지고 있는지 알 수 있습니다.
Java iam은 확실히 오늘날 세계에서 가능한 모든 것을 당신에게 제공하기 위해 작성되었습니다.그 거대한 책은 명백한 지표이며, 만약 당신이 웹 개발을 위해 다가오고 있다면 그것은 야수이다.Python도 마찬가지입니다.이것들은 매우 훌륭한 언어와 플랫폼입니다.그들이 매우 인기 있는 것은 당연하다.
저는 C 신봉자이고, php와 같은 다른 언어를 볼 수 없었던 몇 가지 제한에 의한 것도 있습니다.나는 매일 C를 쓰고 있고 매일매일 새로운 것을 배우고 있다.이것은 저를 매우 기쁘게 하고, 저는 Cgi를 통해 웹사이트용 애플리케이션을 작성할 때 C가 어떻게 기본 선택이었는지에 대해서도 배우기 시작했습니다.이것은 다른 플랫폼에서는 추상화되어 있습니다.데이터베이스나 웹 서비스와 관련된 웹 사이트를 개발할 때는 이면에서 무슨 일이 일어나고 있는지 알아야 합니다.
그러나 당신이 모든 것을 알고도 스크립트 언어를 사용하고 싶다면 타당한 이유가 있어야 하며, 우리는 그것에 대해 조언해 줄 누군가가 필요하지 않습니다.
언급URL : https://stackoverflow.com/questions/3079153/why-do-you-not-use-c-for-your-web-apps
'source' 카테고리의 다른 글
유닛 테스트에서 소품을 컴포넌트에 전달합니다. (0) | 2022.08.16 |
---|---|
v-for 구조 간의 차이 (0) | 2022.08.16 |
Linux에서 Java의 가상 메모리 사용량, 너무 많은 메모리가 사용됨 (0) | 2022.08.15 |
char 배열에 저장된 머신 코드를 호출하려면 어떻게 해야 합니다. (0) | 2022.08.15 |
어떻게 sprintf을 사용하여 문자열을 추가할 수 있는? (0) | 2022.08.15 |