웹 개발을위한 새로운 프로그래밍 언어를 찾으십니까? [닫은]


14

프로그래밍 언어와 의도 된 목표에 대한 구체적 이고 구체적인 개요 를 제공하는 편견이 적은 리소스 가 있는지 궁금합니다 . 새로운 언어를 배우고 싶지만 각 언어의 사이트를 방문하는 것은 효과가 없습니다. 각각의 약점이나 구체적인 목표에 대해 언급하지 않고 얼마나 큰지에 대해 이야기합니다 .

Ruby는 단순성과 생산성에 중점을 둔 역동적 인 오픈 소스 프로그래밍 언어입니다.

Python은보다 빠르게 작업하고 시스템을보다 효과적으로 통합 할 수있는 프로그래밍 언어입니다.

몇 년 동안 PHP 개발자였던 Vic Cherubini 는 저의 곤경을 잘 요약합니다.

나는 PHP를 잘 알고 있었고, 내 자신의 프레임 워크를 가지고 있었고, 무언가를 시작하고 실행하기 위해 빠르게 일할 수 있었다.

MVC 혁명 내내 이런 식으로 프로그래밍했습니다. PHP 개발자로서 더 나은 직업 (읽기 : 더 나은 임금, 더 나은 직책)을 얻었지만, 제 자신의 시간에 작성한 코드가 훌륭하고 직장에서 함께 일한 코드가 끔찍하다는 것을 깨달았습니다. 끔찍한 것보다 나빠 극악한. OS 상거래 수준이 잘못되었습니다. 사이드 프로젝트를 수행하면 직장에서 함께 일한 코드가 비참 해지기 때문에 제 정신을 잃지 않았습니다.

이것이 내가 보조 프로젝트와 새로운 프로그래밍 벤처를 위해 PHP에서 은퇴하는 이유입니다. 나는 PHP와 함께 보낸다. 당신이 원한다면 소진. 나는 언어로서 그것의 최상위에 있다고 생각하는 수준에 도달했고 곧 새로운 언어로 넘어 가지 않으면 프로그래밍으로 완전히 끝날 것이고 나는 그것을 원하지 않습니다.

내가 본 언어에는 JavaScript (node.js 용), Ruby, Python 및 Erlang이 포함됩니다. 스칼라 나 C ++에 대해서도 생각했습니다.

문제는 내 요구를 가장 잘 처리하기 위해 어떤 것이 만들어 졌는지 알아내는 것입니다.

따라서 과대 광고를 건너 뛰고 플랫폼의 성숙도, 커뮤니티의 규모 및 해당 언어의 강점과 약점에 대한 실제 정보를 얻을 수있는 곳은 어디입니까? 이것을 알고 있다면 웹 개발을 계속할 언어를 선택하는 것이 쉬워야합니다.

최신 정보

각 언어마다 4MB의 오버 헤드가 있거나 최대 동시 연결이 999이거나 "X"기능을 수행 할 수있는 패키지가 없거나 지원이 새로운 언어 브랜치를 위해 단계적으로 폐지되고 있습니다.


14
이러한 요구 사항을 지정하지 않으면 어떤 요구 사항을 가장 잘 처리 할 것인지를 말하기가 어렵습니다.
vartec

3
그렇기 때문에 내가 필요로하는 것을 정의하지 않은 것입니다. 내 개인적인 요구는 중요한 것 외에 있습니다 . 내 요구 사항을 특정 프로그래밍 언어와 일치시킬 수있는 곳을 알고 싶습니다. 내 필요가 바뀔 수 있고 다시 돌아 가야하기 때문입니다.
Xeoncross

실행 속도 보다 프로그램에 더 많은 것이 있다는 것을 지적 할 가치가 있습니다 . 개발 속도와 언어로 인해 응용 프로그램을 구축해야하는 방식 이 중요한 역할을합니다.
Xeoncross

4
이것은 언어에 대한 것이 아니라 사용할 수있는 프레임 워크의 성숙도와 기능에 관한 것입니다.

1
Alex Martelli 의이 훌륭한 게시물을 살펴 보시기 바랍니다 .
phant0m 2016 년

답변:


3

나는 이것을 대답으로 게시하지 않을 것이지만 Xeoncross는 나에게 물었다.

(Sidenote : 누군가가 작은 코드 예제에서 마크 다운 문제를 해결할 수 있다면 고맙겠습니다.)

에 의해 게시 됨 알렉스 마르 텔리comp.lang.python : 파이썬보다 루비에 대한 더 나은 무엇입니까? 2003년 8월 18일, 오후 5시 50분

Erik Max Francis는 다음과 같이 썼습니다.

"Brandon J. Van Every"는 다음과 같이 썼습니다.

