New Idea to construct new programming language for newbie (N+)

XinChao

Veteran
Veteran
Joined
Jun 11, 2012
Messages
117
Reaction score
3
Primarily Uses
As you know I am a newbie in programming as I progress learning, I find many things do not make sense often cause confusion for me. So, here I will save all what cause confusions in the programming language that could have done better to avoid. I save this so someday If I am  capable of create a new programming language I will use these as preference. 

The programming language I will construct (in the future when I mastered programming language ) called Noob Plus or N+

Philosophy of the language: Human Readable, Avoid Confusion and can Visualize, with everyday use English.

The terminology of the language: When you first get to learn the language what you need to learn is not the syntax but terminology. Programming language use all sort of scientific or terminology such as Variable, Iterator, Array, Method...etc. . We can eliminate or burn this step that to make it easier for anyone to learn the programming. We replace it with the everyday English usage, something that everyone can visualize it in their head instead of memorize it does. 

1. The container: in this new language we don't call variable as variable instead we call it container. The variable actually If visualize it looks like a container or a box where you can put your stuffs in. We call it container. The way we define container and assign stuff in like this.

Container << "Computer" 

We don't use = as assignment. Why? When I first look at the language I always think of it is an equal sign, still now I still sometime picture it with the equal sign in math. Why dont we use something else that when newbie look at it they can visualize something in their head. As you see the example above, you can see that Computer goes into the Container to store it.

With the << replace the = we are now free to use = for something else which make more sense when read by people with non programming background. For example the control flow.

If Today = Monday

Rain

2. The Cell Container or Large Container: The Array, if you visualize it in your head, it looks like a variable but you can store more stuffs in it. So we just call it Cell Container or Large Container instead of Array. Because non-programmer when first read they can visualize the object they familiar with, something they see everyday instead of having to learn the new terminology Array. Also we try to group similar things in the same category to make it easier to understand and visualize 

CellContainer.size[30]

The example above is when we define an Array with the size of 30. We don't call the number inside the array as Index. We call it Cell. So when we read the array is like this a cell container has 30 cells or the size of large container is 30. You can visualize it in the head, a large container divided in 30 smaller cells means you can put 30 more computers in it.  

How do we access this container?

CellContainer.get[10]

When you read it is like this, get the cell 10 in the cell container. How we access or iterator the Array. We can use this

CellContainer.get[ALL] 

Above return all the stuffs in array.

CellContainer.where["Computer"]

Above search for specific object, instead of use loop or iterator to go through each we use where and that is it.

 

CellContainer.append["Table"]

Above, how we put more stuff in cell container.

==============================================================

Lets recap. Instead of learning terminology and to understand what  them do Ex. Variable and Array, Index. We can just simply group these two in same category because they have similar straits and just call it Container for variable and Cell Container for Array, the the index we call it cell. 

When we assign something we use << instead of =, because = often lead people to confuse with math or equal. It is not equal is more like you put something to store. So we pick the symbol best demonstrate for assignment. By doing that we also eliminate another confusion comparison operator equal ==. When non-programmer read it they will not have to wonder what this == does

Next time I will talk about the Hash.

Now what do you think of the idea of this new programming language :D
 
Last edited by a moderator:

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,693
Reaction score
3,027
First Language
Tagalog
Primarily Uses
RMVXA
Hmmm... let's see... if we make most things new, and not use what most languages use, then learning other languages from there will be harder...

anyway, I wonder how long will it take you to "master" programming...

also, the way I see it... << means larger larger than (or less less than)
 
Last edited by a moderator:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
36,686
Reaction score
9,861
First Language
German
Primarily Uses
RMMV
The problem with that approach is that there are reasons why programming languages work the way they do.


I admit that there were quite a number of things that are simply so because someone started naming them in that way, but that doesn't change that there are physical limitations at the bottom - a simplification like "the computer can store only 0 and 1", and all other data needs to be converted into a sequence of 0 and 1. Even that is a simplification, because in reality the computer doesn't even know numbers, but only electronic cells which can have either a high-resistance-state or low resistance...


Renaming things at a higher abstraction level might look like helping newbies get a better start into programming, but it will make things only more difficult later on. Because in reality there is no "Programming Language", there is only the skill programming and knowledge of different forms of syntax.


If someone tells me he can program on the computer, then he can program in ANY of the so-called languages, he just needs a syntax reference.


