"어떤 언어에 대해 싫어하는 것"목록에 대해 내가 싫어하는 다섯 가지는 어떻습니까? :디
5- 주황색을 칠해도 사과가 아닙니다.
언어를 디자인 할 때 디자이너는 일반적으로 유용한 것을 염두에 둡니다. 완전히 다른 것을 위해 그것을 사용하는 것은 효과가있을 수 있지만, 그것이 어리석지 않다고 불평하는 것은 간단합니다. 파이썬을 가져 가라. 누군가가 있거나 언젠가 파이썬 코드에서 exe를 만드는 유틸리티를 만들 것이라고 확신합니다. 왜 하나님의 땅에 당신이 할 싶어 그렇게? 깔끔하지만 — 나를 오해하지는 않지만 — 사용하지 않습니다. 그것에 대해 불평을 중지하십시오!
잘 설계된 프로젝트에는 여러 언어의 코드가 포함될 수 있습니다. 한 언어로만 프로젝트를 완료 할 수는 없습니다. 어떤 프로젝트는 당신이 사용하는 언어의 능력 안에있을 수 있습니다.
4- 당신은 나무 다리에 서 있습니까?
플랫폼은 언어의 기능에 큰 영향을 줄 수 있습니다. 오늘날 가비지 수집기 또는 심지어 "가비지 수집"에서의 초기 파스칼 시도로 메모리 페이드 (어쩌면 malloc 더 많은 RAM ??)를 도울 수 있습니다. 컴퓨터가 더 빠르기 때문에 우리는 더 많은 언어를 기대합니다. 그리고 솔직히 말해서, 우리는 아마해야합니다. 그러나 해시 테이블이나 문자열 또는 다양한 다른 개념을 작성하기 위해 컴파일러의 편의를 위해 많은 비용이 듭니다. 이러한 것들은 사용되는 플랫폼에 상속되지 않을 수 있습니다. 언어에 포함하기 쉽다고 말하면 다리가 없을 수도 있습니다.
3- 진짜 누구의 잘못입니까?
버그. 당신은 알고있다. 나는 버그를 좋아한다. 왜 버그를 좋아합니까? 직업을 유지한다는 의미이기 때문입니다. 버그가 없으면 닫힌 피자 가게가 많이있을 것입니다. 그러나 사용자는 버그를 싫어합니다. 그러나 여기 차가운 물이 약간 튀어 나옵니다. 모든 버그 는 프로그래머의 잘못입니다. 언어가 아닙니다. 생성 될 수있는 버그 수를 크게 줄이는 엄격한 구문을 가진 언어는 완전히 쓸모없는 언어입니다. 능력은 한 손으로 계산 될 수 있습니다. 유연성이나 힘을 원하십니까? 당신은 버그가 있습니다. 왜? 당신은 완벽하지 않고 실수를하기 때문입니다. C에서 실제로 식별 가능한 예제를 보자.
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
우리 모두 그 일을 알고 있습니다. 그러나, 우리 중 일부는 모르는 것이 있습니다. 하고있는 일에 따라. 버퍼 오버런은 해당 기능의 비용입니다. 위의 코드입니다. 내가 실제로 공개했다면. 다시 .. 나와 함께 말하십시오. "나의 잘못". 내가 할 수있는 것은 C가 아닙니다.
2- 휴지통에 넣지 말아야합니까?
우리가 자주 사용하지 않고 바보라고 부르기 때문에 우리가 이해하지 못하는 언어로 특징을 지적하는 것은 매우 쉽습니다. 고토는 항상 저를 즐겁게합니다. 사람들은 항상 고토의 언어에 대해 불평합니다. 그러나 마지막 프로그램에는 일종의 goto가 포함되어 있습니다. 휴식이나 계속을 사용한 적이 있다면 goto를 사용한 것입니다. 그게 다야. 물론, 그것은 "안전한"goto이지만, 그것이 바로 그런 것입니다. 고토는 용도가 있습니다. continue 또는 break와 같은 "암시 적"gotos가 사용되는지 또는 명시 적 gotos인지 (언어에 상관없이 실제 키워드 "goto"사용). 언어 개발자가 완벽하지는 않지만 일반적으로 ... 언제부터 기능이 존재하는 경우 (해당 언어). 아마도 그 측면은 그 언어의 품질을 정의하는 것 같습니다. 의미하는 것은 .. 이전 버전과의 호환성으로 인해 사용 중일 가능성이 높습니다. 오늘 사용되고 있습니다. 5 분 전과 같이 제대로 사용했습니다. 글쎄 .. 누군가가 그것을 부적절하게 사용하고 있지만, 그것은 내 목록의 # 3과 관련이 있습니다.
1.-모든 것이 개체입니다.
좋아요 .. 이것은 실제로 # 2의 부분 집합입니다. 그러나 이것은 내가 증오 목록에서 볼 수있는 가장 성가신 불만입니다. 모든 것이 대상이 아닙니다. 객체가 아니거나 객체가 될 필요가없는 많은 개념들이 있습니다. 그들이 속한 곳에 물건을 두는 것은 추악하고 프로그램의 효율성을 떨어 뜨릴 수 있습니다. 확실한. 언어에 따라 크게 다르지 않을 수도 있습니다. 이것은 # 5 와도 관련이 있습니다. 이것은 ... 그렇습니다. 글로벌은 괜찮습니다. 정적 메소드에 적용되는 함수는 정상입니다. OO 프로그래밍과 전역 함수를 결합하는 것은 좋습니다. 그렇다고해서 우리 모두가 객체 모델에서 코드를 "무료로"외출해야한다는 의미는 아닙니다. 코드 또는 전체 프로젝트의 한 부분을 설계 할 때, 어떤 일이 장면 뒤에 발생 해야정리할 때 고려하십시오. 그 개념이 어디에 있는지 그리고 다른 많은 요소들만이 아닙니다. 목적이없는 클래스 나 네임 스페이스 개념 내에서 전역 함수를 래핑하는 이유는 무엇입니까? 정적 멤버 변수를 사용하십시오. 언어와 구현에 따라 다르지만 일반적으로 말하면, 당신은 전 세계를 선언했습니다. 예, 이러한 비 OO 개념을 OO 래퍼로 감싸 야하는 몇 가지 이유가 있습니다. 물론 자체 문서화 코드입니다. 말이 될 수 있습니다. 그래서 .. 내가 말하는 것처럼. 외출하지 말고 코드를 "자유롭게"하지 마십시오. 그러나 현대의 훌륭한 언어는 OO 모델링 이외의 글로벌 개념을 갖습니다. 글로벌 개념이없는 OO 프로그래밍 언어에는 심각한 디자인 결함이있을 가능성이 높습니다. 다시 .. 언어의 의도와 디자인에 따라 달라 지므로 특정 언어를 선택하려고 시도하지 않으며 여기에 분석 할 언어가 너무 많습니다. 누구든지, 코드가 어디에 살고 가장 효과적인지를 고려해야합니다. 기능을 추가하지 않거나 지원하지 않는 무언가에 플레어를 추가하면 키보드가 더 빨리 마모됩니다. 아무도 좋은 일을하지 않습니다. 글쎄 .. 당신이 아마 당신에게 잘못 가르친 사람의 브라우니 점을 좋아하지 않는다면 모든 것이 목표라고 생각합니다.
간단히 말해서 프로그래밍은 키보드를 가볍게 두드리는 것이 아닙니다. 모든 프로젝트에는 많은 디자인 고려 사항이 있습니다. 나는 그것이 진부한 것을 알고 있지만, 당신은 모든 각도에서 그것을 봐야합니다. 오늘날에도 안전한 유형의 언어입니다. 코드를 정리하지 않고 잘 작동 할 것으로 기대합니다. 물론 .. 그것은 효과가있을 수 있지만, 올바른 방법이 아닐 수도 있습니다. 전반적으로 특정 작업과 환경에 가장 적합한 언어와 형식을 선택하십시오. 그러나 어떤 언어도 그 뒤에 생각을 빼앗아 가지 않습니다 . 당신이 생각하지 않으면 .. 당신은 입력입니다.