파이썬보다 루비가 더 좋은 점은 무엇입니까? 나는 무언가가 있다고 확신합니다. 무엇입니까? 파이썬 사람들보다는 루비 사람들에게 이런 질문을하는 것이 훨씬 더 합리적이지 않습니까?

예를 들어, 자신의 목적에 파이썬 커뮤니티의 "사회학 연구"가 포함되어 있다면, 그 커뮤니티에 질문을하는 것은 다른 곳에 두는 것보다 정보에 대한 정보를 더 많이 공개 할 가능성이 높습니다. :-). 개인적으로, 나는 마지막 OSCON에서 Dave Thomas의 하루 루비 튜토리얼을 따라갈 수있는 기회를 기쁘게 생각했습니다. 구문 차이의 얇은 베니어 아래에서 Ruby와 Python이 놀랍게 유사하다는 것을 알았습니다. 어떤 언어 집합 중에서도 최소 스패닝 트리를 계산하는 경우 Python과 Ruby가 처음으로 통합 될 두 잎이 될 것입니다. 중간 노드 :-).

물론, 나는 루비, 각 블록의 끝에서 바보 "종료"를 입력 (보다는 unindenting)의 지친받을 수 있나요 -하지만 나는 똑같이-바보 입력 방지하기 위해 어떻게해야합니까 : 파이썬이에 요구하는 시작 의를 각 블록, 그래서 거의 세척입니다 :-). @foovs 와 같은 다른 구문 차이 self.foo또는 Ruby vs Python에서 대소 문자의 중요성은 실제로 나와 관련이 없습니다.

