Should Apple create a simple programming language?

I also think the langauge is getting uglier. keep adding things.

1 Like

Well it appears that there's not much demand for a simpler programming language.

I think there is still a demand for a simpler programming environment, and not just language. A simpler language alone, with the same powerful-but-very-complex frameworks and APIs wouldn’t help much, and I guess that’s why you will not find many people here (where people are used to dealing with the complexity I just mentioned) asking for something like that.
Back then, I loved HyperCard, which managed to be an easy-to-use development/authoring environment, including a simple language (but not just that).

But as wonderful as HyperCard was, I’m not sure it would be worth re-creating a similar software today. When I see the progress of large language models (such as the recently-released ChatGPT), I tend to think that they will soon be the tools filling the slot of “easy custom app development for non-developers”. It seems to me the day will come much sooner than I thought when we can just tell the computer: “make me a little app for managing my collection of [whatever], and make it able to scan items directly using my iPhone’s camera”.

And developers of complex applications will continue to use languages such as Swift.

1 Like

I read your posts/checked out the info (eg - compiler, ChatGPT) thanks everyone.

Ok, so that's not a resounding no, got it.

Look, all I know is that I would love to be able to have and use a simple programming language like Visual Basic to make Apple apps.

To me it's a no brainer..... Apple should offer another language with Xcode.

A programming language for people who find subjects like mathematics and computing science difficult (or very difficult) to grasp/understand.

After all, there's a LOT of people like this out there, and I'm sure that once word got out that Apple had a new programming language that enabled apps to be made easily..... That would mean that Apple would sell lots more hardware and software and therefore makes lots more money.

Again, it's a no brainer!

Does anyone out there agree with me?

1 Like

Which features are you willing to give up to get that? Which are important to keep?

1 Like

I'm not too sure that you would need to give up features.

I mean the main point is to keep the language's syntax simple so that non-mathematical people can use the language to make apps easily. Of course there may be features that, for whatever reason, can't be included in this new language. So, with that in mind....

To answer your question, I'll take a guess and say, this new language would just have the fundamental features/the majority of features that exist in something like VB6.

I don't see how simplification could be accomplished without removing anything. The complexity is there because it does things, it's not ornamental.

Would you want this new language to be able to use existing platform libraries for e.g. user interface components, graphics, localization, accessibility, and IO, or would it need its own parallel set of frameworks?

1 Like

Apple has tried it: we used to be able to write Cocoa applications for MacOS in AppleScript, in Xcode (still possible, but less easy since the corresponding template for new projects is not included anymore). Years ago, they also provided access to Cocoa development from Ruby and Python.

But in my experience, using this approach quickly leads to one conclusion: most of the complexity resides not in the language itself, but in the rest of the development environment. The APIs you have to use, Interface Builder, Xcode itself, etc.
It then makes sens to focus on only one language, which allows APIs to be tailored specifically for the style of this language.

As I said above, changing just the language will not help these people a lot. Understanding how to create an application with AppKit or even with SwiftUI quickly becomes hard, and the first contact with Xcode can be pretty intimidating for people nor used to programming and IDEs.

Apple provides a few other solutions for developing small tools: AppleScript/JavaScript with the Script Editor, Shortcuts/Automator for flow-oriented automation, and now Swift Playgrounds for simple SwiftUI-based apps.
But does it necessarily have to be Apple proposing solutions for all the kinds/levels of development? Some third-party solutions might better suit your needs. Have you checked LiveCode, for example?

:slightly_smiling_face:
It used to be that “you can easily develop your own applications on your brand new computer” was a key argument to sell computers, but that was a long time ago. I don’t think it’s such a strong selling point nowadays (but I may be wrong, of course — after all, at least some people at Apple seem to think that this argument still has some value, or we wouldn’t have the Swift Playgrounds application).

1 Like

I think most people consider it a noble and admirable goal! It’s just easier said than done.

4 Likes

i think this is still true but the definition of an “application” has evolved over time into more and more domain-specific forms (spreadsheets, reminders, email filters, etc.). arguably even something as simple as setting an alarm is “developing an application” if you really think about it.

so i would argue that Apple was actually so successful at creating “simple programming languages” that today we do not even recognize it as “programming”.

2 Likes

I think that there would be found a great demand for considerably easier programming of a computer. In the home computer boom of the 1980s, people could simply turn on the computer, type in a program, run it, be told "Syntax error", and then learn about debugging. Today, even the most menial task like printing "Hello World" requires installation of gigabytes of additional software, complicated configuration of the tools, and often the use of a "project".

Yes, a simpler language will be restrictive compared to the likes of Swift, C++, et al, but for many many everyday cases the restrictions would be more than bearable. Nobody considered a Commodore 64, BBC Micro, or Apple II particularly restrictive in their heyday, and an awful lot was possible - and fed imagination - with only their BASIC languages. Not everybody needs to be communicating with servers over a network, nor even producing an app for the App Store. A lot of people just want an easy-to-use environment with which they can learn the basics and write useful programs for themselves. For commercial applications, XCode and Swift might be necessary, but for convenience and accessibility (for experts as well as novices) it would be hard to beat a simple text editor with a "run" button next to it.

There is also the case of using the best tool for the job. The heavyweight languages/libraries/IDEs are fantastic for large-scale development of complex software, but are they appropriate for other tasks? At one time it was popular to have languages specialised towards writing text adventure games. Other languages for writing arcade games. Other languages for controlling toys and robots. There are thousands of languages in common use for special cases, and when working in those special cases it is best to learn that language and use it.

