왜 유닉스 API가 없나요? [폐쇄]

왜 유닉스 API가 없나요? [폐쇄]

왜 유닉스 API가 없나요? 내 말은, Windows API가 있기 때문입니다.

나는 유닉스 세계의 많은 것들이 모듈식이며 함께 모여 완전한 시스템을 만든다는 것을 알고 있습니다. 이것은 훌륭해 보이지만 네이티브 Unix 애플리케이션을 만들려고 할 때 몇 가지 문제를 야기합니다.

예를 들어, 아름다운 워드 프로세서를 작성하고 이름을 WP로 지정하려고 합니다. Windows 버전의 WP는 Windows API를 호출하여 구축됩니다. C로 직접 코딩하거나 다양한 래퍼 라이브러리를 사용할 수 있습니다. 그러나 프로그램은 여전히 ​​프로그래머가 Windows 애플리케이션을 구축하는 데 필요할 수 있는 기본 시스템 호출부터 GUI, 3D, 멀티미디어 또는 10년 이상 이전 버전과의 호환성을 갖춘 기타 기능에 이르기까지 모든 기능을 제공하는 winapi를 호출하여 구축해야 합니다. . 그게 아니었다면 와인은 불가능했을 것이다.

이제 Unix 버전의 WP를 만들고 싶습니다. 표준 C 및 C++ 라이브러리와 POSIX API는 매우 안정적이며 모든 Unix 변형에서 잘 지원됩니다. 문제는 더 많은 것을 하려고 할 때 발생합니다. 그렇다면 WP용 창을 만들어야 하는데 어떻게 해야 할까요? X11이 있지만 이것이 유일한 것은 아닙니다. X11을 교체해야 한다고 느꼈고 현재 Wayland와 Mir라는 두 가지 호환되지 않는 교체 제품이 생산되고 있습니다. X11의 경우에도 Xlib와 xcb가 있습니다. xcb는 그들이 "더 낫다"고 주장하며 어떤 면에서는 그렇습니다. 그러나 문서는 어디에 있습니까? 작업을 완료하기 위해 결국 Xlib를 선택하게 되지만 X11 표준 자체는 매우 기본적인 기능만 정의합니다. GUI 애플리케이션에서 기대하는 추가 기능(예: 창 이벤트 또는 클립보드 지원)은 확장 기능을 호출하여 처리해야 합니다 XInternAtom. 이것은 단지 내 개인적인 의견이지만 X에서 Atom을 사용하는 것은 매우 비직관적입니다. 또 다른 문제는 모든 X 창 관리자가 이러한 확장 기능을 제대로 지원하지 않는다는 것입니다. 따라서 이 더러운 작업은 새 릴리스가 나올 때마다 이전 버전과의 호환성을 깨뜨리는 GTK+ 및 Qt 개발자에게 맡기자. Linux에서 휴대용 드래그 앤 드롭 지원을 제공할 수 있습니까?

내 생각에는 유닉스 커뮤니티가 데스크탑 세계에서 자살하고 있는 것 같다. 내가 언급한 내용이 BSD 서버를 설정하는 데 중요하지 않다는 것을 알고 있지만 이식 가능한 기본 Linux 애플리케이션을 구축하려는 경우에는 중요합니다.

이 모든 혼란을 일으키는 것은 무엇입니까? 이를 정리하고 최신 Unix 데스크탑 환경을 표준화하려는 실질적인 노력이 있습니까? 왜 유닉스 API가 없나요? 하나도 있을까요?

답변1

UNIX라고 불리려면 무엇보다도 POSIX 표준을 구현해야 하는 인증 프로세스를 거쳐야 합니다.

따라서 귀하의 질문은 완전히 유효하지 않습니다. UNIX API가 있는데 POSIX라고 합니다.

편집: 요구 사항 목록은 다음과 같습니다.http://www.unix.org/version4/overview.html

답변2

내 생각에는 유닉스 커뮤니티가 데스크탑 세계에서 자살하고 있는 것 같다.

나는 어떤 형태로든 유닉스가 오로지 가정용 PC 시장에서 경쟁하기 위해 존재한다는 오해가 있다고 생각한다. 이에 초점을 맞춘 Linux 배포판이 몇 가지 있습니다. 첫 번째는 실제로 Ubuntu였습니다. 하지만 Ubuntu의 원래 비전 중 일부는 비용을 지불하지 않고도 전 세계에서 사용할 수 있는 사용자 친화적인 운영 체제를 개발하는 것이라는 점을 고려해 볼 가치가 있습니다. 모든 컴퓨터의 Microsoft 라이선스는 로컬에서 사용하기 위해 수백 달러에 구입할 수 있습니다. 실행 가능하며 컴퓨터(학교, 정부 등)가 있는 것과 없는 것의 차이를 의미할 수 있습니다.