다른 사람들은 의심 할 여지없이 그러한 문제에 기초하여 프로그래밍 언어를 선택하고 가장 인기있는 논쟁을 일으킨다. 그러나 그것은 파킨슨의 법칙 중 하나 일 뿐이다 (문제에 대한 토론의 양은 문제에 반비례한다) 실제 중요성). 내가 중요하게 생각하는 파이썬의 한 가지 차이점은 파이썬의 호의적이지만 다른 사람들은 그 반대의 생각 만 할 것입니다. 파이썬 (C에서와 같이)에서 함수를 호출하려면 항상 호출하는 객체 바로 뒤에 괄호를 붙여 "호출 연산자"를 적용합니다 (마지막 괄호 안에는 호출에 전달하는 인수가있는 경우). 인수를 전달하지 않으면 괄호가 비어 있습니다). 이것은 특별한 경우, 예외, 임시 규칙 등이없는 상황에서 객체에 대한 참조를 의미하는 것으로서 연산자가 포함되지 않은 객체에 대한 단순한 언급을 남깁니다. Ruby에서 (파스칼에서와 같이) 인수를 사용하여 함수를 호출하려면 인수를 전달합니다 (일반적으로 괄호로 묶는 경우는 아니지만). 그러나 함수가 인수를 취하지 않으면 암시 적으로 함수를 암시합니다. 이것은 많은 사람들의 기대를 충족시킬 수 있습니다 (적어도, 과거 프로그래밍 경험이 파스칼이나 그와 유사한 "임시 호출"(예 : Visual Basic과 같은 다른 언어)을 사용했던 사람들)-그러나 나에게 이것은 단지 객체에 대한 언급은 객체에 대한 참조 또는 객체에 대한 호출을 의미 할 수 있습니다. 객체의 유형에 따라-객체를 언급하여 객체에 대한 참조를 얻을 수없는 경우에는 명시 적으로 "이것에 대한 참조를 제공하십시오. 전화하지 마십시오!"를 사용해야합니다. 그렇지 않은 연산자. 나는 이것이 함수 (또는 메소드, 또는 다른 호출 가능한 객체)의 "일등성"과 객체를 부드럽게 교환 할 수있는 가능성에 영향을 준다고 생각합니다. 따라서 나 에게이 특정 구문 차이는 Ruby에 대한 심각한 블랙 마크입니다.하지만 다른 사람들이 왜 더 격렬하게 동의하지 않더라도 다른 사람들이 그렇지 않을지를 이해합니다. 구문 아래에서, 우리는 기본 의미론에서 몇 가지 중요한 차이점을 알게됩니다. 예를 들어 Ruby의 문자열은 C ++에서와 같이 변경 가능한 객체입니다. 파이썬에서는 그것들이 변하지 않습니다 (자바에서와 같이, 또는 C #을 믿습니다). 다시 말하지만, 이미 익숙한 것으로 주로 판단하는 사람들은 이것이 Java의 장점이라고 생각할 수 있습니다 (물론 Java 또는 C #에 익숙하지 않은 경우 :-). 필자는 불변의 문자열이 훌륭한 아이디어라고 생각합니다. (Java가 독립적으로 이미 파이썬에 있던 아이디어를 재창조했다고 생각하지는 않습니다.) "변경 가능한 문자열 버퍼"유형도 마음에 들지 않습니다. (그리고 Java 자체의 "문자열 버퍼"보다 사용하기 쉬운 것이 이상적임); 그리고 함수형 프로그래밍 언어와는 별도로 Java를 공부하기 전에 친숙 함으로 인해이 판단을 내리지 않습니다. 자신이 이미 잘 알고있는 것에 의해 주로 판단하는 사람들은 이것이 Java의 장점이라고 생각할 수 있습니다 (물론 Java 나 C #에 익숙하지 않은 한 :-). 필자는 불변의 문자열이 훌륭한 아이디어라고 생각합니다. (Java가 독립적으로 이미 파이썬에 있던 아이디어를 재창조했다고 생각하지는 않습니다.) "변경 가능한 문자열 버퍼"유형도 마음에 들지 않습니다. (그리고 Java 자체의 "문자열 버퍼"보다 사용하기 쉬운 것이 이상적임); 그리고 함수형 프로그래밍 언어와는 별도로 Java를 공부하기 전에 친숙 함으로 인해이 판단을 내리지 않습니다. 자신이 이미 잘 알고있는 것에 의해 주로 판단하는 사람들은 이것이 Java의 장점이라고 생각할 수 있습니다 (물론 Java 나 C #에 익숙하지 않은 한 :-). 필자는 불변의 문자열이 훌륭한 아이디어라고 생각합니다. (Java가 독립적으로 이미 파이썬에 있던 아이디어를 재창조했다고 생각하지는 않습니다.) "변경 가능한 문자열 버퍼"유형도 마음에 들지 않습니다. (그리고 Java 자체의 "문자열 버퍼"보다 사용하기 쉬운 것이 이상적임); 그리고 함수형 프로그래밍 언어와는 별도로 Java를 공부하기 전에 친숙 함으로 인해이 판단을 내리지 않습니다. 불변의 문자열은 훌륭한 아이디어라고 생각합니다 (그리고 Java가 독립적으로 이미 파이썬에 있던 아이디어를 재발 명했다고 생각하지는 않습니다). "변경 가능한 문자열 버퍼"유형도 신경 쓰지 않을 것입니다. 이상적으로 Java 자체의 "문자열 버퍼"보다 사용하기 쉬운 것이 좋습니다.); 그리고 함수형 프로그래밍 언어와는 별도로 Java를 공부하기 전에 친숙 함으로 인해이 판단을 내리지 않습니다. 불변의 문자열은 훌륭한 아이디어라고 생각합니다 (그리고 Java가 독립적으로 이미 파이썬에 있던 아이디어를 재발 명했다고 생각하지는 않습니다). "변경 가능한 문자열 버퍼"유형도 신경 쓰지 않을 것입니다. 이상적으로 Java 자체의 "문자열 버퍼"보다 사용하기 쉬운 것이 좋습니다.); 그리고 함수형 프로그래밍 언어와는 별도로 Java를 공부하기 전에 친숙 함으로 인해이 판단을 내리지 않습니다.모든 데이터는 불변입니다. 알고있는 모든 언어에는 가변 문자열이 있었지만 Java에서 불변 문자열 아이디어를 처음 보았을 때 (파이썬을 배우기 전에 잘 배웠습니다), 즉시 나를 훌륭하게 맞았습니다. 고급 프로그래밍 언어의 참조 의미론 (기계에 더 가깝고 C와 같은 응용 프로그램과는 다른 언어에 가장 적합한 값 의미론과는 대조적으로) 일류의 내장 문자열 (예 : 결정적) 데이터 유형.

루비는 기본 시맨틱에 몇 가지 장점이 있습니다. 예를 들어 파이썬의 "리스트 대 튜플"을 제거하면 미묘한 차이가 있습니다. 그러나 대부분 점수는 (단순히 크고 단순하고 미묘한 영리한 구별은 눈에 띄는 마이너스 차이로 유지) 루비에 대한 것입니다 (예 : 폐쇄 및 반 개방 간격, a..b 및 a. .B [누구가 있다고 주장하고자 분명 , 바보 -?)하는 인] -! 이럴 물론). 다시 말하지만, 언어의 핵심에서 유사하지만 미묘하게 다른 많은 것들을 마이너스가 아닌 플러스로 생각하는 사람들은 물론 내가 세는 방법에서 이러한 "다른 방법으로"를 계산할 것입니다.