If someone tells me he can "program in Ruby", but not in "C++", then I know that he can't program at all because he has mistaken what it means to be able to program. BigEd linked something in that area here: http://forums.rpgmakerweb.com/index.php?/topic/5108-a-good-article-for-you-budding-scripters/


Programming is a skill that needs the ability to abstract something - if you can't do that you'll end up as one of those "cargo cultist programmers" (see link above) who simply test code until they find something that works. And one of the steps to make that abstraction is to use the mathematical terms for real-world-objects to implement. The earliest programming languages like Pascal enforced the mathematical abstraction for very good reasons, and if you don't learn to do that, then you'll always be a second-class-programmer and never "master programming languages".
 

Dr.Yami

。◕‿◕。
Developer
Joined
Mar 5, 2012
Messages
1,004
Reaction score
762
First Language
Vietnamese
Primarily Uses
Other
You are going back the evolution of programming. And for "<<" it means bit shifting.


Let's say your language is easy for newbies to learn, then what if they do want to learn another languages? Your language is too much confused when they try to learn the others.


And finally, I want to say that maths and programming are related to each other, but they are two different matters. You cannot tell "mo'fk i'm so pro at maths so i will be a pro at programming".


You said ruby is too much confusing, well because you know nothing about programming. In my opinion, ruby is not a really good language, but it's really easy to learn, even with newbies. Don't try to go around and say that "i have learnt XYZ ABC OMG WTF languages and this sh*t is so confusing so that i cannot understand".
 

Engr. Adiktuzmiko

Chemical Engineer, Game Developer, Using BlinkBoy'
Veteran
Joined
May 15, 2012
Messages
14,693
Reaction score
3,027
First Language
Tagalog
Primarily Uses
RMVXA
IMHO, ruby is one of the languages with a highly verbose syntax... My fellows at another community actually suggest it for budding programmers coz of it...


And you might say that you think it is more easy to learn this way... but have you actually tried to consult it with other people, especially your target audience??? because if they still can't understand that, then all your efforts are simply wasted...


always remember that "easy" and "hard" is such a subjective thing... like how you find Ruby's syntax "hard" while we find it "easy"... so something looking "easy" to you, might not look "easy" to others... so I suggest you rather open this up to your target audience... as in full on consultation...
 
Last edited by a moderator:

Kaelan

Veteran
Veteran
Joined
May 14, 2012
Messages
811
Reaction score
570
First Language
Portuguese
Primarily Uses
RMMV
Your language would confuse the hell out of anyone trying to learn any other language. It would make learning programming harder, not easier.

<< is a left shift operator in most languages that support bit shifting. It's also the stream operator in C++

'Container' is a CS term for any kind of collection (array, list, map, hash, dictionary, etc.). The fact that you not only use the term for something else, but you also have a third, different name for arrays (which is itself even more complicated and harder to remember than 'array') makes things even worse.

If you want a language that teaches some programming logic while avoiding syntax, you could just use
 

XinChao

Veteran
Veteran
Joined
Jun 11, 2012
Messages
117
Reaction score
3
Primarily Uses
If everything you think is perfect  and there is no room for improvement perhaps, we all should use C or C++. No need another new language Ruby or Python. What Ruby and Python can do that Java and C++ cannot? Because each language design with goal in mind, to address some short coming of another language  which authors believe they can improve with their new created language. When I think Ruby is confusing when compare with other languages, is similar to a programmers think C++ is imperfect so they came up with Python and Ruby  which they think address the issues. The different is, Programmers will look at the issue in depth level for newbie they can only see issue on the surface which is the learning curve of the language when compare to others.

Look up on Google  and you find they list the programming language base on its strength and weakness and one of the thing they listed for comparison is  the learning curve of that language. Though I am not expert in programming so I can not tell strengths and weakness of language in depth but  as newbie  I already can tell which language has difficult learning curve base on my average intelligent since I am not smart.

