A company advertises an IT service and states that they need the software for Windows. The service provider asks which device class is meant in each case (e.g. Surface tablets). Stupid question: what differences are there? Do you use different programming languages, depending on whether a program is used as an app on a Windows tablet or as an executable on a desktop PC or notebook?
Windows only runs programs for Windows, none for Linux or Mac.
There are a few program libraries that are exclusive to Windows (.Met, although this is now available for Linux, but I'm unsure about Macs)
but basically it's about the end users who have Windows for whom you have to compile the source code. Even if you can compile Linux just as well.
It's all about Windows, not Linux or Mac. The distinction is meant between:
a) Windows tablet (e.g. Surface)
b) Laptop with Windows 10 as the operating system.
With a laptop you can be sure that you have a keyboard and mouse available, with a tablet there's definitely a touchscreen at the start. One should keep this in mind when designing the UI.
Because there are different GUI controls, one for normal desktop (mouse / keyboard) and one for "finger" input, which is usually called the tablet mode. And that would be good if the programmer optimized accordingly.
Since Windows on the PC is adjusted to the mobile versions, there are more and more parallels with mobile things.
You still have to pay attention to a few things that are hardware-related or possibly affect the display (touchscreen), but there are no big differences between the Windows API and .NET.
As far as software development is concerned, it doesn't seem to me that there are much of a difference. That company just wants someone who has already developed on the platform that is important to them. That is the point.
The programming language itself is not decisive, it is so general that actually all functions can be implemented with it.
However, every programming language includes libraries that adapt a generally used command to the respective hardware. If you do not have these libraries, then a syntactically correct program can't run on the target machine because, for example, the C command printf ("Hello World"); is syntactically correct, but there's no code to direct the output to a monitor.
Compare that to drivers for a USB wireless adapter. If you don't have it exactly for the type you are using, then it won't work. It wouldn't work if you had the modules for Linux, but not for Windows.
The programmer can write his larger programs, find syntax errors and use his computer's libraries (also with printf).
There are also cases where, depending on the target system, the code must also be changed. Normally, programs for the Windows PC should also run on the Linux PC. Of course not the Linux machine code on Windows and vice versa. The sources have to be translated for this or another operating system. Often, however, entire passages of the source code have to be adapted.
Thank you for your detailed reply! Imagine a program that fetches data from a server and displays it in the program / app. You interact, edit something and then send it back again. I.e. Basic input and output would be once via mouse / keyboard, once via touchscreen. The display would have to be optimized for the respective device. The only time and effort would be that the app has to be able to access the camera.
Would you say that it takes a lot of effort to develop this for both types of device, or are these just more or less small adjustments that the developer has to consider? The question is a bit whether it is worth writing out both. Thank you for your detailed answer! Imagine a program that fetches data from a server and displays it in the program / app. You interact, edit something and then send it back again. I.e. Basic input and output would be once via mouse / keyboard, once via touchscreen. The display would have to be optimized for the respective device. The only time and effort would be that the app has to be able to access the camera.
Would you say that it takes a lot of effort to develop this for both types of device, or are these just more or less small adjustments that the developer has to consider? The question is a bit whether it is worth writing both out.
It's the other way around: the IT developers want to know from us whether this has to be suitable for both types of device.
The GUI should actually have the same structure in both cases. And I would have thought that the software only expects an input and Windows then regulates the hardware with which this is recorded.
Windows tries, but a wipe etc, can be optimized, or additional function, which area works how.
otherwise you have generic and that works so-so
Then you need to take no account of them. Agree on a specification sheet and specifications, then everyone knows where they stand.
We'll do that anyway, it's just a matter of researching the market and estimating the order value.
Something like this has to be examined and decided on a case-by-case basis.
A program that should / must optionally fulfill hundreds of conditions is peppered with just as many if or case statements. This puffs up the code, even if it is well structured. Years later, the same programmer will hardly understand his code, others who are then supposed to expand something, adapt something or eliminate errors and have to read in first, have even greater problems.
It is therefore sometimes useful not to invent the "egg-laying woolly milk pig" x to make programs out of it.
The type-related handling of input and output devices is not implemented in a user program in modern operating systems. They have defined interfaces to virtual devices that are all the same from the app's point of view. Then it doesn't matter whether you swipe over a touch screen or move the mouse.