문제

오랜 시간 동안 나는 하려고 했는데 다른 언어를 찾을 수 있는 기능을 설정하고 싶 및 수 없었어 그것을 찾을 수 있습니다.저는 있는 언어에 맞게 친절하게 대해 다양한 프로젝트를 내지만,나는 교차로 이들의 언어는 것이 허용하 99.9%의 내에서 프로젝트는 단일 언어입니다.나는 다음과 같다:

  • 의 상단에 내장.NET 또는다.NET 구현
  • 는 몇 가지 종속성습니다.NET runtime 모두 컴파일 시간 및 런타임(이 중요 한 이후 주요 사용하는 경우에는 임베디드 개발 있습니다.NET runtime 은 완전히 사용자 정의)
  • 는 컴파일러는 100%.순 코드가 없는 관리되지 않는 종속성
  • 을 지원하는 임의의 표현이 중첩(아래 참조)
  • 지원자 정의
  • 를 유추
  • 최적화 꼬리 전화
  • 는 명시적 변경할 수 없/변경 가능 정의(정확--나왔습니다만 그것 없이 살)
  • 을 지원합 진짜 매크로 강력한 메타 프로그래밍(절대적으로 필요)

주 두 가지 언어로 일하고 있었는 부과 Nemerle,하지만 나 또한 연주와 주변 F#.

주요 불만에 대하여 Nemerle:컴파일러는 무서 오류 보고,구현을 버그로 지옥(컴파일러 및 라이브러리),매크로만 적용될 수 있습 함수 내에서 또는 특성으로,그것은 상당히 무거운 종속성명(지 않지만 충분히 의견을 더욱 쉽게 확인).
주요 불만에 대하여 부:없음 임의의 표현이 중첩(견을 더욱 쉽게 확인),매크로를 쓰는 것이 어렵다면,운전자 정의(잠재적견을 더욱 쉽게 확인).
주요 불만에 대하여 F#:추한 구문을 이해하기 어려운 메타 프로그래밍,non-무료 라이센스(epic 견을 더욱 쉽게 확인).

그래서 더 많은 생각,그것에 대해 더 생각해 개발하는 내 자신의 언어입니다.

장점:

  • 을 얻을 정확한 구문은 내가 원하는
  • 을 얻을 처리 시간이 될 것입니다 좋은 거래를 빠르;정량화하기 어려운,그러나 나는 놀라지 않을 것이다 보 1.5x 개발자의 생산성으로 인해 특히 테스 인프라를 이용할 수 있습에 대한 특정 프로젝트
  • 나는 쉽게 추가할 수 있는 사용자 정의 기능을 컴파일러와 내 런타임
  • 나는 뭔가 얻을 설계하고 작품 정확히 방법은 내가 원하는 만큼 이 같은 소리 NIH,이것은 내 인생을 더 쉽게 만들어

단점:

  • 지 않으면 그것을 얻을 수 있는 인기가 붙어있을 것입니다 부담으로의 유지 보수입니다.나는 적어도 얻을 Nemerle 사람들 때문에,나는 모두가 뭔가를 원하는 더 많은 전문가,그러나 그것은 마을입니다.
  • 때문에 첫 번째 con,나는 주의를 사용하여 그 전문적인 설정입니다.는 말했다,나는 이미 사용하여 Nemerle 고 사용하는 지정 컴파일러는 이후 그들은 그것을 유지입니다.
  • 지 않는 경우에 인기를 얻을 찾는 개발자들은 훨씬 더 어려울 수 있을 정도 바울은 그레이엄 지 않을 수도 있습도 용납.

그래서에 따라 이 모든 것의 일반적인 합의--이것이 좋은 생각이나 나쁜 생각?그리고 아마도 더 유용하게,내가 어떤 큰 장점 또는 단점?

편집:을 추가 잊 중첩 예로 여기는 경우에 Nemerle:

def foo = 
    if(bar == 5)
        match(baz) { | "foo" => 1 | _ => 0 }
    else bar;

편집#2:생각을 해치지 않을 것을 주고 예의의 코드 형식을 변경하거나 수정하여 이 언어는 경우 그것은 존재하(S.롯의 대답은 혼자가 될 수 있는 충분한 놀라게 저를 멀리 하에서).코드는 많이 사용하는 사용자 정의 구문(opcode,:=,quoteblock,etc.),표현 중첩,etc.을 확인할 수 있는 좋은 예를 들어 여기: .

도움이 되었습니까?

해결책

슬프게도,없 메트릭 또는 이야기 주위에 실패한 언어입니다.다만 성공한 언어입니다.분명히,실패는 많은 성공이라고 할 수 있습니다.