Take Networking for example which I am proficient at. Why do IPV6 developed to replace IPV4? It is because IPV4 face many challenges and many things it dont make sense when implement. The classes for example, let say you a person has 500 computers for his network but he is given a class B which support more than 1000 computers? why just give him something enough for 500. It does not make any sense right. Yet the IPV4 classes has been implemented for many years and no one realized it? That gotta be thank to those IPV6 developers. Again, I am not saying I am smart who see things through I only see things through a scope so I put that scope on the table and say here what I see through this scope, and I have the idea to look at scope in different way. What do you think? No more no less that I say what I think is right.

 You can have a technology good performance but is complex to use, likely never appeal to the mass. So everything has a learning curve to take for consideration. Another important thing need to consider is the goal when you create something.For example about the programming language, What the developer have in mind, he wants his language target whom? For certain group core-programmers or for the mass? If it is for the mass and your creation is difficult for the mass to adopt, well screw your creation. Similar like a game, what do you make it for? for players? then why do you have to make them go many configurations? Though your game look very nicely done, the players want to play. When the player tried it they find it difficult so they said it is difficult, you shut them up, by saying, you dont know how to play game. Well, good luck if you ever made such products. Similar to when you script, you has a good idea but your script is extreme difficult to implement, when people tell you  you respond to them by telling, no my script is too easy you just dont get it, so stop whining. Well good luck with that thinking too.

There is another thread of C+= developed with feminist in mind, why bother with that new language? If all the language is equivalent good?

U.S. Toy manufacturers spent millions of USD just to survey the kids what need to improve for their toys. Billions of USD spents on surveys every years to improve enterprise products to make simplicity/easy to use and manage for what reason and for who use it though? Why RMVX is so popular? Many factors but one of them is it simplified procedures to make games in other word, it make sh1t easier that even a kid can make game now day.

So,

If you think being programmer means one will able to code everything. Well that is what you think. That you would have to argue with other programmers, not me. I have not been trying to be programmer, I simply want to learn ruby just to make few scripts and I find the learning curve is difficult to just make some script. Is it the language or is it me not so smart? well depends on who reading this line, some smarties programmers or some people that struggling to learn it Ruby like me?

If you find Ruby is easier. well, it is good for you. You are smart.

Again the idea I have above is for a preference for what I think can make a programming language appeal for a newbie from a newbie standpoint. If you look at my idea from a programmer stand point you look at wrong stuff. 

Try this, are they whining, are they qualified to be programmer? I do not know. It is up to what you disagree or agree to them.

https://www.google.com/search?q=Ruby+learning+curve&rlz=1C1CHFX_enUS561US561&oq=Ruby+learning+curve&aqs=chrome..69i57.4668j0j4&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8#es_sm=93&espv=210&q=Ruby+learning+curve+compared+to+other+languages&spell=1

If you think I was whining how difficult Ruby is, no I am not. I was simply express my frustration. I even came up with the list which I think can be made simpler for beginners from a beginner standpoint. Because I really see it through. Why I did not mention anything about the Method and class or anything else because I have not seen it through . Whether it good idea or not. Well be honest, I do not know, but I put that idea on the table for you to evaluate.  If what you suggest is make sense, if not, I point out why not.
 
Last edited by a moderator:

Kaelan

Veteran
Veteran
Joined
May 14, 2012
Messages
811
Reaction score
570
First Language
Portuguese
Primarily Uses
RMMV
You're missing the point. You're trying to propose a language that's been designed for a specific purpose (making learning programming easier). What everyone has been pointing out is that what you have proposed so far would do the exact opposite of what you intend, and that there
 

Dr.Yami

。◕‿◕。
Developer
Joined
Mar 5, 2012
Messages
1,004
Reaction score
762
First Language
Vietnamese
Primarily Uses
Other
You cannot compare C/C++ with Ruby/Python because they are in different language levels.


And only one thing I want to ask: what is your language used for?


Hell, there's no way someone would learn a "so-called newbie friendly" which has no use and leads they to more confuses.
 

Galenmereth

Semi-retired
Veteran
Joined
May 15, 2013
Messages
2,249
Reaction score
2,195
First Language
English
Primarily Uses
N/A
To learn any language you need to look for a good "teacher". Try a few different books on the language, google some more. Give it time. My first language was ActionScript 2 in Macromedia Flash. I had a really hard time with that, but after some time I found a book that really taught things the way I learn them: Practical examples. After working with AS2 and AS3, I started dabbling with some HTML and CSS – which aren't programming languages, of course – and then some PHP. PHP was much easier to get to grips with even though it was something completely different than AS; I understood the abstraction level. I then went to try JavaScript, then Java, and then Ruby.

Your first language is always hard to learn, because it's a new way of thinking about problems. Making yet another language won't solve that. And when it comes to languages, Ruby is a very descriptive language and – according to others – easier to learn than many others. Things like 

10.times do |number| We do something hereendis still kind of complicated, but much more readable than

