우리가 "한 번 쓰기, 어디서나 실행"한다고 생각하더라도, 그것은 영원한 역 호환성과 완전히 똑같은 것은 아닙니다. 실용적으로, 당신은 미래 버전의 프레임 워크가 어떤 것을 변화시킬 것으로 기대해야합니다. 때때로 이것은 보장 된 행동 (가장 최악의 변화)을 제거하는 것이지만, 라이브러리의 미래 버전이 개발자가 아닌 구현 세부 사항에 의존 할 때까지 코드의 버그가 눈에 띄지 않게됩니다. 보장. 드물게 오래된 코드는 최신 버전의 새로운 버그를 나타낼 것입니다.
이상적인 세계에서는 보증 된 동작에만 의존하는 코드를 작성하고 보증이 제거되지 않으므로 유효한 코드가 계속 영원히 작동합니다. 이에 반하여 프로그램이 완전히 정확하다는 것을 증명하기가 어렵습니다. 언어/프레임 워크/라이브러리 개발자는 완벽한 호환성을 유지하면서 원하는 개선 사항을 추가 할 수 있는지 여부를 결정합니다.
인수를 얻으려면 호환성이 뛰어나므로 원본 API는 변경하지 않고도 충분히 견고하고 충분히 안정적이어야 생존 할 수 있습니다. 일치하지 않으면 호환되지 않는 변경이 이루어 지거나 API가 완전히 포기됩니다. 어느 쪽이든, 이전 버전을 실행하기 위해 멀리 떨어져 있지 않으면 프로그램이 더 이상 실행되지 않습니다.
트릭을 수행하는 방법에 대해 물어보십시오. 먼저 좋은 결과를 얻으려면 약간의 행운의 인터페이스 디자인이 필요합니다. 그렇지 않으면 확고한 의지와 "비즈니스 사례"(또는 비영업 동기) "오래된"버전을 무기한 지원합니다. 예를 들어, Python 3은 Python 2와 호환되지 않지만 Python 2는 여전히 적극적으로 업데이트로 지원되므로 오래된 Python 코드가 여전히 실행됩니다. C99는 C89의 몇 가지 기능 만 제거하고 다른 모든 기능이 실패하면 C89 컴파일러는 여전히 활발하게 유지 관리됩니다. 브라우저는 천 가지 이전 버전과 비표준 HTML 단점을 지원합니다. 나는 JSF와 richfaces가 그것들과 어떻게 비교되는지, 또는 클라이언트로부터의 "오래된"(또는 기발한) HTML/CSS/Javascript 동작에 대한 지원에 의존하는 페이지를 출력하는 정도를 알지 못한다.
그래서 적어도 잠시 동안은 일어날 수 있습니다. 그러나 웹에서 나간다는 것이 더 이상 안전한 브라우저에서는 사용할 수없는 IE6 기능이 있습니다. (샌드 박스 VM 또는 IE6을 마음에 들지 않는 컴퓨터에서 실행할 수 있다고 생각합니다.) 당신이 처음에 의지했던 것.독점적 인 브라우저 확장이 향후 버전에서 돌처럼 떨어질 것으로 예측 될 수 있습니까? 아마, 그 IE6 app-writers는 당시 적절한 표준을 사용하기를 원했을 것입니까? 항상 그런 것은 아닙니다. IE6에 관여하지 않은 사람들을 위해, 앱이 비슷한 함정에 빠지면 운이 없어집니다.
커뮤니티 위키 체크 박스에는 어떤 변화가 있습니까? – stacker
사라졌습니다 : http://meta.stackexchange.com/questions/67039/what-can-we-do-to-make-community-wiki-better/67192#67192 –
JavaScript 오류에 대한 예를 들어 줄 수 있습니까? 뭐하는거야? 내 말은, 그들은 응용 프로그램의 기능에 영향을 줍니까? 아니면 그냥 짜증나 는가? – Jeremy