«language-design» 태그된 질문

프로그래밍 언어의 모든 측면 디자인과 관련된 질문에 대한 태그입니다.

30
"최소한의 놀라움"과 변하기 쉬운 기본 주장
파이썬으로 오랫동안 땜질을하는 사람은 다음과 같은 문제로 물렸거나 조각났습니다. def foo(a=[]): a.append(5) return a 파이썬 초보자는이 함수가 항상 하나의 요소로만 목록을 반환 할 것으로 기대합니다 [5]. 결과는 대신 매우 다르며 매우 초보자입니다. >>> foo() [5] >>> foo() [5, 5] >>> foo() [5, 5, 5] >>> foo() [5, 5, 5, 5] …

16
Java가 서명되지 않은 정수를 지원하지 않는 이유는 무엇입니까?
Java가 부호없는 정수에 대한 지원을 포함하지 않는 이유는 무엇입니까? 예기치 않은 큰 입력에서 오버플로가 발생할 가능성이 적은 코드를 작성할 수 있다는 점을 감안할 때 이상한 생략 인 것 같습니다. 또한 부호없는 정수를 사용하는 것은 자체 문서화의 한 형태 일 수 있습니다. 부호없는 정수가 보유하려고 한 값이 절대 음수로 표시되지 않기 …

13
C #에서 ==와! =를 모두 정의해야하는 이유는 무엇입니까?
C # 컴파일러는 사용자 정의 유형이 operator를 정의 할 때마다 정의 ==해야합니다 !=( 여기 참조 ). 왜? 디자이너가 왜 필요하다고 생각했는지 그리고 왜 다른 사람 만 존재할 때 컴파일러가 운영자 중 하나를 위해 합리적인 구현을 기본으로 할 수 없는지 알고 싶습니다. 예를 들어 Lua를 사용하면 항등 연산자 만 정의하고 다른 …

5
Java 8 인터페이스 메소드에서 "최종"이 허용되지 않는 이유는 무엇입니까?
Java 8의 가장 유용한 기능 중 하나는 default인터페이스 의 새로운 메소드입니다. 그들이 소개 된 이유는 본질적으로 두 가지가 있습니다 (다른 것들이있을 수 있습니다). 실제 기본 구현 제공 예:Iterator.remove() JDK API 진화를 허용합니다. 예:Iterable.forEach() API 디자이너의 관점에서 나는 인터페이스 메소드에 다른 수정자를 사용할 수 있기를 원했습니다 final. 이는 편리한 메소드를 추가 …


5
클래식에 비해 프로토 타입 상속의 이점은 무엇입니까?
그래서 나는 마침내 몇 년 동안 내 발 끌기를 멈추고 JavaScript를 "적절하게"배우기로 결정했습니다. 언어 디자인에서 가장 머리를 긁는 요소 중 하나는 상속 구현입니다. Ruby에서 경험을 쌓은 후 클로저와 동적 타이핑을 보게되어 정말 기뻤습니다. 그러나 내 인생에서 상속을 위해 다른 인스턴스를 사용하여 객체 인스턴스에서 어떤 이점이 있는지 알아낼 수 없습니다.

11
Javascript V8 속도를 얻기 위해 Ruby, Python을 차단하는 것은 무엇입니까? [닫은]
휴무 . 이 질문은 더 집중되어야 합니다. 현재 답변을받지 않습니다. 휴일 오년 전에 . 잠김 . 이 질문과 주제는 주제가 다르지만 역사적 의미가 있기 때문에이 질문과 답변은 잠겨 있습니다. 현재 새로운 답변이나 상호 작용을받지 않습니다. V8 엔진 에 최적화 구현 (예 : 인라인 캐싱 )을 차단하는 Ruby / Python 기능 …


5
“this”키워드는 함수 내에서 어떻게 작동합니까?
JavaScript에서 흥미로운 상황이 발생했습니다. 객체 리터럴 표기법을 사용하여 여러 객체를 정의하는 메소드가있는 클래스가 있습니다. 해당 개체 내에서 this포인터가 사용 중입니다. 프로그램의 동작에서, this포인터가 리터럴에 의해 생성되는 객체가 아니라 메소드가 호출 된 클래스를 참조 한다고 추론했습니다 . 이것이 내가 예상하는 방식이지만 임의적 인 것처럼 보입니다. 이것이 정의 된 동작입니까? 브라우저 간 …

12
왜 파이썬에는 부호 함수가 없습니까?
왜 파이썬에 sign함수 가 없는지 이해할 수 없습니다 . 그것은 abs(내 sign동생 이라고 생각) 내장되어 있지만 없습니다 sign. 파이썬 2.6에는 copysign함수 ( math )가 있지만 부호는 없습니다. 왜 copysign(x,y)당신이 그냥 쓸 sign수 있고 copysign직접에서 얻을 수있을 때 쓰는 것을 귀찮게 abs(x) * sign(y)합니까? 후자는 훨씬 더 명확합니다 : x는 y의 …

5
왜 배열을 Iterable에 할당 할 수 없습니까?
Java5를 사용하면 다음과 같이 작성할 수 있습니다. Foo[] foos = ... for (Foo foo : foos) 또는 for 루프에서 Iterable을 사용하십시오. 이것은 매우 편리합니다. 그러나 다음과 같이 iterable에 대한 일반적인 메소드를 작성할 수 없습니다. public void bar(Iterable<Foo> foos) { .. } Iterable이 아니기 때문에 배열로 호출하십시오. Foo[] foos = { …



3
왜 진술 (j ++)인가? 금지?
다음 코드가 잘못되었습니다 ( ideone 참조 ). public class Test { public static void Main() { int j = 5; (j++); // if we remove the "(" and ")" then this compiles fine. } } 오류 CS0201 : 할당, 호출, 증분, 감소, 대기 및 새 객체 표현식 만 명령문으로 사용할 …

13
누군가가 새로운 프로그래밍 언어를 쓰면 어떤 언어로 쓰나요?
내 무지를 용서해주세요 나는 PHP로 손을 대고 발을 젖게 탐색하여 몇 년 동안 궁금해 한 질문을 강요받습니다. 완전히 새로운 프로그래밍 언어를 작성할 때 어떤 언어로 작성 합니까? 이것은 아마도 내가 존경하는 모든 프로그래머에게 어리석게 들리지만, 나는 닭고기와 계란이 난처한 일입니다. 너 뭐하니? 스스로에게 오늘 오늘 나는 새로운 언어를 발명 할 …

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