programing

파이썬 대 C#/.NET -- 대형 웹 애플리케이션을 개발하는 데 사용할 때 고려해야 할 주요 차이점은 무엇입니까?

topblog 2023. 8. 31. 23:34
반응형

파이썬 대 C#/.NET -- 대형 웹 애플리케이션을 개발하는 데 사용할 때 고려해야 할 주요 차이점은 무엇입니까?

현재 조직에서는 주로 SQL Server 2005/2008 백엔드, Java 모델/컨트롤러 프레임워크 및 ColdFusion 기반 뷰를 기반으로 하는 웹 애플리케이션을 제공하고 있습니다.우리는 새로운 프레임워크로 전환하기로 결정했고 내부 탐색 및 미니 프로젝트를 통해 Python과 C#/ 사이에서 선택의 폭을 좁혔습니다.그물.

먼저, 두 기술 모두 잘 작동할 것이라는 것을 알고 있으며, 주요 차별화 요소(및 관련된 장단점)를 찾고 있습니다.이 언어들은 공통점이 많고 그렇지 않은 것도 많습니다. 저는 그 언어들의 주요 차이점에 대한 당신의 견해를 찾고 있습니다.

찾고 있는 트레이드오프/차별화 요소의 예:

보다 적은 코드로 더 많은 것을 달성할 수 있고 Python으로 더 창의적일 수 있는 것처럼 보입니다.NET은 다른 사람이 작성한 코드를 이해하고 수정하는 것이 더 쉬울 수 있습니다.

유용한 추가 정보:

저희 엔지니어링 팀은 약 20개의 대규모 팀으로 구성되어 있으며, 5-7명의 소규모 팀에서 근무하고 있으며, 그 중에서 사람들이 자주 드나듭니다.우리는 새로운 코드를 쓰는 만큼 다른 사람이 쓴 코드를 작업합니다.

파이썬으로 우리는 장고 루트를 갈 것이고, 로 갈 것입니다.NET MVC2로 하겠습니다.당사의 서버는 IIS를 실행하는 Windows 서버입니다.

ColdFusion에 대해 우리가 좋아하는 몇 가지 사항은 쿼리 작업이 매우 쉽고 수정 사항을 재부팅하거나 수정 사항을 다른 사람의 방해 없이 "핫 배포"할 수 있다는 것입니다.

저는 이 두 언어와 관련된 다른 X vs Y 스레드 중 일부를 읽었고 매우 유용하다는 것을 알았지만 Python과 정면으로 맞서고 싶습니다.직접 그물을 치다.

".NET"은 언어가 아닙니다.아마도 Python vs.C# 또는 Python/Django 대 C#/ASP.NET(또는 원하는 "웹워크"를 선택하십시오. Python과 " 모두를 위한 다양한 솔루션이 있습니다.NET"를 선택하고 박쥐의 장고 또는 MVC2를 선택하면 더 나은 실행 가능한 옵션을 심각하게 제한할 수 있습니다.파이썬 대 "에 대한 카운터로서.NET": Iron Python (Python "안에)이 있습니다.NET")

고려할 사항:개발자는 언어에 대한 편안함과 Python 및 "에서 동일한 언어인 경우."NET"을 선택하면 개발 소요 시간을 고려하여 이를 최소화하는 언어/"웹워크"를 선택할 수 있습니다(다시 말씀드리지만, 이전의 제약 조건일 필요는 없습니다).

[크기 조정 가능한] 프로젝트에서는 유닛/통합 테스트가 필수적이지만 정적으로 입력된 언어(C#/F#)를 사용하면 유형과 관련된 "멍청한 버그"의 수를 크게 줄일 수 있습니다.

운동장을 열어보세요 :-)

주석에 대한 편집:

그러면 언어를 비교하는 것입니다.