생각으로 이러한 비교에 의해 현혹하지 마십시오 두 언어는 매우다른, 당신을 염두에 두십시오. 그렇지 않습니다. 그러나 "capelli d' angelo"와 "spaghettini"를 비교하라는 요청을 받으면,이 두 종류의 파스타는 다른 사람과 구별 할 수없고 당신이 준비하고 싶은 접시에서 서로 바꿔 먹을 수 있다는 점을 지적한 후에 필연적으로 길이와 지름이 눈에 띄게 다른 방법, 가닥의 끝이 다른 경우가 아닌 테이퍼 방식 등의 현미경 검사로 이동하는 이유-개인적으로 카펠 리가있는 이유를 시도하고 설명하기 위해 '모든 종류의 국물에 파스타로 안젤로이지만 파스타와 같은 스파게티를 선호합니다. 오래된 얇은 파스타 형태 (올리브 오일, 다진 마늘, 다진 고추, 잘게 썬 멸치, 예를 들어-마늘과 후추를 얇게 썰지 않고 얇게 썰어 놓으면 스파게티 니의 더 얇은 소멸보다는 스파게티의 건강한 몸을 선택해야합니다. 또는 심지어-나는 이단자입니다 ...! -라이트 민트 ...] 잎-접시를 제공하기 전에 마지막 순간에). 죄송합니다. 해외 여행 중이며 잠시 파스타를 먹지 않은 것으로 나타났습니다. 그러나 비유는 여전히 꽤 좋습니다!-) achoview를 포기하고 대신 신선한 봄 바질을 추가하는 것이 좋습니다. -라이트 민트 ...] 잎-접시를 제공하기 전에 마지막 순간에). 죄송합니다. 해외 여행 중이며 잠시 파스타를 먹지 않은 것으로 나타났습니다. 그러나 비유는 여전히 꽤 좋습니다!-) achoview를 포기하고 대신 신선한 봄 바질을 추가하는 것이 좋습니다. -라이트 민트 ...] 잎-접시를 제공하기 전에 마지막 순간에). 죄송합니다. 해외 여행 중이며 잠시 파스타를 먹지 않은 것으로 나타났습니다. 그러나 비유는 여전히 꽤 좋습니다!-)

그래서 파이썬과 루비로 돌아가서 우리는 두 가지 큰 문제를 겪습니다 (언어의 관점에서-라이브러리를 떠나고 도구 및 환경과 같은 다른 중요한 보조 도구, 각 언어를 포함 / 확장하는 방법 등) 지금은-어쨌든 각 언어의 모든 구현에 적용되지는 않습니다 (예 : Jython vs Classic Python은 Python 언어의 두 가지 구현입니다!) :

  1. 루비의 이터레이터와 코드 블록 대 파이썬의 이터레이터와 생성기;

  2. 모든 내장 클래스를 포함하여 기존 클래스를 "재 개설"하고 런타임에 동작을 변경하는 기능을 포함하여 Ruby의 TOTAL, 무제한 "동 적성"(파이썬의 방대하지만     제한된 동 적성) 내장 클래스 및 해당 인스턴스

개인적으로, 나는 1 번의 세탁을 고려 합니다 (차이가 너무 깊어서 다른 사람들이 접근하고 다른 것을 수정하는 것을 쉽게 볼 수 있었지만, 개인적으로는 플러스와 마이너스가 거의 균등하게 올라갑니다). 그리고 [2] 중요한 문제-루비를 "팅킹"에 훨씬 더 적합하게 만드는 문제이지만, 대량 생산 응용 프로그램에 사용하기에는 파이썬이 더 적합합니다. 두 언어가 대부분의 다른 언어보다 훨씬 동적이기 때문에 결국 내 POV와의 주요 차이점이 그에 달려 있어야한다는 점에서 재미 있습니다. 여기는 물론 "Spinal Tap"입니다. 루비에서나는 할 수있다 ! 즉, 내장 문자열 클래스를 동적으로 변경하여

a = "Hello World" 
b = "hello world" 
만약 a == b 
    "같음! \ n"인쇄 
그밖에 
    "다른!"인쇄 
종료
 

"같음"으로 인쇄합니다. 파이썬에서는 내가 할 수있는 방법이 없습니다. 메타 프로그래밍의 목적, 실험 프레임 워크를 구현하는 등의 경우, 루비의 놀라운 동적 능력은 매우 정치. 그러나 우리가 많은 사람들이 개발하고 다양한 소스의 모든 종류의 라이브러리를 포함하여 더 많은 사람들이 유지 관리하고 클라이언트 사이트에서 프로덕션에 들어가야하는 대규모 응용 프로그램에 대해 이야기하고 있다면 ... 매우 역동적 인 언어, 대단히 감사합니다. 나는 어떤 라이브러리가 자신의 문자열에 의존하는 다른 관련되지 않은 다른 라이브러리를 무의식적으로 깨뜨리는 아이디어를 혐오합니다. 대규모 프로그래밍. 어떤 모듈이라도 다른 "비밀하게"의 행동에 영향을 주도록함으로써,

