1. Getting to a release, an interim update, and why this is so hard
- Posted by ghaberek (admin) Aug 27, 2019
- 1291 views
Sigh. So. I've been toiling away at this a lot lately. Figured it was time for an update. Here's what I've got so far.
I've now set up a variety of platforms for building for testing. I have Windows, Linux, FreeBSD, and Mac OS X all in various stages of "working" builds.
I am considering retroactively stabilizing 4.1.0 as of the beta 2 release on 02-02-2015 and just moving forward with a 4.2 release instead.
In my testing so far, I've merged Matt's memstruct branch and my jsmn and uuid branches, and I've updated PCRE and jsmn to the latest releases.
There are a few other things I'd like to get implemented as well, like std/net/http.e using WinInet or cURL so it can support native HTTPS.
What I could really use is a thorough review of the documentation. I need somebody to go through docs and include and look for anything out of place.
I just want everyone to know I'm working on this, but it's hard and there is a lot involved and it's mostly these little details that take up so much time.
Keep in mind I'm also still working on Euphoria MVC and a rewrite of the website at the same time. The two projects provide some relief from each other.
-Greg
2. Re: Getting to a release, an interim update, and why this is so hard
- Posted by ChrisB (moderator) Aug 27, 2019
- 1253 views
Hi Greg
Appreciated. Will proof read the docs and includes to the best of my ability as time permits,
Cheers
Chris
3. Re: Getting to a release, an interim update, and why this is so hard
- Posted by Bhupen1277 Aug 27, 2019
- 1283 views
Sigh. So. I've been toiling away at this a lot lately. Figured it was time for an update. Here's what I've got so far.
I've now set up a variety of platforms for building for testing. I have Windows, Linux, FreeBSD, and Mac OS X all in various stages of "working" builds.
I am considering retroactively stabilizing 4.1.0 as of the beta 2 release on 02-02-2015 and just moving forward with a 4.2 release instead.
In my testing so far, I've merged Matt's memstruct branch and my jsmn and uuid branches, and I've updated PCRE and jsmn to the latest releases.
There are a few other things I'd like to get implemented as well, like std/net/http.e using WinInet or cURL so it can support native HTTPS.
What I could really use is a thorough review of the documentation. I need somebody to go through docs
and include and look for anything out of place.
I just want everyone to know I'm working on this, but it's hard and there is a lot involved and it's mostly these little details that take up so much time.
Keep in mind I'm also still working on Euphoria MVC and a rewrite of the website at the same time. The two projects provide some relief from each other.
-Greg
We have (had) a good version 4.5 or 4.6 a purely function programming language. What was needed was very accurate connections and wrappers to various dlls in C and keeping them current. There was and is no need for OOP. I will draw your attention to these articles.
https://dpc.pw/the-faster-you-unlearn-oop-the-better-for-you-and-your-software
https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7
What is needed is consolidating many includes into single includes and just have 4-8 includes. They were originally designed for lower strength and lower memory computers, and have no real validly in the modern computers with Windows 10 and similar powerful Linux distros. The whole world has also moved towards the Android operating system. Why not concentrate on Androids as well? Outside of North America and Europe, there is a whole world of poorer people who have taken to the Raspberry PI and similar. For example, the Pi is used for teaching primary and secondary school students in Kerala (population 35 million)
4. Re: Getting to a release, an interim update, and why this is so hard
- Posted by ghaberek (admin) Aug 27, 2019
- 1290 views
We have (had) a good version 4.5 or 4.6 a purely function programming language. What was needed was very accurate connections and wrappers to various dlls in C and keeping them current.
Yes, I agree. Down the road I'd like to have some sort of package management solution to keep this all organized and up to date. Adding support for things like JSON, XML, HTTPS, and other web technologies should help with this effort, so I believe those should come first.
There was and is no need for OOP.
Need? No, I suppose we don't need OOP features. But if we want to draw in more users and developers, and if we want to have access to a wider range of platforms and frameworks, I think adding OOP features would help. Wrapping wxWidgets, for instance, would be a lot easier if we had traditional classes/methods/inheritance/etc.
I will draw your attention to these articles.
https://dpc.pw/the-faster-you-unlearn-oop-the-better-for-you-and-your-software
https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7
Eh, a lot of times opponents to OOP are just fear-mongering and blowing smoke in order to promote functional programing, which I think is wholly worse than OOP. I agree that procedural programing, like Euphoria, seems to be the best route for well organized, modular, and maintainable programs. But I also think that Euphoria-with-classes would help extend that organization and modularity, and when used well, decrease complexity.
What is needed is consolidating many includes into single includes and just have 4-8 includes. They were originally designed for lower strength and lower memory computers, and have no real validly in the modern computers with Windows 10 and similar powerful Linux distros.
I don't disagree that the standard library could use some organization, but I'm not sure I agree about the number of separate includes. I don't think they were ever organized to reduce their size or due to any concerns about memory or other constraints. They're organized categorically. I think that the number of includes is going to scale in proportion to the number of features it provides. Look at other languages with even larger standard libraries, like Python, Lua, or Ruby. They're huge but they're assisted by the benefit of package management. What I'd also like to see is either a "did you mean this?" feature in the interpreter, or maybe Pete's approach in Phix where he auto-includes a lot of things.
The whole world has also moved towards the Android operating system. Why not concentrate on Androids as well?
This comes up a lot and I'm entirely for supporting more platforms, especially popular ones. You could build and run Euphoria on Android right now. But can you do anything with it? In order to make Euphoria useful on Android, we need a way to hook into the larger framework, which is very difficult outside of the Java/Kotlin environment Android uses. It's not impossible. Xamrin somehow manages to convert C# to Android (Java/Kotlin) and iOS (Objective-C/Swift) but it does so at many costs and with additional complexity.
Outside of North America and Europe, there is a whole world of poorer people who have taken to the Raspberry PI and similar. For example, the Pi is used for teaching primary and secondary school students in Kerala (population 35 million)
I'm already committed to supporting the Raspberry Pi. As I've said, I've got several on hand to test. 1A, 3B, a few Zeros, a Zero W, and I'll probably get a 4 soon enough. I can provide Android builds as well, but they won't be usable for graphical apps until we can solve the problems I mentioned above.
-Greg
5. Re: Getting to a release, an interim update, and why this is so hard
- Posted by irv Aug 27, 2019
- 1279 views
We have (had) a good version 4.5 or 4.6 a purely function programming language. What was needed was very accurate connections and wrappers to various dlls in C and keeping them current. There was and is no need for OOP. I will draw your attention to these articles.
https://dpc.pw/the-faster-you-unlearn-oop-the-better-for-you-and-your-software
https://medium.com/better-programming/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7
What is needed is consolidating many includes into single includes and just have 4-8 includes. They were originally designed for lower strength and lower memory computers, and have no real validly in the modern computers with Windows 10 and similar powerful Linux distros. The whole world has also moved towards the Android operating system. Why not concentrate on Androids as well? Outside of North America and Europe, there is a whole world of poorer people who have taken to the Raspberry PI and similar. For example, the Pi is used for teaching primary and secondary school students in Kerala (population 35 million)
There is no 4.5 or 4.6. If you meant 4.05, then 4.1 offers a few useful and helpful conveniences compared to 4.05, which is why I chose to use 4.1b2 to write EuGTK.
I see no plans to add OOP to Euphoria. As you say, it isn't needed, and there's no real demand for it. Where something akin to OOP is useful (such as in EuGTK) it can be implemented.
I'm in partial agreement about the multiple includes, but I don't see how bundling them all into 4 or 5 bigger includes is going to help anything. It would use more memory on those Pi's, and slow down compiling, so that would be counter productive. In addition, it would make the work of maintaining them more difficult.
Raspberry Pi's (which are certainly "lower strength and lower memory" computers) use Linux, which already runs Euphoria 4.1 just fine. As well as EuGTK, natively, unlike with Windows. What more is needed there? What Raspberry Pi's don't do, as far as I can find out, is run the Android OS very well.
As for running Eu on Android phones and tablets - well, that's a good point. It would expose more people to programming. However, it's not simple. Python apparently can do it, but just look at all that's involved:
https://www.androidauthority.com/an-introduction-to-python-on-android-759685/
On top of that, to develop real apps for Android devices, you need a Linux computer anyway.
6. Re: Getting to a release, an interim update, and why this is so hard
- Posted by Bhupen1277 Aug 27, 2019
- 1217 views
We have (had) a good version 4.5 or 4.6 a purely function programming language.
There is no 4.5 or 4.6. If you meant 4.05, then 4.1 offers a few useful and helpful conveniences compared to 4.05, which is why I chose to use 4.1b2 to write EuGTK.
I did mean 4.05 and 4.06
7. Re: Getting to a release, an interim update, and why this is so hard
- Posted by Bhupen1277 Aug 27, 2019
- 1237 views
I'm in partial agreement about the multiple includes, but I don't see how bundling them all into 4 or 5 bigger includes is going to help anything. It would use more memory on those Pi's, and slow down compiling, so that would be counter productive. In addition, it would make the work of maintaining them more difficult.
As developers many of you (pardon me) are too concerned about the time it takes for compiling. Ultimately, it is the finished application e.g. "a payroll system" written in Euphoria, compiled and presented to the business community as an "executable" for doing their payroll every week. It is that time that matters , NOT your time in waiting for the compiler to finish compiling.
I think the including of includes (there are so many) is more difficult right now than maintaining single include with 80 functions that are ALREADY well used and do not need changes
8. Re: Getting to a release, an interim update, and why this is so hard
- Posted by ghaberek (admin) Aug 27, 2019
- 1227 views
As developers many of you (pardon me) are too concerned about the time it takes for compiling. Ultimately, it is the finished application e.g. "a payroll system" written in Euphoria, compiled and presented to the business community as an "executable" for doing their payroll every week. It is that time that matters , NOT your time in waiting for the compiler to finish compiling.
I'm pretty sure that Irv's comment was directly related to the "start up" time the interpreter takes to read all its files, convert them to intermediate language, and begin executing. The Raspberry Pi uses cheap flash storage, which is slow, and a tiny ARM CPU, which is slow, and cheap memory chips, which are slow so any effort to that results in slower "start up" time will be more apparent to users on those systems. We should, at best, work to improve those times and at worst, not do anything that will slow it down.
The time requirement for compiling large systems directly affects how frequently developers are willing to push out releases. Compiling for a proper release takes more than just the code-to-executable time. There's unit testing, manual testing, documentation, packaging, distribution, etc. Currently on my system it takes ~30 minutes round trip through a cycle of "make a change" "do a clean build" and "check the unit test results" -- so on any given evening I can really only change-and-test half a dozen things before it's time for bed. That makes compile time worthy of concern IMHO.
-Greg
9. Re: Getting to a release, an interim update, and why this is so hard
- Posted by irv Aug 27, 2019
- 1223 views
Indeed. I suspect very few payroll systems are going to be run on a Raspberry Pi.
What we are, hopefully, interested in is getting more new users to adopt Euphoria as (one of) their programming language(s).
New users are going to be interested in (in my opinion):
- A quick, easy install process (see note below)
- Simple syntax
- Quick code and run cycle (on Pi, this means include only what you really need)
- Ample demos
- Graphics! (hello world only goes so far)
- Web connectivity
And finally, way down the list (not because they aren't interested, but because it is hard): Android games.
Note: I just spent nearly an hour installing python3 and kivy, which supposedly allows you to create Android apps with python.
After successfully installing kivy - well, about 20% of the demos actually work, and the appearance is somewhat short of spectacular. Don't want to say ugly, but...
With python, you're continually having to pip and search the web for libraries that sometimes don't seem to exist.
One of the strengths of Euphoria is that you get all of the libraries you need to actually do something, and the installation is straight-forward.
10. Re: Getting to a release, an interim update, and why this is so hard
- Posted by ghaberek (admin) Aug 27, 2019
- 1198 views
One of the strengths of Euphoria is that you get all of the libraries you need to actually do something, and the installation is straight-forward.
I think that as we grow, some middle ground will be required between "package everything in the installer" and "roam around the internet looking for third party libraries."
Even The Archive, for all its worth, was at best a loosely-organized assortment of various things in a wide variety of working and non-working states.
Eventually we'll need a basic or "console/server" installation, maybe "graphical/development" installation, and then rely on [package-manager] install [package-name] for other things.
I'm entirely open to suggestion on how to approach this.
-Greg
11. Re: Getting to a release, an interim update, and why this is so hard
- Posted by Bhupen1277 Aug 27, 2019
- 1191 views
Thank you Irv and ghaberek for your responses.
I developed a simple GST payment program in the late 1970s using a version of Basic language. GST is what a shopkeeper collects in Canada as tax on behalf of the Government when he sells anything, and then remits it on a monthly basis to the Government, retaining his commission. It took me 12-15 days to iron out all the little quirks. Much more than
30 minutes round trip through a cycle of "make a change" "do a clean build" and "check the unit test results"
It seemed excessive at the time, but the 16 year old grade 11 who was using it for the next 2 years did her monthly work in about 1 ½ minutes and to me THAT was my reward. Another shopkeeper started using it and was very grateful Now imagine even 200 users using that program. If my 12-15 days work was rewarding enough because there was instant GST calc and payment for over 2 year in ONE SHOP, the reward of it doing the same work in 200 shops is infinite. My 12-15 days do not count as anything compared to the TIME SAVED by the end users and the accuracy of results.
Later I was involved in developing a language – an interpretive language with a compiled executive. We counted things like time take for 100 eight digit multiplications, and time taken for 100 saves of data of 50 Kb (being a typical save in those days). We were NOT concerned with the time it took to compile the latest version of the software – it was considered irrelevant.
Anyway, you all have a good product working and for an old man like me, it would be nice to know that there is no need for newer and newer and newer and nerwer versioon, but only additions needed
12. Re: Getting to a release, an interim update, and why this is so hard
- Posted by ghaberek (admin) Aug 27, 2019
- 1187 views
Anyway, you all have a good product working and for an old man like me, it would be nice to know that there is no need for newer and newer and newer and nerwer versioon, but only additions needed
Well now I'm confused. Wouldn't each addition, by definition, create a "newer and newer version" of the product?
And "need" is such a subjective concept. A lot of us need the features we're adding; I know I'll use them every day.
If anyone does not need these features, they're free to ignore them, and they'll remain unaffected by the changes.
-Greg
13. Re: Getting to a release, an interim update, and why this is so hard
- Posted by Icy_Viking Aug 27, 2019
- 1194 views
Thank you Irv and ghaberek for your responses.
I developed a simple GST payment program in the late 9170s using a version of Basic language. GST is what a shopkeeper collects in Canada as tax on behalf of the Government when he sells anything, and then remits it on a monthly basis to the Government, retaining his commission. It took me 12-15 days to iron out all the little quirks. Much more than
30 minutes round trip through a cycle of "make a change" "do a clean build" and "check the unit test results"
It seemed excessive at the time, but the 16 year old grade 11 who was using it for the next 2 years did her monthly work in about 1 ½ minutes and to me THAT was my reward. Another shopkeeper started using it and was very grateful Now imagine even 200 users using that program. If my 12-15 days work was rewarding enough because there was instant GST calc and payment for over 2 year in ONE SHOP, the reward of it doing the same work in 200 shops is infinite. My 12-15 days do not count as anything compared to the TIME SAVED by the end users and the accuracy of results.
Later I was involved in developing a language – an interpretive language with a compiled executive. We counted things like time take for 100 eight digit multiplications, and time taken for 100 saves of data of 50 Kb (being a typical save in those days). We were NOT concerned with the time it took to compile the latest version of the software – it was considered irrelevant.
Anyway, you all have a good product working and for an old man like me, it would be nice to know that there is no need for newer and newer and newer and nerwer versioon, but only additions needed
The late 9170s? Are you a time traveler? Lol, I get you mean the late 1970s. Anyways, I think having the memstruct added to the next Euphoria version will help. Especially when it comes to wrapping libraries, like SDL, SFML, Raylib and so on. Might even help or make it easier to write libraries that would seem out of the question right now, like heavily Cplusplus libraries with lots of classes. However, I don't think OOP is needed for Euphoria. Even when I code in C, CPlusplus, I barely use OOP, however structs are very useful.
14. Re: Getting to a release, an interim update, and why this is so hard
- Posted by irv Aug 27, 2019
- 1193 views
I agree that memstructs would be a great help when building wrappers.
Let's avoid the mistake of trying to package Euphoria together with "other stuff" - for example, GUI's, or anything which calls on external .dll or .so files.
Because, as we can see, some of these GUIs change frequently (GTK3, for example, is updated often, adding new features). Others aren't actively maintained, and could become unusable because of some change in the OS, perhaps, and the original author has retired.
Plus the multiple platform issue, which further complicates things.
Even coding an installer program to automatically download the current best choice of libraries would require someone to constantly monitor all the different packages and update Euphoria. Much work, little gain, many chances for errors.
That's not to say that a page on OpenEuphoria.org shouldn't be devoted to a step-by-step installation process, branching to various tested add-on packages based on a user's requirements.