«language-design» 태그된 질문

프로그래밍 언어의 디자인과 구조에 관한 질문.


9
가장 현대적인 프로그래밍 언어에서 계약에 의한 Design에 대한 제한된 지원이 필요한 이유는 무엇입니까?
최근에 Design by Contract (DbC)를 발견했으며 코드를 작성하는 데 매우 흥미로운 방법이라고 생각합니다. 무엇보다도 다음을 제공하는 것 같습니다. 더 나은 문서. 계약서가 문서이므로 계약서가 구식이 될 수 없습니다. 또한 계약은 루틴의 기능을 정확하게 지정하므로 재사용을 지원하는 데 도움이됩니다. 더 간단한 디버깅. 계약이 실패하는 순간 프로그램 실행이 중지되므로 오류가 전파 될 …

12
대부분의 프로그래밍 언어에 함수 선언을위한 특수 키워드 또는 구문이있는 이유는 무엇입니까? [닫은]
대부분의 프로그래밍 언어 (동적 및 정적 유형의 언어 모두)에는 함수 선언을위한 변수 선언과 크게 다른 특수 키워드 및 / 또는 구문이 있습니다. 다른 명명 된 엔티티를 선언하는 것처럼 함수를 봅니다. 예를 들어 파이썬에서 : x = 2 y = addOne(x) def addOne(number): return number + 1 왜 안되 겠어요 : …

4
얼마나 빨리 갈 수 있습니까?
Go는 '금속에 가깝게'실행해야하는 몇 가지 언어 중 하나입니다. 즉 VM없이 컴파일되고 정적으로 유형이 지정되고 코드가 기본적으로 실행됩니다. 이는 Java, C # 등에 비해 속도 이점이 있습니다. 그러나 Java 뒤에있는 것 같습니다 ( Programming Language Shootout 참조 ) 덜 성숙한 컴파일러가 이것에 대해 큰 책임을지고 있다고 가정하지만 다른 이유가 있습니까? Go의 …

8
범위 기반 메모리 관리의 단점
C ++ 커뮤니티에서 더 일반적으로 (혼란스럽게?) 참조하는 범위 기반 메모리 관리 (SBMM) 또는 RAII를 정말 좋아 합니다. 내가 아는 한, C ++ (및 C)을 제외하고는 오늘날 SBMM / RAII를 주요 메모리 관리 메커니즘으로 만드는 다른 주류 언어는 없으며 대신 가비지 수집 (GC)을 선호합니다. 다소 혼란 스럽습니다. SBMM은 프로그램을보다 결정 론적으로 …