for(var i:int = 0; i < 10; i++){ We do something here}which would be the way to do it in most languages. But it's still syntax, that you need to wrap your head around. I'd recommend looking for a book that speaks to you. I learned quite a bit of Ruby from this free online book, for example: http://mislav.uniqpath.com/poignant-guide/book/chapter-3.html#section1
 

XinChao

Veteran
Veteran
Joined
Jun 11, 2012
Messages
117
Reaction score
3
Primarily Uses
You're missing the point. You're trying to propose a language that's been designed for a specific purpose (making learning programming easier). What everyone has been pointing out is that what you have proposed so far would do the exact opposite of what you intend, and that there
Can you clarify which part of my example is exact opposite? The idea is a programming language which to eliminate the terminology by replacing with everyday usage of English, and things that people can visualize. Bad?

You saying it is opposite but did not point out or explain why, only a sentence saying it is opposite. You have to provide either some statistical number or a strong argument with explanation.

For example I already explained it in the example, instead of having people learning the terminology such as Methods, Iterator, Variable...etc. we can replace it with something for non-programmer can visualize, things they familiar with. I use the variable as an example, we can just call it container where we can put stuff in it. The Array is just a variable can store more stuffs, instead of make the Arry sounds like something different we will group it with variable so we call it CellContainer, in other word we group thing with similar straits in a same category. How is this idea opposite? It is true when one of my examples may not best to demonstrate the idea but that is not mean to make thing opposite.

The idea is not even fully involve into a project yet but I already see a lot criticism rather than constructive criticism? Why? Because I am not some expert programmer therefore my idea is trash?Well, if you really thinking like that Perhaps I think you would be  try to treat the idea fairly. Think of toys manufacturers they have to spend million of $$$ to get the survey from  the kids to improve their products. In similar fashion, this idea concentrate on newbie perspective. not a programmer's. So if you look at it through programmer scope, you look at the wrong idea.
 
Last edited by a moderator:

Galenmereth

Semi-retired
Veteran
Joined
May 15, 2013
Messages
2,249
Reaction score
2,195
First Language
English
Primarily Uses
N/A
Can you clarify which part of my example is exact opposite? The idea is a programming language which to eliminate the terminology by replacing with everyday usage of English, and things that people can visualize. Bad?
But this is exactly what Ruby is already doing. With terminology such as:

exit unless "restaurant".include? "aura"

['toast', 'cheese', 'wine'].each { |food| print food.capitalize  }

2.times {

  print "Yes, I've used chunky bacon in my examples, but never again!"

}
The reason you don't want to mess with calling an array something else than an array, is because – like many people have stated already – it would make it much much harder to learn another language. When you learn a new real world language, for example, you always have to acclimatize to new syntax and terminology. For example, German is very unlike Norwegian, but they share some similarities. But Japanese and Norwegian? I had to start from scratch, and that's really difficult. That's what happens if you make a new language that is completely different from every other; you make it unnecessarily hard on yourself and the users, because they'll still have to learn your language. Your language only makes intuitive sense to you because you thought of it; it would require as much learning to get right to a newbie as, say, Ruby. 
 

XinChao

Veteran
Veteran
Joined
Jun 11, 2012
Messages
117
Reaction score
3
Primarily Uses
To learn any language you need to look for a good "teacher". Try a few different books on the language, google some more. Give it time. My first language was ActionScript 2 in Macromedia Flash. I had a really hard time with that, but after some time I found a book that really taught things the way I learn them: Practical examples. After working with AS2 and AS3, I started dabbling with some HTML and CSS – which aren't programming languages, of course – and then some PHP. PHP was much easier to get to grips with even though it was something completely different than AS; I understood the abstraction level. I then went to try JavaScript, then Java, and then Ruby.

Your first language is always hard to learn, because it's a new way of thinking about problems. Making yet another language won't solve that. And when it comes to languages, Ruby is a very descriptive language and – according to others – easier to learn than many others. Things like 

10.times do |number| We do something hereendis still kind of complicated, but much more readable than

for(var i:int = 0; i < 10; i++){ We do something here}which would be the way to do it in most languages. But it's still syntax, that you need to wrap your head around. I'd recommend looking for a book that speaks to you. I learned quite a bit of Ruby from this free online book, for example: http://mislav.uniqpath.com/poignant-guide/book/chapter-3.html#section1
Take Galenmereth for example I dont think he understand what I was talking about. I never say Java is easy to learn than Ruby. What I was trying point out is a programming language must be explicit written instead of reply on excessive syntax. Bad idea? Well, this part is not even my original idea but rather than Python developers' idea and I do support them on that.  