For some reason, the special case category of "simple/beginner" languages (and/or environments) never manages to sustain any support. As people have suggested, one reason is feature creep. Another reason could be a lack of interest in maintaining the tools as the world evolves around them. Another reason could be faux simplicity - "dumbing down", essentially - where the language or IDE is deliberately unsuited to use beyond a classroom and people are expected to grow out of it.

I think the underlying reason, however, is the desire to not be restricted. The easy way out is always to throw money/memory/storage/CPU at the problem and expand the capability of the system. The hard way is to learn how to develop better algorithms and become inventive, which is actually quite a useful skill. Perhaps a simple/beginner language and environment requires a concerted determination to impose restrictions which at one time were imposed by hardware technology; now they have to be imposed by will-power. Unfortunately, anything that depends on will-power is always going to struggle.

2 Likes

Would something like scratch do the job? :slight_smile:

3 Likes

I might be in a minority here, but I would not consider Scratch to be simple. It involves far too much "magic", and a small amount of code produces disproportionately sophisticated high-level effects.

1 Like

I think that this is an excellent point. Personally, I think languages with advanced features that have progressive disclosure, allowing you to start with the basics and dig deeper into advanced concepts as you encounter them, are the best learning languages. Learning simple concepts like procedural abstraction in a simple language that is stripped of complicated features, and then having to start over and learn a whole new language when you get to a more advanced concept like polymorphism, actually increases the learning curve. With a language that includes these advanced features, you can build on top of what you've already learned and more easily draw connections to familiar concepts because you're working in the same language.

The first language I ever learned was C++. When I tell people that, they're often surprised and wonder how I dealt with all of that complexity. The answer is that I just didn't touch any of the complicated features until I was comfortable enough with the basics to move on and learn something more.

18 Likes

I would say that only a programming language with a certain complexity allows you to build nice APIs for specific use cases. The usage of such an API then can be quite simple, giving you code that can be understood and written even by the casual programmer.

2 Likes

There is also FileMaker, which is developed and sold by Apple subsidiary Claris.
It’s a good tool for certain use cases and is low code. Though not a programming language but rather a script-controlled database suite.

1 Like

If somebody wants to write stories like Dickens or plays like Shakespeare, learning English is the least of their problems. They need intellectual skills that are independent of any concrete language.

Similarly for wanting to write applications. If somebody wants to write a complex application then they should learn how to do so and choose a language suited to the task. The industry caters for that market extremely well.

However, if somebody wants to write a simple program then they're faced with unnecessary hurdles. In the 1980s you could turn a computer on, type in a BASIC program calculating things and drawing graphics, and run it all in less time than a 2018 Mac Mini boots up. It's the kind of convenience that the pocket calculator brought when the alternative was to use pencil and paper, and it's missing as standard in modern systems.

To answer the original question, given that everybody's idea of "simple" will differ, and thus virtually impossible to achieve, I don't think it should necessarily be Apple who creates such languages.

The question of what makes a language simple was discussed above.

I would just like to point out, that what makes a language great and simple is the amount and quality of tooling and learning material. Problems that you have to solve when working with computers are often quite complex and multilayered - and often may not be even caused by your code or compiler at all!

In that sence, I think that the answer is yes. Apple should make a simpler language, Swift, by investing into new and refining existing tools and learning materials. They do, but there is always more one can do.

I would even ask Apple to integrate Swift even more into it's products (or at least Swift syntax look-alike). For example, last time I have fired up Numbers I was really disappointed, there is still this thing called AppleScript I have no interest of learning just to grind up few numbers :smiley: Just give me my Swift in iWork :smiley:

You can always make Swift easier for yourself (or whoever) by restricting to a specific subset of Swift syntax. Nobody makes you to write actors, just don't use them. Of course, then you can't call yourself a Swift developer with clear conscience but you certainly can create a useful software.

Since "creating a programming language" is not that great of a task in the first place (creating your language in yacc is a common assignment in CS majors in my country), I think that for a big company like Apple, creating yet-another-programming-language would be a pointless waste of resources. What problem is "creating a new language" solving anyway? Look at GNOME, they have their own Vala written in yacc, perfectly fine language, yet the GNOME Shell is written 50% in C and 50% in JavaScript :see_no_evil:

(misclick, I meant to reply to intswift and not Xeny)

Isn't that exactly the point? What's the alternative?

People want applications to do complex things. The only way that happens is if a good framework handles that complexity and presents a simple interface. This necessarily means that a little bit of "code" does a lot.

5 Likes

I think the best way to do this would be to to make a scripting language style version of swift. Keep the same basic syntax for functions, classes, structure, enums, etc. But only have a single Int type. A single Float type, etc. maybe even even just Number. Juggle types at runtime when possible. Auto-convert numbers to strings, etc. Get rid of all generics. Use duck typing instead of protocols. The actual values would contain more metadata, be more dynamic, and support a much more robust reflection API. Basically it would remove a bunch of language complexity at the cost of making it slower and increasing memory usage. You'd get fewer compile time errors but more runtime errors. When calling into Swift code the run time would attempt to bridge the types and throw an error if it closing do it.

I think that would make for a better scripting language and be easier for beginners to pick up. And it would be a stepping stone to learning Swift itself. I don't know how much demand there would be for something like that but I think it would be useful.

This is why I say everybody has a different idea of "simple". In the case of languages and tooling like Swift/XCode or Scratch, I would say that they are "easy", not "simple". They obtain their ease-of-use through immense complexity.

For me, one measure of the simplicity language is how easily something written in it can be largely understood by somebody who has no prior knowledge of that language.