그러한 대규모 응용 프로그램에 Ruby를 사용해야한다면 코딩 스타일 제한, 많은 테스트 (모든 것이 변경 될 때마다 다시 실행되어야 함-전혀 관련이없는 것 등)에 의존하려고합니다. 이 언어 기능의 사용을 금지합니다. 그러나 처음에는 기능을 갖지 않는 것이 더 좋습니다. 제 생각에 특정 수의 내장 기능이 "네일 다운"될 수 있다면 파이썬 자체가 응용 프로그램 프로그래밍을위한 더 나은 언어가 될 것입니다. 예를 들어, len("ciao")누군가가 모듈 len에서 이름의 바인딩을 변경했는지 여부에 대해 걱정하지 않고 4 __builtins__입니다. 결국 파이썬이 내장 기능을 "네일 다운"하기를 바랍니다.

그러나 내장 리 바인드 리 바인딩은 더 이상 사용되지 않으며 파이썬에서는 거의 사용되지 않기 때문에 문제는 사소합니다. Ruby에서는 다른 언어 의 너무 강력한 매크로 기능 (예 : Dylan과 같은)이 비슷한 위험을 내 자신의 견해로 제시하는 것처럼 나를 주요하게 생각합니다 (Python이 강력한 매크로 시스템을 얻지 않기를 바랍니다. "사람들이 언어 자체에 포함 된 고유 한 도메인 별 작은 언어를 정의하게한다"라는 매력과는 상관없이 IMHO는 응용 프로그램 프로그래밍에 파이썬의 훌륭한 유용성을 손상시킬 것입니다. 모든 프로그래머의 마음에 숨어 있습니다 ...).

알렉스


나는 루비와 파이썬에 대한 전반적으로 비교적 편견이없는 훌륭한 개요이기 때문에 이것을 대답으로 수여했다. 언어가 작동하고 작동 하지 않는 방법을 설명합니다 .
Xeoncross 2016 년

27

행운을 빕니다

주어진 예제 설명 중 어느 것도 객관적이거나 테스트 가능한 것은 아닙니다. 그들은 모두 과대 광고와 의견입니다.

... 단순성과 생산성 ... 더 빠르게 ...보다 효과적으로.

시도 해봐

당신이하고 싶은 종류의 작은 샘플 프로젝트를 가지고 관심있는 모든 언어로 시도하십시오. 그런 다음 객관적인 리뷰를 게시하면 모두 알 수 있습니다.


2
나쁜 생각은 아니지만 실제 환경에서는 작동하지 않습니다. 각 언어를 완전히 이해하는 데 시간을 들이지 않고서는 각 시스템이 제공 할 수있는 전체 디자인 패턴 문제와 이점을 예측할 수 없었습니다. 언어 자체에 대한 높은 수준의 이해를 위해서는 각 언어로 수개월의 작업이 필요할 것이라고 확신합니다. 차라리 타이어 전문가의 의견을 듣고 각 바퀴의 엔진을 몇 달간 깎는 것보다 타이어 전문가의 의견을 듣고 싶습니다. 그래도 좋은 후보자를 확보 한 후에는 확실히 할 것입니다.
Xeoncross 2016 년

1
@ Xeoncross : 시도하는 각 언어마다 경험이 향상되며 다른 언어로 활용할 수 있습니다. 언어로 뛰어 들기위한 4 개월은 결코 없어지지 않습니다. 언어가 정말 허약하다면 2 주도 채 걸리지 않습니다.
tdammers 2016 년

사실, 무언가를 만드는 데 몇 주 밖에 걸리지 않으며 언어는 일반적으로 다른 언어를 따르기 때문에 경험의 이점을 얻을 수 있습니다.
Xeoncross 2016 년

3
예, 아마도이 모든 언어를 사용하여 잘 맞는 것을 찾아보십시오. 그러나 문제는 새로운 언어를 사용할 때 처음에 사용했던 방식으로 사용하지 않는다는 것입니다. 당신은 이미 다른 문법으로 만 사용하는 방법을 알고있는 언어로했던 것과 똑같은 일을하게됩니다. 각 언어의 장점과 장점이 무엇인지 파악하는 데 약간의 시간이 걸립니다.
radix07

3
일반적인 목적으로 현대 언어 사이에 큰 차이 가 있다면 놀랍습니다 . 거기서 큰 소리로 말했습니다. 그리고 이탤릭체로 . 화염을 시작하자!
Steven A. Lowe

8

문제의 일부는 하나 이상의 언어에 대해 의미있는 의견을 말할 수있는 사람이라면 누구나 편견이있을 것입니다. 거의 40 년간의 프로그래밍에서 나는 셀 수없는 것보다 더 많은 언어로 일했습니다. 나는 그 언어들 중 상당수에 대해 당신에게 의견을 줄 수 있지만 (그들 중 일부는) 그 의견 중 어느 것도 편견이 없을 것입니다.

