--
---
You received this message because you are subscribed to the Google Groups "The Ring Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/9f76d5f5-af37-42ec-ad3b-e5a208cf6bdfn%40googlegroups.com.
--
---
You received this message because you are subscribed to the Google Groups "The Ring Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/10fb9d1d-b710-4a06-a537-526021f4f864n%40googlegroups.com.
Hello Mahmoud,
This is a very nice news I start my day with!
Thank you and keep letting Ring be the langage that care about us.
The user-centered culture you embrace in this project is one of its main strengths.
During this SoftanzaLib project, I feel that Ring works hand in hand with me, and not against me, like it was the case in other languages I tried before.
All the best.
Mansour
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/c3f047a8-c735-4954-8d1b-f38807abdc0cn%40googlegroups.com.
Let's break the problem down into its basic components.
There are over 14,000 methods in stzString
, not 17,000. Of these, more than 3,000 are actually functions, not methods. These functions are designed to accelerate the use of some methods. For instance, @Len(str)
serves as an enhancement to the Ring len()
function for non-Latin strings and calls StzStringQ(str).NumberOfChars()
in the background.
This leaves over 11,000 methods. Softanza is designed to meet different needs, requiring a unique mindset. One notable aspect is the readability of Softanza code by language models (LLMs) and their ability to quickly learn its syntax and semantics. This led me to provide multiple alternative names for each function. In machine learning workflows, this is called "labeling," a crucial step in designing intelligent models.
On average, there are 10 alternative names for each Softanza method. Dividing the 11,000 methods by 10 gives us about 1,100 unique methods. If we feed all the stzString
class code to ChatGPT and ask it to identify the categories of features covered, we get around 20 distinct domains within the text processing field (refer to the attached document). This results in approximately 50 methods per domain, which is a very logical number.
On another scale, if we consider the file size of over 90,000 lines of code (LOC) and divide it by the number of classes, approximately 11,000, we get an average of less than 10 lines of code per function. This is the true metric for qualifying the codebase. You can verify this by reading the code on GitHub; the vast majority of functions are indeed that concise.
Regarding memorability, I have previously mentioned that these functions are designed to be forgotten. The programmer thinks in natural terms, and because Softanza is so intuitive and can handle most of the terminology used, what the programmer writes is often what Softanza understands and executes.
Finally, at the most basic level, if one needs to learn some functions, there is a simple model I developed in the design of the library. It consists of just a dozen functions that can perform any feature provided by Softanza. Refer to the attached diagram for this model, and I will elaborate on it in another post.
I hope this clarifies everything.
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/716d1c9e-c674-4a07-bfff-a8c32ce14c33n%40googlegroups.com.
I did my best to address the concerns about the size and learnability of the library, which I am very aware of. The five-step mental model for using Softanza was motivated by your feedback, especially from Bert, when you first discovered the library. I created this model to provide a strong response to the learnability requirements that I knew would be raised by any user. It took a lot of thought and numerous refactorings to reorganize the library around this model.
Regarding documentation, there are extensive narrations and hundreds of thousands of examples (over 30,000 lines of code for stzString
alone) explaining every aspect of the library. Some of these are detailed tutorials. However, all this information needs to be consolidated into a comprehensive online help system, which I plan to work on after the V1 release.
Lastly, testability has been a major focus from the very beginning. I usually write tests before writing the functions that implement them. This process should be automated, and it will be relatively easy to do since I use a specific syntax (/* to start the test region, #--> to indicate input, #!--> to indicate an error, etc.) in all the test files.
Softanza has been a grand challenge for me on many levels, but your help as a community and your constructive feedback have been invaluable.
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/8c89fa78-221e-410e-b0eb-3628ebb2e636n%40googlegroups.com.