나는 무엇이에요?두 가지 일반적인 경험입니다.

  1. 년에 한 번 또는 두 번,나는 감내해야에 대한 프레젠테이션 제품/언어/공구/framework 는 것이 절대적으로 모든 변경.나의 응답되는 일정한 마지막을 위해 20 년이다.표시 누군가가 지원이 필요하고 제사를 지원합니다.그리고 그입니다.을 듣지 못합니다.자의 말을 들었 25 습니다.

  2. 한 번 또는 두 번,매년 나와 함께 일해야 한 고객은 고아 기술입니다.에서 어떤 시점에서 과거,어떤 영리한 프로그래밍 도구를 구축/framework/라이브러리/패키지는 사용되었을 위해 내부적으로는 여러 프로젝트입니다.그는 프로그래머이다.또 다른 사람을 파악할 수 있는 것 및 그들은 우리를 교체하고 다시 작성합니다.슬프게도 우리가 그것을 알아낼 수 없습니다거나,우리의 제안은 처음부터 다시 작성.그들은 불평하는 자신의 천재는 건설의 설정 앱을 주의 기간 동안,그것은 걸릴 수 없습니다 우리 개월을 다시는 그들 자바/Python/VB/C#.자의 말을 썼어요 25 또는 그렇게 이러한 종류의 제안.

는,하나의 컨설턴트입니다.

참으로 하나 특히 슬픈 상황이 되었는 회사의 전체 소프트웨어 포트폴리오 중 한 명에 의해 작성되었습니다 똑똑한 남자 개인 언어와 도구입니다.그는지는 않았지만,그가 깨달은 것이 그의 언어 및 도구 모음에 떨어졌었던 방법으로 시간 뒤에--예술의 상태로 이동했다,그리고 있지 않았다.

고 움직임은--물론에서 예상치 못한 방향입니다.그의 언어와 도구를 좋아했다,하지만 세계 시작했을 채택하는 관계형 데이터베이스,그리고 그는 절대적으로 업그레이드를 위해 자신의 정크에서 멀리 이동하는 평면 파일이 있습니다.그것은 무언가를하지 아니하였도 예상됩니다.사실,그것은 그가 가능하게 할 수 있지 않 예견합니다.[없이 함정에 빠질 것이다,당신?]

그래서,우리는 말했다.그는 다시 썼의 많은 응용 프로그램에서 일반 세 VAX Fortran(예,이것은 오래 전에.) 고 그는 다시 썼을 사용하여 일반전 관계형 SQL 물건(Ingres,습니다.)

의 년 후에 코딩,그들었다는 성능 문제입니다.그들은 나에게 다시 검토하는 모든 훌륭한 물건들에서 수행 교체하는 집-내장된 언어입니다.슬프게도,그들은 수행되는 최악의 가능한 관계형 데이터베이스를 디자인합니다.최악의 가능합니다.그들은 자신의 파일이 복사,병합,종류,그리고 무엇인지,그리고 구현 각 낮은 수준의 파일 시스템 조작을 사용하여 SQL,복제 데이터베이스 행이는 왼쪽,오른쪽 센터도 있습니다.

그가 그렇게 빠져 자신의 개인 비전의 완벽한 언어,그는 수 없이 적응하는 상대적으로 일반적인,보급 새로운 기술입니다.

다른 팁

내가 말한 그것을 위해 이동합니다.

  • 그것은 것이 멋진 경험이에 관계없이의 날씨는 그것을 생산하거나지 않습니다.
  • 만약 당신이 그것을 컴파일을 IL 다음은 걱정하지 않아도 할 수 없는 것에 대해 다시 사용하여 컴파일된 어셈블리의 C#
  • 당신이 믿는 경우에 당신은 유효한 불만을 언어에 대해 당신은 위의 가능성이 높은 많은 생각할 것이다 당신을 좋아합니다.물론,모든 1000 관심있는 사람이 있을 수 있습 1 당신을 도울 용의 유지-그러나 그것은 항상 위험

하지만 여기에 몇 가지를 대해 경고:

  • 당신의 언어를 사양에 돌기는 개발.는지 확인하고 모든 언어의 기능을 냈기 전에 손으로는 것들도 당신만 원하는 미래입니다.내 생각,C#은 천천히 떨어지는"oh-단지 하나 더-언어 확장자"트랩으로 이어질 것입니다 그것의 최종적인 운명.
  • 인지 최적화되어 있습니다.지금이야말로 너는 이미 알고있다;그러나 나는 당신이 그것을 좋아할 것이 그 배우)아이 원하는 언어는 구문으로 실행되지만 느리게 IE 의 자바스크립트 구현합니다.

좋은 운:D

내가 처음 시작했 90 년대 초에 있는 것 같이 열풍의 모든 사람을 개발하에서 자신의 집 언어입니다.나의 첫번째 3 작업과 함께 회사는 이런 짓을 했다.한 회사가 심지어는 자신들의 운영 체제!

에서 경험,내가 말하고 싶지만 이것은 나쁜 생각이 다음과 같은 장점이 있습니다.

1)당신은 시간을 보내 디버깅 언어 자체가 외에 코드 베이스 위에 그것의
2)모든 개발자를 고용을 통해 이동해야의 학습 곡선한 언어
3)어려운 것이를 유치하고 유지 개발자는 작업하기 때문에서 독자적인 언어는 죽은 사람의 경력

주된 이유는 내가 이 세 작업했기 때문에 독점 언어를 알 수 있는 많은 회사로를 더:).