나는 직업에 적합한 언어를 사용하는 접근법을 취합니다. 웹 개발 에 대해 구체적으로 질문 하긴하지만 여전히 사진에 관심이 있다고 말하는 것과 같이 상당히 광범위한 범주입니다. 마이크로? 아스트로? PHP는 정서적으로 만족스러운 언어가 아니라는 데 동의하지만, 많은 고객에게 여러 가지 요소에 따라 올바른 언어이며, 떠나는 후 프로그래머가 사이트를 고칠 수있는 장기적인 능력은 아닙니다. 버스에 치면

다른 프로젝트에 관심이있는 프로젝트에 관심이있는 고객 유형을 살펴보고 흥미를 느끼도록 노력해야합니다.


글쎄, 나는 PHP에 능숙하기 때문에-나는 여전히 좋은 생활을 할 수 있기 때문에 계속 일할 것입니다. 나는 주로 내을위한 새로운 언어에 대해 생각했다 자신의 프로젝트. 내 삶에 풍미를 더하는 데 도움이되는 것. NLP, 텍스트 파싱, CMS, API, 스토리지 등 여러분이 생각할 수있는 거의 모든 웹 개발 작업을 수행합니다. 또한 많은 언어를 경험 한 사람은 하나의 디자인 프로세스를 가진 사람보다 편견 이 훨씬 적습니다.
Xeoncross 2016 년

아 그런 다음 "최고의 언어"유형 질문 인 Python에 대한 표준 답변을 드리겠습니다. "유용한 공백"을 무시하면 (가능하다), 그것은 나에게 완벽한 언어에 가깝다. 또한 Python API에는 놀라운 고품질 라이브러리가 많이 있습니다. 예 : NLTK, 자연어 툴킷 ( nltk.org ).
피터 로웰

아, 그러나 파이썬이 더 나은 이유는 무엇입니까? 대부분의 언어는 모두 동일한 툴킷을 공유합니다. 스레딩, 동시성, VM 요구 사항, 컴파일 / 통역, 지속성 등을 소개하는 언어 디자인입니다.
Xeoncross

파이썬은 아주 재미있게 프로그래밍 할 수 있습니다. 그것이 저에게 "더 나은"이유입니다. 코딩하기 위해 큰 IDE를 필요로하지 않을 정도로 간단합니다. 또한 객체, 함수형 프로그래밍 기능, 기존 라이브러리 / 프레임 워크 / 도구 및 많은 공개 / 무료 문서가 포함 된 번성하고 열정적 인 커뮤니티와 같은 흥미로운 기능이 많이 있습니다.
John Gaines Jr.

2
진실. 가장 간단한 설명은 파이썬이 제 뇌와 같은 방식으로 작동하며 더 생산성이 높아진다는 것입니다. 나는 "이제 어떻게 파이썬에서 이것을 할 것인가?" GIL (Global Interpreter Lock)은 약간의 문제 이지만 multitask 보다 다중 프로세스 상황 (특히 다단계 NL 처리 파이프 라인)을 더 자주 처리하기 때문에 나에게 큰 영향을 미치지 않습니다 . ctypes, Boost 등 새로운 외부 라이브러리에 액세스하기위한 다양한 인터페이스 옵션도 좋아합니다.
Peter Rowell

7

파이썬

가장 보편적이고 일반적인 목적은 물론 웹 프로그래밍의 경우 더 다양한 제품을 선택할 수 있습니다. 표준화 된 WSGI 인터페이스는 프레임 워크와 서버 간의 뛰어난 상호 운용성을 보장합니다. 주목할만한 Python 웹 제품 중 일부 :

  • Django — 고급 ORM, 템플릿 시스템, 양식 처리 등을 갖춘 본격적이고 성숙한 고급 프레임 워크입니다.
  • 트위스트 — 이벤트 중심 (비동기식) 네트워크 프로그래밍을위한 프레임 워크로 채팅, 소켓 서버, 웹 서비스에 사용할 수 있습니다.
  • 토네이도 — 또한 이벤트 중심 프레임 워크이지만 비동기 웹 서비스 용으로 설계되었습니다.

루비

루비는 또한 매우 보편적 인 언어입니다. 그러나 지금까지 가장 주목할만한 제품은 Ruby on Rails입니다. 그것은 많은 사람들에게 영감을주었습니다 (위에서 언급 한 장고 포함).

자바 스크립트

현재 JS의 유일한 서버 측 선택은 node.js입니다. 토네이도 및 트위스티드와 매우 유사합니다. 그러나 여전히 Django 또는 RoR과 비슷한 본격적인 프레임 워크가 부족합니다.

스칼라