이 경우, C#은 단일 상속/인터페이스 클래스 기반 OO를 사용하는 매우 지루한 명령형 정적 입력 언어입니다(그러나 완전히 석기 시대인 Java보다 몇 가지 더 깔끔한 트릭).이는 Python과 동일한 기본 유형의 OO이며 정적/동적 비트를 제외하면 두 언어 모두 강력하게 입력됩니다(역학은 다르지만 언어 스펙트럼에서 최종 결과는 매우 유사합니다).사실 python은 MI를 가지고 있지만, python에서는 'lambda' 키워드를 사용하는 것으로 덜 받아들여지고, python은 동적으로 입력되기 때문에 인터페이스/유형 계약을 결정하기 위한 컴파일 시간 지원이 없습니다(그러나 이를 제공하려는 일부 모듈이 있습니다).

파이썬을 배우거나 알 수 있다면 C#을 배우거나 알 수 있습니다.그것은 패러다임의 변화가 아닙니다.여기에 있는 일부 키워드, 중괄호, 다른 기본 라이브러리, 다른 환경(REPL로 이동하려면 일부와 싸워야 하지만 VS에서 실행 가능)을 의미합니다.개발자들이 그것을 어떻게 좋아하는지/배우고/사용하는지는 또 다른 이야기입니다.이전에 C#을 필수적으로 불렀지만, 기본 C# 구문이 매우 절차적이지만 LINQ/IE 숫자 확장 및 위임 없이 닫기와 같은 "기능과 유사한" 기능이 추가된 것을 보니 좋습니다. 다시 한 번 파이썬(표현식, 중첩 함수, 문장/표현식 구분)과 비슷합니다.