나는 이것이 얼마나 성공적인지 추적하지 않았지만, 그럼에도 불구하고 그것은 Apple이나 다른 것을 추월하려는 것과는 매우 다른 목표인 것 같습니다. 그들이 말했듯이 사과와 오렌지. 아니면 사과와 땅돼지. 1 이 땅돼지는 사과처럼 전혀 보이지 않아요! 아니요, 그렇지 않습니다. 왜 그런 것 같나요?

이제 Unix 버전의 WP를 만들고 싶습니다. [...] 결국 작업으로 Xlib를 선택하게 됩니다.

당신이 미친 사람이 아니라면 대량 소비 가능성이 있는 워드 프로세서를 만들 수 없을 것 같습니다.

소프트웨어는 다양한 계층에 존재하며 스택으로 조립됩니다. X는 GUI 스택의 일부로 다양한 플랫폼에서 사용되는 레이어입니다. 이러한 플랫폼에서는 X lib를 사용하여 구현합니다.더 높은 단계Gtk 및 Qt와 같은 라이브러리에는 둘 다가지고 다닐 수 있는 응용 프로그래밍 인터페이스;OSX와 Windows에서 사용할 수 있으며 둘 다 X를 사용하지 않습니다. 이러한 플랫폼에서 Gtk와 Qt는 서로 다른 하위 수준 라이브러리/API를 사용하여 구현됩니다. 이는 Gtk 또는 Qt용으로 작성된 최종 사용자 GUI 애플리케이션과 같은 상위 수준 프로그램을 비교적 사소한 변경만으로 어디에서나 사용할 수 있음을 의미합니다. 2

이는 POSIX 시스템에서 GUI 응용 프로그램을 구현하는 데 직접 사용되는 라이브러리입니다. 따라서 대부분의 이러한 응용 프로그램은 일반적으로 "거의 호환되는" POSIX 시스템에서 다른 시스템으로 이식하는 것이 어렵지 않습니다.

따라서 귀하가 언급하는 "문제"는 실제로 귀하가 제시하는 방식으로 존재하지 않습니다. 유닉스 커뮤니티는 자살을 시도하는 것이 아니라 자신이 원하는 일을 하고 있습니다.


1. 내가 의미하는 바를 더 잘 설명하기 위해 GNU/Linux 및 Windows의 발전에서 자유 시장의 역할을 생각해 보십시오. 후자는 분명히 자유 시장 세력의 산물이지만 전자는 훨씬 더 모호합니다. 물론 훌륭한 서구인으로서 우리는 이론을 먼저 생각하고 "분명히 자유 시장이 만든 제품은 비자유 시장이 만든 제품보다 낫다"고 말합니다. 그러나 이는 전적으로 사실이 아닙니다. 이는 실제로 사람들이 경향이 있다는 것을 의미합니다.더 잘 팔아. 이런 의미에서 귀하는 왜 제품을 더 잘 팔게 만드는 데 더 많은 노력을 기울이지 않는지 묻는 것 같습니다. 물론 대답은 그렇게 할 동기가 적다는 것인데, 이는 동기를 어떻게 해야 할지에 대한 의문을 제기합니다. GNU/Linux의 개발은 (특히) 개발자의 주도로 이루어졌습니다.나와서 마음껏 즐겨보세요, 다른 사람이나 대중 시장이 아닙니다. 이것이 더 나은 시스템을 낳을지는 당신의 관점이 그것을 만든 사람의 관점과 얼마나 가까운지에 달려 있다고 생각합니다. UNIX의 역사는 더 많은 시장 세력을 포함하지만 매우 전문화된 청중입니다. 즉, 이것은 기술자를 위한 기술적 운영 체제이지만 일반 대중을 위한 토끼굴도 있습니다.

2. 반대로 Windows API를 사용하여 무언가를 작성하는 경우 큰 변경을 하지 않고도 사용할 수 있는 곳은 한 곳뿐입니다. .

답변3

Unix에는 POSIX라는 사양/표준과 구현 방식이 있습니다. 하지만 우리 코드가 많은 아키텍처/플랫폼/시스템에서 작동하도록 할지 결정하는 것은 개발자의 몫이지만 다음을 따라야 합니다. 기준. 궁극적으로 대부분의 개발자가 따르는 것을 개발자가 따르도록 하십시오.

Windows에는 최고 경영진의 재무 지침을 기반으로 하는 소위 API라는 기능 라이브러리가 있습니다. (많은 사람들이 논쟁하겠지만 Microsoft는 가장 저렴한 AFAIK에 관한 것입니다... posix는 잘 지내려고 노력하는 것입니다.)

POSIX는 API와 같습니다. 재정적인 고려 사항 없이 코드만 함께 작동하도록 노력하는 것입니다. 이는 Microsoft 개념이 아니며 도로 또는 고속도로가 있습니다.

그게 제 생각이에요 ;-}

편집하다:::

내 게시물을 읽은 후 나는 약간 편견이 있을 수 있다는 것을 깨달았습니다. 손가락이 사실을 가지고 실행했기 때문에 그것은 의도가 아니었지만 내가 말하는 것을 의미하며 편견이 제거됩니다... 그게 가능하다면...

관련 정보