기능적 언어이기 때문에 범용 웹 프로그래밍이 진행되는 한 대규모 병렬 컴퓨팅에 적합합니다. 예를 들어 FourSquare에서 사용하는 RoR에서 영감을 얻은 웹 프레임 워크 인 Lift가 있습니다.


비 차단 응답, 메모리 사용, 동시성 및 기타 요소와 같은 것은 웹 응용 프로그램을 강화하는 새로운 언어에 대한 시장에서 엄청나다는 것을 지적 할 가치가 있습니다.
Xeoncross

장고 +1 내가 그것을 배웠을 때 내 마음이 터졌다. 또는, 나는 그것을 배우고 파이썬과 동시에 배웠기 때문에 혼란스러워했다. 어느 쪽이든, 훌륭한 기술은 내가 찾기 어려운 "자유 시간"을 다시 방문하고 싶습니다.
zourtney

1
"... 여전히 본격적인 프레임 워크가 부족합니다"Express for Node를 확인하십시오 -expressjs.com
T. Stone

@T : 네, Express를 보았습니다. Django와 RoR의 장점 중 하나는 ORM입니다. Express에없는 것 같습니다.
vartec

3

최신 웹 프로젝트에서 이전에 웹 프로젝트 (빠른 시작)에 사용했기 때문에 PHP로 시작했지만 UTF-8 지원 및 동적 입력과 같은 언어에 많은 문제가있었습니다. 또한 Java 배경이 있으며 정적 타이핑 및 리팩토링 도구가 정말 좋습니다. Java는 PHP에 비해 성능이 좋습니다. 그러나 나는 또한 함수형 프로그래밍의 표현성을 좋아합니다.

스칼라와 플레이 프레임 워크

위의 경험을 통해 정적으로 유형이 지정되고 객체 지향 및 기능 프로그래밍을 모두 지원하며 웹 개발에 사용되는 다른 언어와 비교하여 성능이 우수합니다. 그러나 Java 및 서블릿의 웹 프레임 워크가 마음에 들지 않았으며 Scala 와 Java 를 모두 지원하는 Play 프레임 워크 를 발견 했으며 개발주기가 매우 빠릅니다. 파일을 저장하고 웹 페이지를 업데이트하십시오. 지난달 Scala & Play Framework에 매우 만족했습니다. 그러나 Play Framework의 스칼라 지원은 아직 성숙하지 않았으며 툴링도 지원하지 않습니다.

간단히 말해서 Scala를 프로그래밍 언어로, Play Framework를 웹 프레임 워크로 권장합니다.


플레이는 시원해 보이지만 실제로는 ( 실제로 ) 시운전 할 기회가 없었습니다. 비슷한 PHP 배경에서 나온 Lift 는 파악하기가 매우 쉽다는 것을 알았습니다 . 또한 플레이보다 조금 더 성숙한 것처럼 보이지만, 나는 스칼라에 너무 익숙하지 않아 결론을 내릴 수 없습니다.
yannis

3

실제로 세 가지 유형의 리소스를보고있을 것입니다.

  • 언어의 기본 사항을 설명하고 왜 사용하고 싶습니까?
  • 여러 언어를 비교하는 언어입니다.
  • 언어의 일부 측면을 비판하는 것.

이 두 가지 자원 모두 편향 될 수 있습니다.

  • 언어에 대해 설명 할 때 독자가 언어를 사용하도록 설득하기 위해 대부분의 시간을 노력하고 있습니다. 그래서 당신은 언어가 짜증 난다고 거의 말하지 않을 것입니다.
  • 여러 언어를 비교할 때는 항상 그 중 하나를 선호합니다.
  • 당신이 무언가를 비판 할 때, 중립적 인 것은 거의 불가능합니다.

중립 비교를 찾을 수는 있지만 작성하기는 매우 어렵습니다. 개인적으로 PHP를 비판하지 않고는 실제 언어와 PHP를 비교할 수 없습니다. 그리고 나는 중립적이지 못해서 혼자가 아니라고 확신합니다.


당신은 당신이 가진 것보다, 다른 언어의 개요를 원한다면 그들에게 자신을 배우고 , 그리고 많이 읽을 . 학습한다는 것은 언어의 기본을 알고 있지만 자신의 의견을 가질 수 있다는 것을 의미 합니다 . 이 언어의 장점과 단점을 설명 할 수있는 것보다 Ruby 설명서를 읽었 기 때문이 아닙니다.

이것은 연습에 시간 (몇 달 또는 몇 년)을 소비해야한다는 것을 의미합니다. 또는 많이 읽을 수 있습니다. 그러나 모순 된 것을 읽으십시오 . 어떤 사람이 PHP를 싫어하고 PHP가 최악의 언어 중 하나이며, 특히 Ruby, C # 또는 Java와 같은 실제 언어와 비교할 때 PHP가 훌륭하다는 말을하는 사람을 찾아보십시오. C #, Java보다 훨씬 빠르며 Ruby보다 훨씬 (정말 모르겠습니다).