추가 인수에서만 만날 수 있는 대부분의 언어로 전체 팀이는 전시 작업을 개발하는 언어입니다.어쩌면 예외가 될 수 있지만,나는 아주 놀라는 경우에 당신과 일치할 수 있는 수준의 개발에 의해서만 작업 언어에 있습니다.

주요 불만에 대하여 Nemerle:이 컴파일러는 무서 오류 보고 의 구현은 지옥으로 (컴파일러 및 라이브러리),매크로 만 적용될 수 있습 내에 기능 으로 또는 속성이며,그것은 상당히 무거운 의존성-명(지 충분히 의견을 더욱 쉽게 확인).

나는 당신의 게시물 작성 되었습니다 두 개 이상의 년 전입니다.나는 당신을 조언하려고 Nemerle 언어 오늘입니다.컴파일러는 안정되어 있습니다.이 없 차단 버그를 오늘입니다.VS 통합,개선을 많이도 있 SharpDevelop 합니다.

만약 당신이 그것을 기회를주고,당신은 실망하지 않을 것입니다.

절대로 자신의 개발 언어입니다.

자체 개발 언어의 트랩과 나쁜 것 당신을 제한하는 어떤 당신의 상상력을 제공할 수 있는,뿐만 아니라 요구하는 작업을 모두 개발 환경과 실제적인 프로그램은 당신이 쓰기.

는 경우에는 적용되지 않은 경우 래리는 벽,AWK,사람의 일부 또는 상당한 그룹 전용 사람들의의 경계 테스트 프로그램입니다.만약 당신이 어떤 사람들의 종류,당신은 필요가 없는 나의 조언을,하지만 나는 강하게 의심을 대상으로 하는 틈새 없는 곳에 적합한 프로그래밍 언어에 대한 작업의 특성과 사람들을하고 작업입니다.

는 경우에 당신은 똑똑할 수 있을 것 같(가능성),조언을 앞두고 디자인을 할 수 있는 언어의 첫째,반복하는 몇 번에 걸쳐,그것을 묻는 몇몇 똑똑한 동료를 신뢰하는 스마트 프로그래밍 언어에 관련 커뮤니티에 대한 구체적인 디자인을 함께했음을 결정합니다.

당신이 알고 있는 과정에서의 디자인을 만들어 그냥 빠른 해킹에 Nemerle 다 당신이 필요로하는 모든 예를 들어,.많은 일들이 일어날 수 있는 바로 그 때 생각하고 열심히 문제에 대한 최종 해결책과 다를 수 있습니다 실제로 그 마음에 시작할 때의 프로젝트입니다.

최악의 경우에,당신은 실제로 구현하는 디자인,하지만 당신은 그것을 증거를 읽고 성숙한,당신은 알고 높은 수준의 확신을 그것은 좋은 경로입니다.

관련,조언을 시작 작고,단지 정의 기능은 당신이 절대적으로 필요하고 그런 다음 그들에 구축하여 나머지를 얻을.

쓰기에 자신의 언어로하지 않은 쉬운 프로젝트..특히 중 하나에 사용되는 모든 종류의"전문적인 설정"

그것은 양의 작업,그리고 나는 것을 의심할 수 있 자신을 작성한 언어,그리고 여전히 쓰는 큰 프로젝트에서 사용하는을 보낼 것입니다 그래서 오랜 기능을 추가해야 할 수정,버그와 일반적인 언어 디자인 물건입니다.

강력 추천 언어를 선택하는 가장 가까운 당신이 무엇을 원하고 확장하는 그것을 무엇을 해야 합니다.그것은 결코 정확하게 당신이 원하는 무엇을,하지만에 비해 시간은 당신을 보내고 쓰는 자신만의 언어를 말하는 작은 타협..

스칼라에있다.NET 컴파일러입니다.나는 알 수 없는 상태이지만.그것의 종류의 두 번째 클래스는 시민은 스칼라 세계(이에 더 집중하는 JVM).그러나 그것은 좋은 수 tradeof 을 채택합니다.NET 컴파일러를 만드는 대신 새로운 언어를 처음부터.

스칼라의 일종에서 약한 메타-프로그래밍무부 등이 있습니다.가능성에 대한 필요 메타 프로그래밍입니 다소 감소하여 다른 언어의 특징입니다.어떤 경우에도 나는 생각하지 않는 사람에 슬픈 것 당신을 구현하는 메타 프로그래밍 기능이다.또한 컴파일러 플러그인 인프라가는 길에.

내가 생각하는 대부분의 언어에 맞의 모든 청구합니다.

당신을 결합 할 수 있습니다 당신의 2 마음에 드는 언어(내 경우에는 C#고 다)및 그들을 사용한다.

전문적인 관점에서 보면 이런 좋은 생각이 하지만입니다.

그것은 흥미로운 일이 될 것입니다 듣는 것들 중 일부는 당신 느낌을 당신은에서 할 수 없는 기존의 언어입니다.어떤 종류의 프로젝트에 노력하고 있는지 상상조차 할 수 없 C#?

나는 단지 골동품!

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