4 ms·
Likely too much friction. Native environments benefit from using the expected IDE and tooling integration to build UI apps on respective platform. C or C++ is t
by zZorgz 7y ago
Likely too much friction. Native environments benefit from using the expected IDE and tooling integration to build UI apps on respective platform. C or C++ is the best common supported language, and they didn't even like that.
Also the UI frameworks are being written in said preferred language these days, eg SwiftUI, and adding one additional language could be perceived as a pain.
- eridius 7y agoApple ships a C++ compiler but you can't use C++ with Apple's platform SDKs. IF you want to use C++ you need to write Obj-C++ glue code to access most of the system frameworks, including UI code.
- zZorgz 7y agoI would look at it differently, i.e, obj-c++ is a valid supported language environment, that makes interopt with C++ pleasant at least compared to other interopt choices. Developers may choose to target Obj-C++ even out of preference.
- pjmlp 7y agoMetal and driver SDKs require C++.
- eridius 7y agoMetal is Obj-C.
- pjmlp 7y agoThen try to write Metal shaders in Objective-C.
- eridius 7y agoMetal shaders != Metal API. Metal API is Obj-C. Metal shaders are written in MSL (Metal Shading Language). C++ is still not involved, though MSL is admittedly based on C++.
- pjmlp 7y agoMetal API ⊇ Metal Shaders, it is useless without them. https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf https://developer.apple.com/metal/Metal-Shading-Language-Spe... "The Metal programming language is a C++14-based Specification with extensions and restrictions. Refer to the C++14 Specification (also known as the ISO/IEC JTC1/SC22/WG21 N4431 Language Specification) for a detailed description of the language grammar. This section and its subsections describe the modifications and restrictions to the C++14 language supported in Metal." Also, the MSL and Objective-C compilers are built on top of LLVM, written in C++.
- eridius 7y agoI don't know what point you're trying to make. MSL doesn't link with the rest of your program. No matter what language you use for your program, the shaders are written in MSL. For my program if I use Rust or C++ or Obj-C or Swift or a microscopic magnet and a very careful hand, I write my Metal shaders in MSL.
- pjmlp 7y ago1 - MSL is a set of extensions on top of C++14 2 - Metal requires MSL 3 - IO Kit is a C++ framework for macOS, iOS, iPadOS and watchOS drivers 4 - Metal GPGPU drivers are written in IO Kit 5 - Metal is useless without MSL and GPGPU drivers 6 - Ergo, Metal requires C++
- eridius 7y agoThe fact that Metal itself requires the existence of C++ really has nothing to do with this topic though, which is whether there's any downside to writing your app in a language that Apple doesn't ship a compiler for. The fact that Metal shaders are written in a language based on C++ is irrelevant to this question, because it doesn't matter what language you pick for the rest of your app as Metal shaders don't link with your app. Swift has zero integration with C++ and yet I can write a Metal app using Swift, because the fact that the shaders are written in MSL has no impact on the fact that the app uses Swift. And the language for writing drivers in is even more irrelevant because we're not talking about writing drivers. You can't write drivers in Swift either.