5
C #에 케이스 블록에 로컬 범위가없는 이유는 무엇입니까?
나는이 코드를 작성했다 : private static Expression<Func<Binding, bool>> ToExpression(BindingCriterion criterion) { switch (criterion.ChangeAction) { case BindingType.Inherited: var action = (byte)ChangeAction.Inherit; return (x => x.Action == action); case BindingType.ExplicitValue: var action = (byte)ChangeAction.SetValue; return (x => x.Action == action); default: // TODO: Localize errors throw new InvalidOperationException("Invalid criterion."); } } 그리고 …

26
언어 설계자들이주의를 기울이기를 바라는 것은 무엇입니까? [닫은]
이 질문의 목적은 당신이 살 수 없거나 원하는 언어로 원하는 프로그래밍 언어 기능의 세탁 목록을 구성하는 것이 아닙니다. 이 질문의 목적은 대부분의 언어 디자이너가 생각하지 못하는 언어 디자인의 구석을 밝히는 것입니다. 따라서 언어 기능 X에 대해 생각하는 대신 좀 더 철학적으로 생각하십시오. 저의 편견 중 하나는 아마도 논란의 여지가있을 수 …

2
4 번째와 5 번째 프로그래밍 언어 세대 란 무엇입니까? 더 있나요? [닫은]
학교 / 대학 수준으로 분류되는 경우가 많기 때문에 널리 사용되는 프로그래밍 언어 (C #, Java, C ++)는 모두 3 세대 언어입니다 (기계의 물리적 부분에서 더 높은 추상화 수준으로). 또한 어셈블리 언어는 2 차 언어로, 기계 언어는 1 세대 언어로 분류됩니다. 처음에는 SQL이 4 세대 언어로 간주되어야한다고 생각했습니다. 더 추상적이고 반복적 …

7
왜 그렇게 많은 언어가 가치를 지니고 있습니까?
당신이 항상 값에 의해 전달 된 것 C와 같은 명시적인 포인터 조작이 심지어 언어 (당신은 할 수 있습니다 참조로 전달할하지만 기본 동작이 아니다). 이것의 장점은 무엇입니까, 왜 그렇게 많은 언어가 값으로 전달되고 다른 언어 가 참조로 전달 됩니까? (확실하지는 않지만 Haskell이 참조로 전달된다는 것을 이해합니다).

3
Java 개발에는 일반적으로 C # /. NET보다 더 많은 서브 클래 싱이 포함됩니까?
최근에 Android 개발을 살펴보기 시작했습니다. 이것은 Java 소프트웨어 개발의 세계로 다시 돌아 왔습니다. Java로 마지막으로 작업했을 때, 나는 지금 (나는 생각하는 것)만큼 OOP를 이해하지 못했다는 것을 인정할 것이다. 내 경력에서 주로 C #을 사용하면서 상속이 Java 및 C #을 사용하는 방식에 놀라운 차이가 있음을 알았습니다. C #에서는 대부분의 상황에서 상속을 …


5
C #과 Java가 왜 '=='의 기본값으로 참조 동등성을 사용합니까?
Java와 C # (및 다른 언어)이 기본적으로 동등성을 참조하는 이유를 잠시 고민해 왔습니다 ==. 내가하는 프로그래밍에서 (확실히 프로그래밍 문제의 작은 하위 집합 일뿐입니다), 참조 평등 대신 객체를 비교할 때 거의 항상 논리적 평등을 원합니다. 나는 왜 두 언어가 왜이 길을 거꾸로 돌리고 ==논리적 평등을 유지하고 .ReferenceEquals()참조 평등 을 위해 사용 …

6
프로그래밍 언어가 변수 및 함수의 그림자 / 숨기기를 허용하는 이유는 무엇입니까?
가장 많이 사용되는 프로그래밍 언어 (예 : C ++, Java, Python 등)는 변수 또는 함수 를 숨기 거나 그림자 라는 개념을 가지고 있습니다. 숨기거나 그림자가 생기면 버그를 찾기가 어려웠으며 언어의 이러한 기능을 사용해야하는 경우를 본 적이 없습니다. 나에게 숨기와 그림자를 허용하지 않는 것이 나을 것 같습니다. 이 개념을 잘 사용하는 …

10
Math.Sqrt ()가 정적 함수 인 이유는 무엇입니까?
정적 및 인스턴스 메소드에 대한 토론에서 항상 Sqrt()정적 메소드 대신 숫자 유형의 인스턴스 메소드 여야 한다고 생각 합니다. 왜 그런가요? 그것은 분명히 가치에 작용합니다. // looks wrong to me var y = Math.Sqrt(x); // looks better to me var y = x.Sqrt(); 많은 언어에서와 같이 값 유형에는 인스턴스 메소드가있을 수 …

4
.equals ()가 Java의 클래스에있는 동안 인터페이스에 .compareTo ()가있는 이유는 무엇입니까?
같은 인터페이스 가 클래스 에있는 동안 왜 인터페이스 .compareTo()에 있는지 알고 Comparable싶습니다 . 나에게, 왜 같은 방법 이 클래스 에 없는지 임의적 인 것처럼 보입니다 ..equalsObject.compareTo()Object 사용하려면 .compareTo(), 당신은 구현 Comparable인터페이스와 구현 .compareTo()당신의 목적을 위해 방법을. 를 들어 .equals()모든 클래스가 상속하기 때문에 방법, 당신은 단순히 당신의 클래스의 메소드를 오버라이드 (override) …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.