AS for Galenmereth demonstration, I do think the Ruby look much easier to understand than Java oppose to what he think that I think it is more complex than Java. My idea was to eliminate what seems to be confusion,make it explicit written out. For example the Ruby Ternary 

var1>var2 ? do something : do something else. 

I would want to opt Ternary out. Because I think that while the Ternary do make code look more compact but for newbie it is just adding more complexion. I would like to see thing in a simplistic structure. Less syntax to remember and readable. Bad?

the code has to explicit like this

If var1 > var2

do something

else 

do something
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
36,686
Reaction score
9,861
First Language
German
Primarily Uses
RMMV
The idea is a programming language which to eliminate the terminology by replacing with everyday usage of English, and things that people can visualize. Bad?
Yes, that is a bad idea.
The problem is that computers do not think like humans, they require the tasks to be abstracted into specific forms in order to execute them.


Most programming languages are designed to meet the difference between human thinking and abstract computer operation somewhere between, to make the steps of programming (and programming basically means abstracting the human readable ideas into computer operations) easier without sacrificing speed.


The low level languages allow for the fastest programs because they are heavily abstracted and almost unreadable for humans - Try to look up an assembler language program if you think that C/C++ are difficult to read, Assembler is one more step deeper into abstraction and was the only way to program something fast on Computers like the 1MHz Intel 8086 CPU thirty years ago.


Higher level languages need to do all the abstraction for the human (with assembler language, it's the programmer that does all the abstraction), which means that they are extremely slow. Something like Ruby couldn't be used on older computers because they would need hours to do all the interpretation neccessary for the steps in the language.


So by proposing to reduce the abstraction neccessary on the human end of the process to make things easier for the human, you also propose to:


1) make the language execution slower


2) make the compiler/interpreter program neccessary to read that new simple language more complex (and thereby more bugged and more developement work needed) to create for the user (who will pay for creating such a compiler? Creating a programming language is not only defining it, you also need to provide the programming environment that can read and execute the language)


3) you create so-called "Programmers" that will never be able to write faster programs or move on to other, deeper-level programming languages unless they learn to abstract - the one thing that you want to prevent them from learning.

If everything you think is perfect  and there is no room for improvement perhaps, we all should use C or C++. No need another new language Ruby or Python.
There is a need for other languages, because they are on different abstraction levels.
C++ superseeded the Assembler language as the basic language for Operating System level programming only because today's computers are a thousand times faster than the computers twenty years ago - if not for that, Windows would still be programmed in Assembler (like most of the MSDOS-Commands were).


That is because an OS needs to be programmed in the most efficient way possible.


You simply cannot program an OS in Ruby or Phyton.


But Ruby and Phyton are easier to program, and so they are the choice of languages if you want to program something that does not require speed or efficiency.


And that is the point you're missing: Each language has its advantages and drawbacks, and there is no "best" language, it all depends on the function.


Your proposal will create the slowest language possible and prevent the programmer from learning/training how to abstract real objects into computer readable formats. If everyone uses only your programming language, there will be no one left who can write the compiler neccessary to create executables from that language - because that abstraction has to be done somewhere, you cannot ignore that because the computers can only execute sequences of "high-resistance-state" and "low-resistance-state" (or High-Potential and Mass-Potential).

There is another thread of C+= developed with feminist in mind, why bother with that new language? If all the language is equivalent good?
Yes, and if you had read that topic carefull you would also have learned that C+= is a parody intended to joke on extreme Feminists, never intended to be made into a real programming language.
Are you saying that this topic is your parody of joking on people who can't read programming syntax?
 

XinChao

Veteran
Veteran
Joined
Jun 11, 2012
Messages
117
Reaction score
3
Primarily Uses
Is my idea to create a low level language to replace C or some sort of mechanism to convert application format into digital signal?  Nope. I never mention that. Since you mention about binary/machine language I know what you talk about What you talk about, In term of networking this is actually a mechanism to convert a application format from the Application layer of the OSI or TCP/IP model into digital signal with only two state on and off and is understood by computer by voltage differences. I fully aware what you talking about that is the reason why Cisco still using C to develop the network communication hardware such as router.

C is still the most popular programming language.

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Ok, you people maybe right, my idea is not really good idea, no big deal, chill  :D
 