새로운 '다이나믹'은 선을 흐리지만(이전의 C# 버전에서 반영해야 했던 거의 동일한 장소에서 좋은 사용법은 거의 없다), 이것은 사실이 아니지만, 요점은 그것이 단지 "최상의/유일한 방법"인 경우를 제외하고는 일반적으로 "잘못된 방법"이라는 것입니다.즉, 'var' 변수의 유형은 컴파일 시에 알려져 있으며 동적 타이핑과 관련이 없으며 모두 유형 추론입니다.F#/SML 및 Haskell과 같은 일부 언어는 정적 타이핑을 유지하면서 "모든 추악한 유형 선언"의 필요성을 제거하는 훨씬 더 강력한 유형 추론을 가지고 있습니다(허용되는 유형 또는 유형 집합에 명시적으로 주석을 달면 의도가 더 명확해질 수 있지만).

개인적으로, 다른 모든 것들을 제외하고, 저는 정적으로 타이핑된 언어를 사용할 것입니다.C#을 말하는 것이 아니라(그리고 Java를 말하는 것도 아닙니다!), 정적으로 입력된 언어는 유형 오류를 최상위로 밀어내고 사전에 명시적인 계약을 요구할 수 있습니다(이것은 저에게 큰 승리입니다).여러분이 몇몇 깔끔한 역동적인 묘기들을 놓치는 동안, 거의 항상 같은 행동을 목표 언어로 할 수 있는 더 나은 방법이 있습니다. 여러분은 단지 그 언어의 관점에서 생각하고 스크류드라이버를 나사에 사용하고 망치를 못에 사용하면 됩니다.예를 들어, (ab)local() 또는 global()의 사용에 의존하는 Python 코드를 C#에 있는 그대로 가져올 것으로 예상하지 않습니다.

"다운사이드"에서 대부분의 정적으로 입력된 언어(여기서 C#)는 명시적인 컴파일 우선이 필요합니다(그러나 이것은 예쁜 어셈블리를 만들기 때문에 나쁘지 않습니다). 그리고 "REPL"과 같은 도구는 1등 시민으로 간주되지 않습니다(F#/VS2010에서는 1등 시민입니다).또한 Python/C#에 대한 필수 라이브러리가 있고 다른 언어에서는 사용할 수 없는 경우, 이 라이브러리가 다른 언어보다 한 언어를 선택해야 하는 이유를 결정하는 요인이 될 수 있습니다.

저는 이것에 대해 Quora에 매우 포괄적인 답변을 썼습니다.Python은 C#과 비교했을 때 어떻습니까?

TL;DR

  • 답은 크지만 (바라건대) 꽤 포괄적입니다.저는 C# /에서 프로그래밍했습니다.거의 10년 동안 NET을 해왔기 때문에 저는 그것을 정말 잘 알고 있습니다.그리고 저는 현재 쿼라에서 파이썬으로 ~7개월 동안 프로그램을 하고 있기 때문에, 제가 그것을 꽤 잘 알고 있기를 바랍니다.

  • Python은 학습 편의성, 교차 플랫폼 개발, 오픈 소스 라이브러리의 가용성에서 승리했습니다.

  • C# 수상: 표준 라이브러리, 언어 기능, 개발 프로세스 및 도구, 성능, 언어 진화 속도

  • 대략 균등: 구문(Python은 가독성이 더 좋고, C#은 더 일관된 구문), 채택.

또한 이러한 동작을 수행하기 전에 실행 시간을 비교해야 하며 언어 기능에 국한해서는 안 됩니다.Python은 인터프리터 Cython을 통해 실행되며, 여기서 C#은 기본 구현의 CLR에서 실행됩니다.

멀티태스킹은 모든 대규모 프로젝트에서 매우 중요합니다.NET은 스레드를 통해 이 문제를 쉽게 처리할 수 있습니다.또한 IIS(ASP.NET)의 작업자 프로세스의 이점을 활용할 수 있습니다.Cython은 GIL...코드를 실행하기 전에 모든 스레드가 획득해야 하는 잠금 때문에 진정한 스레드 기능을 제공하지 않습니다. 진정한 멀티태스킹을 위해서는 여러 프로세스를 사용해야 합니다.

ASP를 진행할 때.단일 작업자 프로세스(ASP)의 IIS에 NET 응용 프로그램입니다.NET은 여전히 스레드화를 활용하여 서로 다른 코어에서 여러 웹 요청을 동시에 처리할 수 있습니다. 여기서 Cython은 서로 다른 코어에서 병렬 컴퓨팅을 수행하기 위해 여러 작업 프로세스에 의존합니다.

이 모든 것은 윈도우에서 Python/Django 앱을 어떻게 호스팅할 것인지에 대한 큰 질문으로 이어집니다.우리 모두는 윈도우에서 포크링 프로세스가 리눅스보다 훨씬 더 비싸다는 것을 알고 있습니다.따라서 Python/Django 앱을 호스팅하는 것이 이상적입니다. 최상의 환경은 윈도우가 아닌 리눅스일 것입니다.

Python을 선택한다면, Python을 개발하고 호스팅하기에 적합한 환경은 Linux일 것입니다.그리고 만약 당신이 윈도우에서 오는 나와 같다면, 파이썬을 선택하는 것은 리눅스의 새로운 학습 곡선을 도입할 것입니다.요즘은 많이 힘들지는 않지만...

업계의 주요 문제는 파이썬의 동적 특성입니다.왜냐하면 당신은 고정된 타이핑 언어를 사용하는 안전성을 가지고 있기 때문입니다.

하지만 이제 우리는 PyCharm과 같은 현대적인 IDE를 가지고 있습니다.코드를 입력하면 pylint와 pep8 "코드 검사"와 "스타일 가이드 검사"가 통합됩니다.그것은 가장 어리석은 오류를 제거합니다.이제 파이썬에서도 거의 동일한 안전성을 확보했습니다.

다른 하나는 "정적 유형 검사"가 필요한 경우 필요할 때 직접 수행해야 한다는 것입니다.그것이 비단뱀의 실용적인 본성입니다.

GIL이 문제지만, 당신은 gevent 또는 ZMQ를 사용하여 일종의 스레드화를 수행할 수 있습니다.하지만 PyPy STM에서 진행 중입니다.

파이썬은 거의 모든 곳에서 실행되며 다양하고 대부분 호환되는 런타임을 선택할 수 있습니다(위키백과 12개).위키백과 파이썬 인터프리터 목록

언급URL : https://stackoverflow.com/questions/3420594/python-vs-c-net-what-are-the-key-differences-to-consider-for-using-one-to-d

반응형