문제

나는 현대적인 역동적 인 언어 Koolaid를 마시고 싶어서 Michael Foord의 블로그와 팟 캐스트의 모든 것을 믿었습니다. 나는 그의 책을 샀고 그 일부를 읽었습니다. 1 년 정도 전에 기존의 대형 앱 (다른 사람을위한 것이었지만 실제로는 사용하지는 않았지만).

이제 몇 가지 .NET 객체 (Custom, C#-Authored Objects)에서 몇 가지 메소드를 호출하고 몇 개의 문자열을 만들고 파일 작성 등에 몇 가지 방법을 호출 할 수있는 상당히 간단한 코드 생성 작업을 수행해야합니다.

이것을 시도한 경험은 황제가 옷을 입지 않았다는 것을 알 수있는 유일한 사람이라고 생각하는 어린 소년처럼 느끼게합니다. Ironpython을 사용하고 있다면 다음과 같은 측면을 어떻게 처리하는지 알고 있습니다.

  • 코드 편집 - .NET 프레임 워크를 사용하십니까? 없이 Intellisense?
  • 리팩토링 - 나는 '리팩토링'의 부하가 언어 관련 번화 작업에 관한 것이라는 것을 알고 있습니다. 따라서 Python이 충분히 가벼운 경우에는 필요하지 않지만 Rename과 같은 것은 저에게 고품질 코드를 반복적으로 개발하는 데 필수적인 것으로 보입니다. 언어.
  • Crippling Startup Time- 해석 된 언어에 대해 좋은 것으로 추정되는 것 중 하나는 컴파일 시간이 부족하다는 것입니다. 불행히도 C# 응용 프로그램을 컴파일하고 IPY가 시작할 수있는 것보다 빠르게 시작할 수 있습니다.
  • 대화식 해킹 - IPY 콘솔/REPL은 이에 적합한 것으로 간주되지만 대화식으로 도착하여 파일로 유지하는 코드를 가져 오는 좋은 방법을 찾지 못했습니다. 콘솔에서 잘라 내고 붙여 넣기 비참한. 그리고 콘솔은 가져온 .NET 어셈블리에 대한 참조를 보유하고있는 것으로 보이므로 C# 작업에서도 작업 할 경우이를 종료하고 다시 시작해야합니다. LinqPad와 같은 C#을 해킹하는 것은 물건을 시험해 볼 수있는 훨씬 빠르고 쉬운 방법으로 보입니다. 콘솔을 사용하십니까?
  • 디버깅 - 여기 이야기는 무엇입니까? 나는 IPY 팀의 누군가가 명령 줄 취미 프로젝트를 진행하고 있다는 것을 알고 있지만, 즉시 명령 줄 디버거에 끌리지 않는다고 가정 해 봅시다. 작은 파이썬 스크립트의 디버거가 필요하지 않지만 예를 들어 스크립팅 장치 테스트에 IPY를 사용해야합니다.
  • 단위 테스트 - 동적 언어가 이것에 좋을 수 있음을 알 수 있지만, IDE 테스트 런너 통합 (Resharper 등)이 있습니까? Foord Book에는 이것에 대한 장이 있습니다. 나는 아직 제대로 읽지 않았다는 것을 인정하지만, 명령 프롬프트에서 콘솔 모드 테스트 런너를 운전하는 것이 포함 된 것 같습니다. TestDriven.net 또는 Resharper와 같은 통합 테스트 러너.

나는 정말로이 물건을 믿고 싶다. 그래서 나는 여전히 내가 뭔가를 놓친다는 가정을하고있다. 나는 다른 사람들이 IPY를 어떻게 다루고 있는지 알고 싶습니다. 특히 그들이 15 년의 도구 개발을 잃어버린 것처럼 느끼지 않는 방식으로 그것을하고 있다면 특히 도구 개발을 잃었습니다.

업데이트 : (2010 년 7 월)이 질문은 두 가지 공식이 있기 때문에 꽤 날짜가 있습니다. vs를위한 Ironpython 도구 그리고 Pycharm 둘 다 많은 약속을 보여주고 내가 썼을 때 주변에 없었습니다. 대답 한 모든 분들께 감사드립니다. 행복한 분들에게 없이 자동 리팩토링 도구는 자동 리팩토링이 우수한 IDE를 사용하지 않는 것이 좋습니다. 당신이 가지고 있으면, 당신은 왜 당신이 당신이 Find-Replace에 만족했다고 생각했는지 궁금해하고, 다시는 일하지 않고 일하고 싶지 않을 것입니다. 다른 것이 없다면, 잘못된 텍스트를 바꾸는 것에 대해 걱정하지 않고 식별자의 이름을 즉시 바꿀 수있는 능력은 이름을 지정하는 것에 대한 전체 접근 방식을 변경합니다.

도움이 되었습니까?

해결책

do you use the .NET framework without Intellisense?

예. 나는 Ironpython과 함께 EMAC를 사용합니다. "M-/"는 나에게 충분합니다. SDK에 대한 정보가 실제로 필요할 때 때때로 반사판과 MSDN으로 전환합니다.

Refactoring

당신은 실제로 "Refactoring"이라고 말했을 때 실제로 "자동 리팩토링"을 의미합니다. 코딩하는 동안 많은 리팩토링을합니다. 일부 자동화를 사용하면 더 나을 수 있습니다. 그러나 나는 수동 리팩토링으로 괜찮습니다. 또한 더 많은 테스트를 포함하도록 강요합니다. 나는 리팩토링 기능을 광범위하게 사용하는 IDE를 사용하지 않습니다. 아마도 내가 고통받지 않는 이유 일 것입니다. 간단한 검색 및 재구점은 나에게 괜찮습니다.

Crippling startup time

그렇습니다. 이것은 나의 주요 고통입니다.이 사건은 4G RAM으로 3GHz 쿼드 코어에서 일하고 있습니다. 359 개의 테스트 케이스를 실행하는 데 50 대가 걸립니다. 그 시간의 절반 (25 초)은 시작 시간입니다 !! Ironpython은 큰 모듈을 가져올 때 매우 무거운 처리 작업을 수행하는 것 같습니다. 나는 이제이 고통을 완화하기 위해 내 테스트를 부분에 뱉을 계획이다.

Interactive hacking - Do you use the console?

나는 가끔 adhoc 아이디어를 시도하고 싶을 때 가끔 콘솔을 사용합니다. 문제가 없습니다. 그러나 대부분의 시간은 내 생각을 단위 테스트에 썼습니다.

Debugging - what's the story here?

디버깅이 브레이크 포인트 및 가변 검사를 의미하는 경우. 나는 그 물건에 대해서만 인쇄문을 사용합니다. 제가 작업하고있는 응용 프로그램의 종류는 적어도 10 년 동안 살고 계속 유지되고 있습니다. 결함이있는 코드를 처리하려면 이해할 수있는 코드, 단위 테스트 및 광범위한 로깅의 세 가지만 베팅합니다.

Unit testing

나는 당신이 언급 한 도구에 가깝지 않습니다. UnitTest.textTestrunner 만 사용하십시오. 끔찍한 스타트 업 시간 외에도 다른 불만이 없습니다.

** 업데이트 **

경이로운 결과로 IPY 2.6B1로 업그레이드를 마칩니다. 시작 시간은 25 초에서 6s로 줄이고 전체 테스트 시간은 50 대에서 16s로 줄어 듭니다 !!!

놀라운 !

다른 팁

Visual Studio 2010 용 Ironpython 도구는 어떻습니까?

Ironpython 도구는 Python 코드 편집기, 파일 기반 프로젝트 시스템 및 대화식 Python 통역사, 모두 Visual Studio 2010 내부 및 무료로 제공합니다. http://ironpython.net/tools/

이 애드 인은 대부분의 포인트를 다룰 것이라고 생각합니다.

도움이되기를 바랍니다.

패트릭

Ironpython은 훌륭한 솔루션이지만 Windows 용 Cpython으로 계속 돌아갑니다. 왜요 ?

내 경험상 Windows에서 Cpython, Mac OS/X 및 *Nix는 사실상 동일합니다. 각 환경에서 거의 모든 "배터리"를 사용할 수 있습니다. Linux에서 응용 프로그램을 자주 개발하고 Windows 서버로 배송합니다. 스레딩과 관련된 몇 가지 문제가 문제가 없었습니다.

반면에 Ironpython은 .NET 프레임 워크 주변의 파이썬 언어 래퍼입니다. C#보다 사용하는 것이 훨씬 더 좋지만 그게 전부입니다. 내 Cpython 프로그램은 상당한 재 작업 없이는 작동하지 않습니다. Ironpython 용 배터리는 다릅니다.

.NET에서 생산적이라는 목표라면 IPY는 아마도 괜찮을 것입니다. 그러나 휴대용 파이썬 기술을 찾고 있다면 피할 것입니다.

Pydev를 사용하여 Ironpython 코드를 작성하고 있습니다. pydev 내에서 (철) Python 스크립트를 실행할 수 있도록 .NET 특정 코드를 가능한 한 많이 분리하려고합니다. Pydev 덕분에 찾을 수있는 Pylint를 사용할 수 있습니다. http://www.logilab.org/857. PYDEV의 최근 버전은 파일 또는 프로젝트 기준에 따라 통역사를 구성 할 수 있습니다. 따라서 통역사를 Ironpython에서 Cpython으로 쉽게 전환 할 수 있으며 그 반대도 마찬가지입니다. 이런 식으로, 나는 내 코드가 Python 구현 사이에 휴대 할 수 있음을 알 수 있습니다. (내가 사용하지는 않지만 Jython 2.5 RC도 Pydev에서도 사용할 수 있습니다.)

Python과 Ironpython 2.5 호환 코드가 있으면 Pydev에서 리팩토링을 사용할 수 있습니다. http://pydev.sourceforge.net/refactoring.html.

Ironpython Studio는 Ironpython 2.X를 지원한다면 좋은 선택이 될 것입니다. 그러나 슬프게도 그렇지 않습니다.

Pydev, Wing, Pycharm 및 Ironpython 도구는 모두 Ironpython의 .NET에 대한 IntelliSense를 지원합니다. SharpDevelop은 또한 Ironpython에 대한 Intelsense가 있다는 느낌이 들었습니다.

시작 시간은 Ironpython 2.6에서 2.7에서 다시 개선되었습니다. 그러나 여전히 Cpython보다 상당히 느립니다.

자전거 수리공과 로프는 파이썬을위한 두 가지 인기있는 자동 리팩토링 도구입니다. 나는 그들 중 하나에 대한 필요성을 찾지 못했습니다.

PDB (Python Standard Library Debugger)는 Ironpython과 함께 작동합니다. Visual Studio 용 Pydev, SharpDevelop 및 Ironpython 도구는 모두 Ironpython의 디버깅을 지원합니다.

나는 통합 테스트 도구를 사용했습니다 (Wing은 우수한 UnitTest 지원을 지원합니다. SharpDevelop Suppless SharpTest 및 INOTTEST2, PYDEV 및 PYCHARM은 아마도 유닛 테스트 통합이 우수 할 것입니다). 명령 줄에서 테스트를 실행하는 것이 좋습니다. UnitTest2는 자체 테스트 수집 / 실행 코드를 작성할 필요가 없으므로 이에 적합합니다.

나는 대화식 통역사를 실험에 크게 사용하고 때로는 수프 업 껍질로 사용합니다.

나는 최근에 다양한 것들을 위해 프로젝트에서 Ironpython (및 일반적으로 DLR)을 광범위하게 사용하고 있습니다. 몇 가지 예 :

  • PY 스크립트를 사용하여 템플릿 렌더러 (Excel, Word, HTML-> PDF)로 전달되는 컨텍스트 변수를 빌드하고 변환하는 템플릿을 기반으로 문서 생성기를 만들었습니다.
  • 특수 규칙 엔진의 표현 평가자로서. 스크립트는 데이터베이스 테이블의 열에 저장되고 런타임에 평가되어 적용되는 규칙을 결정합니다.
  • ETL 엔진의 단계로. 기본적으로 Excel 파일을 읽을 수있는 몇 가지 구성 요소가 있으며 Python 스크립트를 사용하여 데이터를 변환하고 데이터베이스를 채우기 위해 nhibernate 엔티티를 만듭니다.
  • C# 구성 요소에 대한 동적 구성 스크립트.
  • 큰 데이터 세트에서 만들어야하는 일부 표시기에 대한 계산 엔진. 평행 연장을 사전 컴파일 된 스크립트와 결합하고 있는데, 지금까지 성능이 좋습니다.

그런 것들. 경로와 참조 세트를 사용하여 엔진이 올바르게 구성되면 기본적으로 스크립트를 사용할 수 있습니다.

이러한 거의 모든 것들이 ASP.NET MVC 응용 프로그램에서 실행 중이며 지금까지는 훌륭합니다. 스크립트 스코프와 같은 일부 구성 요소가 스레드 안전이므로 컨트롤러 등의 IOC 컨테이너 (예 : Windsor) 내부에있는 구성된 엔진을 공유 할 수 있음을 발견했습니다.

편집자에 관해서는, 나는 대부분의 시간에 편집했다. 빠른 편집은 문제가되지 않지만 VS 2010 Python 편집기는 약간 불안정하는 경향이 있습니다.

Ironpython을 사용하는 것은 나 자신을 위해 빠른 프로토 타입을 만드는 것으로 제한되어 있으므로 너무 많이 말할 수는 없습니다. 그러나 Ironpython과 관련된 IDE를 찾고 있다면 Ironpython Studio 통과 가능합니다. 그것은 당신에게 지능적인 기능을 제공 할 것이지만, 때때로 약간 벗겨지기 때문에 MSDN 문서 창을 아직 닫지 마십시오. 다른 .NET 프로젝트와 마찬가지로 대화식 디버깅을 할 수 있습니다. 또한 GUI를 그렇게 만드는 것을 선호한다면 Visual Studio 2008 Forms Designer를 지원합니다. 시도하지는 않았지만 TestDriven.net을 사용하여 Nunit 테스트 실행을 지원할 수도 있습니다.

안타깝게도 VS 2008에서 제공하는 이름과 기타 리팩토링 기능은 지원되지 않은 것으로 보입니다.

테스트 스크립트를 실행하기 위해 임베디드 환경에서 IPY를 사용하고 있습니다.

1 & 2. 당신은 바로 코드 편집 또는 리팩토링에 대한 지원이 많지 않습니다. 적절한 비주얼 스튜디오 지원이 좋을 것입니다.

세 번째 요점을 무시하는 것-해석 대 컴파일은 오래된 주장입니다.

대화식 해킹을 아직 많이하지 않았으므로 4 번째 포인트에 대해서는 언급 할 수 없습니다.

Visual Studio Debugger를 사용하여 IPY 스크립트를 디버깅합니다.

단위 테스트 IDE 통합에 대해 모릅니다.

Python 2.6 vs. Ironpython 2.6에서 블랙 잭 시뮬레이션 세트를 실행하고 있으며 과대 광고에도 불구하고 Ironpython은 코드가 매우 간단합니다. 코드는 매우 간단합니다.

def highcount(hand):
  total=0
  for c in hand:
    if c[1]==11 and 11+total>21:
      total+=1
    else:
      total+=c[1]
  return total

그리고

def dmove():
  if ( (dhand[0][1]==11 and dhand[1][1]==10) or 
       (dhand[0][1]==10 and dhand[1][1]==11) ):
    return 21 # should return blackjack

  while 1:
    lc=lowcount(dhand)
    hc=highcount(dhand)
    if lc>21: return lc # dealer busts
    if lc>=17: return hc # stand on soft 17
    if hc>=17: return hc # stand on hard 17
    dhand.append(deck.pop()) # hit otherwise

.NET VM 최적화가 JVM의 핫스팟과 유사하면 더 긴 실행 중에는 Ironpython이 시뮬레이션을 더 빨리 실행할 수 있습니다.

주목해야 할 또 다른 중요한 점은 블랙 잭 시뮬레이션이 Cpython의 Gil이 속도 부스트 측면에서 완전히 무가치 한 여러 스레드에서 쉽게 스폰되는 것입니다. Ironpython을 사용하면 쿼드 코어에서 전체 400% 속도를 얻습니다. 정말 멋지다.

이 코드는 난해한 파이썬 기능 (좋은 점)을 사용하지 않습니다.

나는 불행히도 전문적으로가 아니라 개인 프로젝트를위한 빠른 개발 언어로 Iron Python을 사용하고 있습니다.

Python은 사용 편의성, 간결하지만 코드 및 단순성의 가독성을위한 훌륭한 언어입니다. 이 중 일부는 역동적 인 언어이지만 기본 구문이기 때문입니다.

그러나 나는 cpython guru는 없으며, 집에서 훨씬 더 많은 .NET 플랫폼을 활용할 수 있기 때문에 CPYTHON보다 철분 파이썬에서 훨씬 더 많은 것을 얻을 수 있습니다. 나는 현재 .NET에서 매우 유용하기 때문에 내가 편안한 유일한 확장 된 파이썬 라이브러리 인 Cpython의 트위스트 라이브러리에 대한 포트가 없다는 것에 실망했다.

또한 대화식 창을 사용하여 C#에서 코딩 할 때 .NET 구조를 테스트합니다.

방금 Foord의 책을 구입 했으므로 지금은 배우뿐입니다. 웹 개발에 사용하기를 정말로 원하지만 슬프게도 ASP.NET MVC가 지원 될 때까지 기다려야합니다. 또한 .NET 프레임 워크를 활용할 수 있으므로 Windows 시스템 용 스크립팅 도구로 사용할 계획입니다.

직장에서 우리는 SharePoint 객체 모델에 대해 Ironpython을 사용합니다. PowerShell 스크립트보다 큰 작은 프로그램이 많지만 SharePoint에 아티팩트로 배치 해야하는 것은 아닙니다. Visual Studio가 설치되지 않은 서버에서 빠른 프로토 타이핑에 적합합니다. 우리는 일반적으로 선택 편집자로 메모장 ++를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top