«language-design» 태그된 질문

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

2
비트 연산자가 비교보다 우선 순위가 낮은 이유는 무엇입니까?
가장 인기있는 언어 (아래 참고 참조)에서 비교 연산자 (==,! =, <,>, <=,> =)가 비트 연산자 (&, |, ^ ~)? 나는이 우선 순위가 자연 스러울 수있는 곳에서 사용 된 적이 없다고 생각합니다. 항상 다음과 같습니다. if( (x & MASK) == CORRECT ) ... // Chosen bits are in correct setting, rest …

6
C #이 Java와 달리“new”및“virtual + override”키워드로 작성된 이유는 무엇입니까?
자바에서는 더있다 virtual, new, override방법 정의에 대한 키워드. 따라서 방법의 작동은 이해하기 쉽습니다. 원인 DerivedClass가 BaseClass를 확장 하고 동일한 이름과 동일한 BaseClass 서명을 가진 메소드를 갖는 경우 대체는 런타임 다형성에서 수행됩니다 (메소드가 아닌 경우 static). BaseClass bcdc = new DerivedClass(); bcdc.doSomething() // will invoke DerivedClass's doSomething method. 이제 방법을 이해하는 …

9
언어에 논리 연산자로서의 의미가 포함되지 않는 이유는 무엇입니까?
이상한 질문 일지 모르지만 많은 언어 (Java, C, C ++, Python Haskell에서 논리 연산자로 의미가없는 이유는 무엇입니까? 마지막으로 사용자가 연산자를 추가하여 사소한 것으로 정의했지만)? 논리적 의미는 (특히 주장이나 주장과 같은 표현으로) 작성하는 것이 훨씬 명확하다는 것을 알 수 있습니다. encrypt(buf, key, mode, iv = null) { assert (mode != ECB …

4
현대식 프로그래밍 언어에서 왜 타입이 변수 이름 뒤에 오는가?
거의 모든 현대 프로그래밍 언어 (Go, Rust, Kotlin, Swift, Scala, Nim, Python last version)에서 유형이 항상 변수 선언에서 변수 이름 뒤에 오는 이유는 무엇입니까? 왜 x: int = 42그렇지 int x = 42않습니까? 후자는 전자보다 더 읽기 쉽지 않습니까? 트렌드 일까, 아니면이 솔루션 뒤에 정말 의미있는 이유가 있습니까?

2
C #에서 'void'가 일반 유형으로 허용되지 않는 이유
void구성 할 수없고 일반적인 유형으로 허용되지 않는 것을 선호하는 디자인 결정은 무엇입니까 ? 어쨌든 그것은 단지 특별한 공허한 struct것이며 구별 Func되고 Action대의원 을 갖는 총 PITA를 피했을 것 입니다. (C ++은 명시적인 void리턴을 허용 void하고 템플리트 매개 변수로 허용합니다 )

3
타입 시스템이란 무엇입니까?
배경 사이드 프로젝트로 언어를 디자인하고 있습니다. 작동하는 어셈블러, 정적 분석기 및 가상 머신이 있습니다. 내가 만든 인프라를 사용하여 사소한 프로그램을 이미 컴파일하고 실행할 수 있기 때문에 대학에서 프레젠테이션을하는 것에 대해 생각했습니다. 내 이야기에서 나는 VM이 ​​타입 시스템을 제공한다고 언급했다. " 당신의 타입 시스템은 무엇입니까? " 대답 한 후 나는 그 …

5
모든 <algorithm> 함수가 컨테이너가 아닌 범위 만 사용하는 이유는 무엇입니까?
에 유용한 함수가 많이 &lt;algorithm&gt;있지만, 모두 "시퀀스"-반복자 쌍에서 작동합니다. 예를 들어 컨테이너가 있고 컨테이너를 실행하고 싶다면 다음과 같이 std::accumulate작성해야합니다. std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); 내가 할 모든 것은 : int sum = std::accumulate(myContainer, 0); 내 눈에는 좀 더 읽기 쉽고 명확합니다. 이제 컨테이너의 일부에서만 작업하려는 …

4
파이썬에서 반복자가 예외를 발생시키는 이유는 무엇입니까?
Java 반복자 구문은 다음과 같습니다 (C #에서 비슷한 구문). Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } 말이됩니다. 다음은 파이썬에서 동등한 구문입니다. it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) 예외는 예외적 인 상황에서만 사용해야한다고 생각했습니다. 파이썬이 예외를 사용하여 반복을 중지하는 이유는 무엇입니까?

8
예외 처리 메커니즘없이 현대 언어를 디자인해야하는 이유는 무엇입니까?
많은 현대 언어 는 풍부한 예외 처리 기능을 제공 하지만 Apple의 Swift 프로그래밍 언어 는 예외 처리 메커니즘을 제공하지 않습니다 . 내가 예외를 겪었을 때, 이것이 의미하는 바에 대해 마음을 감싸는 데 어려움을 겪고 있습니다. Swift에는 어설 션이 있으며 물론 반환 값이 있습니다. 그러나 나는 예외 기반 사고 방식이 예외없이 …

13
할당 연산자는 왜 왼쪽에 할당합니까?
최근에 친구 프로그래밍을 가르치기 시작했습니다 (파이썬을 사용하고 있습니다). 변수 생성과 대입 연산자에 대해 논의하기 시작했을 때, 그녀는 오른쪽의 값이 왜 왼쪽이 아닌 왼쪽의 이름에 할당되는지 물었습니다. . 나는 그것이 자연스럽게 보였기 때문에 그것에 대해 너무 많이 생각하지 않았지만, 그녀는 왼쪽에서 오른쪽이 그녀에게 더 자연스럽게 보인다고 말했습니다. 그것이 대부분의 사람들이 자연 …

5
왜 오래된 프로그래밍 언어가 계속 수정됩니까?
이 질문 은 "왜 사람들은 여전히 ​​오래된 프로그래밍 언어를 사용합니까?" 나는 그것을 아주 잘 이해합니다. 실제로 내가 가장 잘 알고있는 두 프로그래밍 언어는 C와 Scheme이며 둘 다 70 년대로 거슬러 올라갑니다. 최근 C99와 C11과 C89의 변경 사항에 대해 읽었습니다 (실제로 가장 많이 사용되는 C 버전과 K &amp; R에서 배운 버전 …

4
C #에서 구조체와 클래스가 별도의 개념 인 이유는 무엇입니까?
C #으로 프로그래밍하는 동안 나는 이해할 수없는 이상한 언어 디자인 결정을 발견했습니다. 따라서 C # (및 CLR)에는 struct(스택에 저장된 값 유형, 상속 없음) 및 class(힙에 저장된 참조 유형 유형)의 두 가지 집계 데이터 유형이 있습니다 . 이 설정은 처음에는 훌륭하게 들리지만 집계 유형의 매개 변수를 사용하는 메소드를 우연히 발견하고 실제로 …


15
언어가 CPU 디자인에 어떤 영향을 미쳤습니까? [닫은]
우리는 하드웨어가 컴파일 된 이진 코드만을 볼 때 프로그램이 어떤 언어로 작성되었는지는 신경 쓰지 않는다고하지만 종종 이것이 사실은 아닙니다. 예를 들어 겸손한 Z80을 생각해보십시오. 8080 명령어 세트의 확장 기능에는 CPIR과 같은 명령어가 포함되어 있습니다. CPIR은 C 스타일 (NULL로 끝나는) 문자열을 스캔하는 데 유용합니다 (예 : 수행) strlen(). 설계자는 C 길이의 …

22
식별자의 공백은 관용적입니까? [닫은]
C # 스타일은 식별자에 CamelCase 를 사용하여 단어를 구분하도록 제안 합니다. Lisp 전통은 대쉬 대신 사용을 제안합니다. 식별자에 공백을 사용할 수있을뿐만 아니라 다중 단어 식별자를 사용할 때 일반적으로 사용되는 관용구가있는 프로그래밍 언어가 존재 했습니까? 일부 Scheme 구현 에서 공백이있는 식별자를 가질 수는 있지만 널리 사용되는 것은 아닙니다. 예를 들면 다음과 …

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