Although I'm more of a functional programmer and ADT addict, I still find this language appealing. Reading the manual, it feels like a lot of correct design decision have been made, contrary to languages like C++. Most notably for me: 1) Memory allocation and reference is restricted, leading to less problems with memory management. 2) Syntax is more flexible, allowing for higher levels of abstraction.
I am a huge protester to the "constantly abbreviating words" habit in coding. It may have had a place when source code space had drastic limitations, but today "func, proc, writeln, strcpy" are anathema to me. Also I get that a lot of these in Seed7 examples were lifted unchanged from Pascal, but that just means that I dislike those aspects of Pascal as well.
I am of the camp "use full English words", and "if the identifier is too long then spend the time needed to find a more concise way to say what you mean in fewer or shorter full English words". Incidentally AI can be pretty good at brainstorming that, which is lovely.
… yet you have contracted «artificial intelligence» to «AI», have not you?
The case for abbreviated keywords will always exist as some will prefer contractions whereas some will have a preference for fully spelled out words.
At the opposite side of the spectrum there C / C++ that use neither for functions and procedures but «printf» and «strcpy» – as you have rightfully pointed out which ADA, COBOL and Objective C contrast with
ADA: «Is_Valid_User_Access_Level_For_Requested_Operation», «Convert_String_To_Standardised_Date_Format»
COBOL: «PERFORM Calculate-Totals VARYING Index FROM 1 BY 1 UNTIL Index > Max-Index»
Objective C: «URLSession: dataTask: didReceiveResponse: completionHandler:»
I do not think that a universal agreement on the matter is even possible.
Why? I would try to find a short program that’s somewhat similar to typical real-world code. I wouldn’t know what my #1 choice for that would be, but naive recursive Fibonacci, it would not be.
https://www.swift.org/ has better examples: simple web apps, CLI tools, and embedded code.
Because the implementation should be familiar to most devs, which makes it easier to see what kind of language you're dealing with.
Binary sort would be another candidate for me, but people get it wrong in subtle ways and not every language does array updates.
Your examples don't make much sense to me. A web app using what framework? What does that say about the language? CLI apps could work if you could find one that people recognize and that's small enough for an example.
The creator is an incredibly nice and bright person.
I love to talk to them at various meetups and one can feel their love for the language and the intricate design of it.
It's a bit sad it's such a niche of a niche language.
i can confirm that. i met him in vienna a few times. my experience was is exactly like you say.
He attends like every meetup I attend, so it's easy to run into him :)
Although I'm more of a functional programmer and ADT addict, I still find this language appealing. Reading the manual, it feels like a lot of correct design decision have been made, contrary to languages like C++. Most notably for me: 1) Memory allocation and reference is restricted, leading to less problems with memory management. 2) Syntax is more flexible, allowing for higher levels of abstraction.
https://en.wikipedia.org/wiki/Seed7
Discussed (just barely) in the past. Other threads?
Seed7 programming language - https://news.ycombinator.com/item?id=10544046 - Nov 2015 (3 comments)
Seed7 programming language - https://news.ycombinator.com/item?id=637224 - June 2009 (2 comments)
I am a huge protester to the "constantly abbreviating words" habit in coding. It may have had a place when source code space had drastic limitations, but today "func, proc, writeln, strcpy" are anathema to me. Also I get that a lot of these in Seed7 examples were lifted unchanged from Pascal, but that just means that I dislike those aspects of Pascal as well.
I am of the camp "use full English words", and "if the identifier is too long then spend the time needed to find a more concise way to say what you mean in fewer or shorter full English words". Incidentally AI can be pretty good at brainstorming that, which is lovely.
`func` and `proc` are types in this language, so you could define `procedure` and `function` if you want.
The other uses of `func` should be changeable with the flexible syntax extensions the language offers, but I haven't dug into that.
… yet you have contracted «artificial intelligence» to «AI», have not you?
The case for abbreviated keywords will always exist as some will prefer contractions whereas some will have a preference for fully spelled out words.
At the opposite side of the spectrum there C / C++ that use neither for functions and procedures but «printf» and «strcpy» – as you have rightfully pointed out which ADA, COBOL and Objective C contrast with
I do not think that a universal agreement on the matter is even possible."Hello World" really needs to be retired, and "99 Bottles of Beer" should really be a mandatory example program.
I hereby cast my vote for naive recursive Fibonacci.
https://github.com/codr7/shi#language
Why? I would try to find a short program that’s somewhat similar to typical real-world code. I wouldn’t know what my #1 choice for that would be, but naive recursive Fibonacci, it would not be.
https://www.swift.org/ has better examples: simple web apps, CLI tools, and embedded code.
Because the implementation should be familiar to most devs, which makes it easier to see what kind of language you're dealing with.
Binary sort would be another candidate for me, but people get it wrong in subtle ways and not every language does array updates.
Your examples don't make much sense to me. A web app using what framework? What does that say about the language? CLI apps could work if you could find one that people recognize and that's small enough for an example.
Too much syntax for me, adding filler words to make it read more like English is a programming language design dead end imo.
Looks interesting.
I’ve never liked the idea of the syntax where functions are declared and then assigned to variables. I guess it’s supposed to be elegant?
If functions are first class, then they must be stored as variables. I mean, consider any FP Language.
They can still be first class without declaring them in this manner.
Sure. But if they are first class and you have a mechanism to assign them to variables then there is no need for syntax sugar.