한 가지 사항을 기억하십시오. 이미 언어를 잘 알고 있다면, 다른 언어를 배울 때 처음부터 매우 비판을받을 것 입니다. Windows를 싫어하는 Linux 사용자와 Linux를 싫어하는 Windows 사용자와 같습니다. 단지 리눅스 사용자가 Windows를 사용하는 방법을 모른다는 것입니다. 어느 쪽이 더 좋은지 올바르게 결정할 수있을 때보 다 충분한 경험을 얻은 후에 만 ​​가능합니다.


마지막으로 자주 잊어 버린 것 : 언어의 "주변"을 평가할 수있는 것도 매우 중요합니다.

  • 프레임 워크 (또는 가장 많이 사용되는 프레임 워크)가 얼마나 좋습니까?
  • 호스팅 서비스를 쉽게 찾을 수 있습니까? IDE에 감사하십니까?
  • 잘 작성된 써드 파티 라이브러리가 많이 있습니까?
  • 커뮤니티는 고도로 전문적인 개발자로 구성되어 있습니까, 아니면 일반적으로 프로그래밍이나 언어 자체에 대해 전혀 모르는 초보자가 있습니까?
  • 설명서가 상세하고 검색하기 쉽고 이해하기 쉽습니까?
  • 언어와 프레임 워크가 자주 업데이트됩니까?
  • 기타

전적으로 동의합니다. 내가 찾고 싶은 질문입니다. 당신 은 많이 읽는 것에 대해 언급 하고 있습니다. 그것이 제가하려는 일입니다. 제가 조사하고 싶은 언어에 대해 읽을 수있는 많은 자료가 필요합니다. 편견없는 검토를 할 수는 없지만 일부는 훨씬 더 균형이 잡혀 있으며 이것이 내가 원하는 전부입니다.
Xeoncross 2016 년

2

글쎄요, 당신의 기준 중 하나가 "작업하기 재미있다"고 생각되기 때문에, 편향된 정보를 찾고 싶을 것입니다. 무언가의 저자가 선택한 언어에 대해 열정적이라면 편향된 평가를 할 가능성이 매우 높습니다.

다른 방향에서 접근해야 할 수도 있습니다. 취미보다는 경력을 쌓는 것에 대해 말하는 것처럼 들릴 수도 있으므로, 직업 광고를 조사하고 흥미로운 기술 / 언어를 찾아서 조사해야 할 것입니다.

특정 목표를 가진 언어에 대해서는 많은 언어가 없습니다. 나열된 대부분의 언어는 일반적인 용도입니다. 예를 들어, Ruby 언어는 많은 작업에 적합한 범용 언어입니다. Rails 와 같이 프레임 워크를 추가 하면 꽤 구체적인 목표가 있습니다.


1

이것은 정확히 당신이 요구하는 것이 아니지만, 웹 개발 전문가의 틀에 박힌 나를 빠져 나갈 것을 찾고 있다면, 그 경험과 연락처를 여전히 활용하면서 Android 및 iPhone 앱을 작성할 수 있습니다. 클라이언트의 웹 사이트를 보완하는 앱을 판매 할 수있게되면 모바일 장치를 통해 점점 더 많이 액세스하는 인터넷 개발을 눈에 띄게 만들 수 있습니다.


그건 정말 나쁜 생각이 아닙니다. 또한 일러스트 레이터와 Photoshop에서 디자인 작업에 더 많은 시간을 할애 할 생각이었습니다. 여전히 웹 응용 프로그램 옵션에 대해 더 자세히 알고 싶습니다.
Xeoncross 2016 년

0

PHP의 한계에 도달 했습니까, 아니면 PHP의 한계에 도달 했습니까 ?

Drupal 을 조사 했습니까 ? 좋은 코딩 표준 및 사례를 강력하게 장려하는 PHP 기반 CMS 및 프로그래밍 프레임 워크입니다. (이전 직장에서 OSCommerce와 함께 일해야했지만 고통을 느낍니다.) PHP 기반이지만 순수한 PHP로 무언가를하는 "올바른"방법이 드루팔에서 올바른 방법이 아니라는 점은 다릅니다. 그리고 당신은 그것을 배우기 위해 좋은 학습 곡선을 가지게 될 것입니다. 그러나 언어 및 웹 개발로서 PHP의 기능에 대한 관점이 전체적으로 변경 될 수 있습니다.


마지막으로 Drupal (4 & 5)을 살펴 보니 다소 나빴습니다. 아마도 그들의 최신 버전은 이제 적절한 표준을 사용합니다. 그래도 속도가 느리기 때문에 멋진 프레임 워크를 사용하는 것이 좋습니다.
Xeoncross
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.