Last edited by a moderator:

Tsukihime

Veteran
Veteran
Joined
Jun 30, 2012
Messages
8,564
Reaction score
3,912
First Language
English
Renaming things at a higher abstraction level might look like helping newbies get a better start into programming, but it will make things only more difficult later on. Because in reality there is no "Programming Language", there is only the skill programming and knowledge of different forms of syntax.
There are definitely languages that are less newbie friendly, and languages that you definitely don't want to touch unless you either have to or absolutely love that stuff. I won't name what they are, but I'm sure I'm not the only one that feels the same way about certain languages over others.


What kind of language doesn't have strings out of the box, or doesn't explode on non-terminating strings, or array accesses using indices? Sure, it's just syntactic sugar, but it's very nice syntactic sugar that I would consume anyday.


I would say different forms of syntax itself is what defines a different "programming language".

If someone tells me he can program on the computer, then he can program in ANY of the so-called languages, he just needs a syntax reference.


If someone tells me he can "program in Ruby", but not in "C++", then I know that he can't program at all because he has mistaken what it means to be able to program.
Abstraction is important. I do not want to have to think of pointers, memory allocation, disk-space allocation, thread priorities, and any of that low-level stuff. I probably wouldn't be able to do it very effectively either, even if I'm given a reference. I've just never had to think about how the OS works, how the hardware interacts with each other, etc. but why would I? There are people that like that stuff so I'd rather leave it up to them to handle it.


If the language I'm working with can hide all of that and handle it for me at the expense of performance, I wouldn't mind. I don't do mission critical things; the stuff I write is for the average user that doesn't mind waiting an extra second for the system to finish processing a task that would save them 30 minutes if they had to do it by hand.

Programming is a skill that needs the ability to abstract something - if you can't do that you'll end up as one of those "cargo cultist programmers" (see link above) who simply test code until they find something that works. And one of the steps to make that abstraction is to use the mathematical terms for real-world-objects to implement. The earliest programming languages like Pascal enforced the mathematical abstraction for very good reasons, and if you don't learn to do that, then you'll always be a second-class-programmer and never "master programming languages".
While programming is a skill, a programmer with better tools at his disposal will do a better job. For some, perhaps it doesn't matter if you have to write 100 lines of code in one language to accomplish the same thing that another language could do in 10, but for others, maybe that trade-off is acceptable. There are definitely advantages to being able to write less.


I also don't know if I ever think in "mathematical terms" most of the time to abstract real-world or conceptual objects into (virtual) reality.

The low level languages allow for the fastest programs because they are heavily abstracted and almost unreadable for humans - Try to look up an assembler language program if you think that C/C++ are difficult to read, Assembler is one more step deeper into abstraction and was the only way to program something fast on Computers like the 1MHz Intel 8086 CPU thirty years ago.
I wouldn't say assembler is a heavily abstracted language. Rather, I'd say it's the complete opposite.


But maybe my goal of abstraction is a bit different from yours.


My idea of abstraction is to make things easier for humans to read, while hiding away all of the details that they don't need to know about. Abstraction may take away some capabilities such as your OS-level programming, but I find the other point you've made to be more relevant to the average user: if it works, and works pretty well, hey why not.

So by proposing to reduce the abstraction neccessary on the human end of the process to make things easier for the human, you also propose to:


1) make the language execution slower


2) make the compiler/interpreter program neccessary to read that new simple language more complex (and thereby more bugged and more developement work needed) to create for the user (who will pay for creating such a compiler? Creating a programming language is not only defining it, you also need to provide the programming environment that can read and execute the language)


3) you create so-called "Programmers" that will never be able to write faster programs or move on to other, deeper-level programming languages unless they learn to abstract - the one thing that you want to prevent them from learning.
Like...Ruby, or Python, or Java? Or even C#? They're definitely slower than assembler or C, and they definitely needed a custom compiler/interpreter.


However, I don't think they're written in such a way that it prevents programmers that unfortunately started with one of those to move on to other languages, especially when many programming courses offer object-oriented design as the main focus which is all about abstraction.
 
Last edited by a moderator:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
36,686
Reaction score
9,861
First Language
German
Primarily Uses
RMMV
There are definitely languages that are less newbie friendly, and languages that you definitely don't want to touch unless you either have to or absolutely love that stuff. I won't name what they are, but I'm sure I'm not the only one that feels the same way about certain languages over others.


Abstraction is important. I do not want to have to think of pointers, memory allocation, disk-space allocation, thread priorities, and any of that low-level stuff. I probably wouldn't be able to do it very effectively either, even if I'm given a reference.


If the language I'm working with can hide all of that and handle it for me at the expense of performance, I wouldn't mind. I don't do mission critical things; the stuff I write is for the average user that doesn't mind waiting an extra second for the system to finish processing a task that would save them 30 minutes if they had to do it by hand.


I wouldn't say assembler is a heavily abstracted language. Rather, I'd say it's the complete opposite.


But maybe my goal of abstraction is a bit different from yours.
I completely agree, it's just that we have a different definition of "abstraction". For me, the human idea is the basis and you need to abstract that idea into computer-readable pointers, arrays and so on.
I wrote exactly one assembler program during my studies, it was neccessary to get the requested time-critical performance out of the serial bus (COM1:, it was at the time of MS-DOS - USB wasn't even dreamed of then) - and if I never have to do that again, it would still be too early ;-) 

Like...Ruby, or Python, or Java? Or even C#? They're definitely slower than assembler or C, and they definitely needed a custom compiler/interpreter.


However, I don't think they're written in such a way that it prevents programmers that unfortunately started with one of those to move on to other languages.
No, they're not.
That is because they still teach the programmer to think in terms of variables, structures and pointers, even if they mask that as far as possible.


My comments were because the original proposal was intended to go even farther toward the human end of the abstraction sequence, putting even more parts into the automated abstraction done by the compiler/interpreter. And that would have made the original proposal useless as a stepping point to a more advanced/deeper language, because anyone learning the originally proposed language would still have to learn everything about memory structures before moving on to another language.
 
Last edited by a moderator:

Tsukihime

Veteran
Veteran
Joined
Jun 30, 2012
Messages
8,564
Reaction score
3,912
First Language
English
When I read the original proposal all I'm seeing is a change in names and syntax for really subjective reasons.


"Array is too scientific let's call it a container"


"Equal is too confusing let's use << because that's obviously less confusing"


This is all really arbitrary to me.


You throw someone into C or assembler as their first programming experience, you're likely to scare off 90% of the class who might have been in there for the sake of figuring out how to use the computer better. That I can understand. You don't need to understand anything about virtual memory or threading if all you want to do is write a simple batch file to save you an hour of manual labor.


Ruby or Python or something less verbose appears more user-friendly and therefore is easier to learn with.


So easier language = better experience, that makes sense to me.


But just renaming things and changing the way you access a variable?


I really don't think if you sit down with someone for 2 hours and show them how a variable works and how you can use a variable, they're not going to still have no idea how a variable works.


No one goes to a programming class to learn terminology. No one goes into ANY field of study to learn terminology. Or at least, I don't think that's the point of learning terminology.
 
Last edited by a moderator:

BigEd781

undefined method 'stupid_title' found for nil:NilC
Veteran
Joined
Mar 1, 2012
Messages
940
Reaction score
304
First Language
Dothraki
Primarily Uses
N/A
There are a lot of problems here. The first I think is the big one; there is no good reason for programming languages to be readable by those not involved with programming. Why? Because being a software engineer is not trivial and, no matter how you package it, becoming proficient will take time and effort. Once you put in that time then the constructs you claim are confusing will make perfect sense. Many of these choices have good reasons behind them, let's go over them.


1. The term "variable" is not confusing. If you couldn't be bothered to learn what the term means when you took your first algebra class then you'll probably have a tough time learning to be a programmer.


2. '=' for equality has been done before, this is not new. Go play around with VB, a language almost universally reviled by developers. It tried to simplify the syntax of C like programming languages. It did bring a lot of new blood into the industry. Unfortunately, perhaps partly due to the fact that the language attempted to insulate them from the more complicated bits, many of these newcomers wrote horrible, God awful software.


3. Arrays. Yet another suggestion to call one thing something else. "A rose by any other name" and all that...

CellContainer.get[ALL]


Above return all the stuffs in array.
When I see suggestions like this I wonder if you have thought this through at all. If that line "returns all the stuffs in the array" then, well... it does nothing at all! You already have the array, which is a container for multiple objects. Returning all of them is simply returning the array itself.


Your proposed changes are completely superficial and don't actually improve anything semantically. All abstractions are leaky. Call constructs what you will, it doesn't help people solve performance issues. It doesn't help them learn to debug subtle logic errors. It doesn't help them to become competent developers.


It's also an old idea; dumb down the terms and syntax and you make it easier to learn to program. This has been shown to be false time and time again. Everyone worth their salt makes it past syntax quickly. Learning syntax accounts for perhaps 0.005% of the time you spend learning how to build software. It's the easy part.


You can simplify that part all you like (and not always for the better), but once that is done you are left with all of the hard problems, and those don't get any easier. A standardized terminology exists for a very good reason; namely, so that those in the know can easily and quickly express their ideas to one another. You may feel that changing a name is a good thing, but now you have caused a terminological rift between people using different technologies. You have lost far more than you may have gained.


You seem to be under the impression that learning a language is the same thing as being a developer/engineer. It is not. Languages are the easy part, they're just tools. Solving problems with your toolset is the tough bit, that's what separates the wannabes from the experts.


You are a beginner. You stumbled over syntax and terminology, so you are assuming that this is the stuff that makes it hard for people to become proficient. Of course, you lack the experience needed to make that determination. I assure you; this is not the hard part. Programmers don't have trouble building complex systems because their arrays are zero-indexed and called "arrays" instead of "containers".


It's semantics and, later, logic issues that make it hard. It's building large, complex systems that communicate between various pieces in order to solve really tough problems that keeps people like me employed. I can jump between at least eight different languages without breaking a sweat. They all have different syntax and semantics, but it doesn't matter; I learned them long ago. My job is to use them to do something useful. That's what's important, not what symbol they use for checking equality.


You should also take some time to consider that these languages were designed by people with much, much more experience than yourself. Don't be so quick to write off their decisions; you likely don't understand the "why" behind them yet. Without understanding and experience you cannot hope to do better.


P.S. If you want an example of a well designed language which mimics everyday speech, look into fluent programming. This was created by a man who is prolific in our field (Donald Knuth). He is a true genius. No one uses fluent programming in practice. The only language that no one complains about is a language that no one uses.
 
Last edited by a moderator:

Tsukihime

Veteran
Veteran
Joined
Jun 30, 2012
Messages
8,564
Reaction score
3,912
First Language
English
I haven't taken the time play around with LINQ (https://www.simple-talk.com/dotnet/.net-framework/fluent-code-in-c/) or other similar interfaces but from what I've seen on stackoverflow it looks pretty...newbie friendly syntax?

var recentBigOrders = OrderList .Where(o => o.Amount > 1000 && o.Date >= DateTime.Now.AddDays(-5)) .OrderBy(o => o.Amount) .Take(10) .Select(o => o.Customer);That's what immediately came to mind when I saw some of those array access examples.
The idea is not even fully involve into a project yet but I already see a lot criticism rather than constructive criticism? Why? Because I am not some expert programmer therefore my idea is trash?Well, if you really thinking like that Perhaps I think you would be  try to treat the idea fairly. Think of toys manufacturers they have to spend million of $$$ to get the survey from  the kids to improve their products. In similar fashion, this idea concentrate on newbie perspective. not a programmer's. So if you look at it through programmer scope, you look at the wrong idea.
I think people that have no knowledge of a particular subject matter can bring in fresh new perspectives which can be creative and innovative. This is why some people like to bring together people from completely different backgrounds and put them in the same room and give them cookies and a problem.

However, most of the time, their ideas may be pretty terrible simply because they do not have knowledge of the subject matter.

Why should people have to treat your idea any differently from someone who is an experienced programmer just because you're new?

It is especially dangerous to mislead new users into believing that their idea may be good simply because everyone else feels they need to not make you feel bad.
 
Last edited by a moderator:

Latest Threads

Latest Posts

Latest Profile Posts

The game's opening, now fully polished! :LZScheeze:





Aaand, here's me working on it in today's "Game Making Every Day" video! :LZSooo:

Hello! Can anyone help me? I followed making cooking tutorial for RPG Maker MV. But for some reason buff state that food gives doesn't work in overworld. It disappears. What am I supposed to do?
A shotgun is not a rifle. Huh.
SIGH its so hard to convince my friend that making a game for fun and making one to sell takes different planning. I don't care about weird bothersome ways of doing things in a game made for fun, but when you are planning to market it, there is some stuff that you just have to streamline or cut out.
It might be a little bit boring and tedious, but building that database of armor, items, weapons and skills are super important.

Forum statistics

Threads
124,399
Messages
1,163,348
Members
163,198
Latest member
Oneesama
Top