• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

What is the difference?

Status
Not open for further replies.
Level 14
Joined
Jun 27, 2008
Messages
1,325
You cant really compare GUI and MUI as they are completely different things.

GUI is some kind of programming language, others are: Jass, vJass, Wurst.

MUI is more a programming paradigm or a specification for your code. But whether you want your code to be MUI or not, that is completely unrelated to the language you are using.

In Jass it is usually a bit easier to make triggers MUI, but you can do it in GUI too. To make something (a spell) MUI you basically have to keep in mind that the trigger can run several times concurrently and simple global variables that are used by one instance are used by the other instance too.
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
GUI isn't a language... It's just a graphical representation/editor of wc3's scripting language, JASS...

I said "some kind of" language. The guy asked what the difference between GUI and MUI is, which tells us that he has clearly no clue about anything beyond the very basics. For the sake of simplicity and comprehensibility im very confident that "language" is a fairly good explanation of what it really is.

Sadly i have to say that i see these kinds answers way too often here. People are unable to put oneselves in the position of the newbies and are so focused on being 100% correct that they completely forget that their answers are not helping anyone.

There is a reason why they tell you that there is no squareroot of -1 in primary school. Think about it.
 
GUI is not a programming language, noob or not, he needs to know that because GUI is a basic idea when it comes to wc3 modding... (unlike your example, SQRT of -1, which is not a basic idea, and is not something that ordinary people will probably be dwelling into which is why it's fine to tell normal people that -1 doesn't have a SQRT)

Now if I tell him that JASS isn't a programming language too, then that is something that is really out of the concern of a noob... even promappers shouldn't really even be concerned with that idea...
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
GUI is absolutely sufficient for the first steps in wc3 mapping. Telling him whats the relation between GUI and Jass before he even knows what Jass is seems ridiculous.

Btw, your "It's just a graphical representation/editor of wc3's scripting language, JASS..." explains nothing. If you want to explain him what GUI really is then start with Jass, the map mpq, how and when GUI is translated into Jass etc. But if you do it, take your time and do it properly so he understands 100% of it.
But hijacking a thread and making two solid answers look wrong by posting one sentence that doesnt help anyone really makes it look like you are just showing off or trying to push your postcounter.
 
I agree with Adiktuz on this.

Saying that GUI is some kind of programming language is way off. Then you say others are Jass, vJass, Wurst.

Well considering that GUI is not a programming language at all what you said will only do more harm.

There is no reason to tell someone one thing because they have less knowledge than you.
What happens when he learns more and gets confused because of the misinformation you gave him when he was starting out ?

Also you are talking about being clear and not saying something new users will not understand. What about the instances that you mentioned in your post ?
I do not know many new users that know exactly what that term is.

This comment is also useless and simply rude.
But hijacking a thread and making two solid answers look wrong by posting one sentence that doesnt help anyone really makes it look like you are just showing off or trying to push your postcounter.
He isn't hijacking a thread he was correcting something you and Iceman stated wrong.
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
Saying that GUI is some kind of programming language is way off. Then you say others are Jass, vJass, Wurst.

Well considering that GUI is not a programming language at all what you said will only do more harm.

As you seem to have a pretty strong opinion on this, please explain to me why gui is not a programming language.
I agree on the part that GUI is not THE language wc3 uses internally. But i never said it that way and you didnt either.

- Is it the fact that GUI isnt written as text? Because there are a shitload of other visual programming languages that are programmed by clicking little buttons and moving widgets around.
- Or do you have a problem with GUI being translated into Jass when the map is saved? Because thats something that is very commonly done with programming languages, you translate them into something else.
- ... ?
 
I have no problem with languages that are translated.

But GUI is exactly what it stands for. A graphic user interface. It is an interface that is graphical for users. Yes it gets translated to jass which is the programming language.
GUI is the interface for that programming language.

That is how i see it. But stating it i can see how it can be thought of as a programming language.
 
Level 8
Joined
Nov 20, 2011
Messages
202
So you got a problem with the graphic representaion of the language?

The agument, GUI can't be "run" and needs to get converted first, is bullshit, you can't run ascii chars aswell.

At least 32 bit representation would be a programming language in your eyes, but the main problem would it be to represent the 32 bits. If you represent them on your computer they would be converted to ascii, which is some kind of GUI.
 
The agument, GUI can't be "run" and needs to get converted first, is bullshit, you can't run ascii chars aswell.

GUI can't be run because when you have a map made by using the GUI the triggers and everything in the GUI is compiled to jass.

I have no problem with GUI. Never said i did. Just the way he was saying it was a programming language. I don't see it as a language. It is an interface.
 
Level 8
Joined
Nov 20, 2011
Messages
202
GUI can't be run because when you have a map made by using the GUI the triggers and everything in the GUI is compiled to jass.

Dude Jass can't be run aswell, it get's interpreted. And iam sure the interpreter won't just read you jass code from the war3map.j to run it. There are at least a few compiling processes that helps the interpreter.

Java also get's compiled to bytecode and can't be executed directly, do you think Java isn't a programming language aswell?
 
Level 7
Joined
Mar 6, 2006
Messages
282
Fuck, I read this whole thread.

Anywho, I feel like the whole argument was because IcemanBo and muzzel made a wildly outrageous claim that GUI was a programming language.

... and I'm posting to agree, lol. How is it not a language? You program in GUI the same way you would in any other language; it's just event driven. And Crigges made some epic points.
 
Level 15
Joined
Aug 7, 2013
Messages
1,338
In my understanding the Warcraft 3 GUI is just a different way to script events in the game (graphically), than say using JASS or VJASS code. In the end they should semantically be equivalent (whatever trigger, etc. you can write in VJASS can also be done in GUI). GUI then would just be a higher level representation of that core scripting language, just as VJASS might be a lower level representation.

I would define the Warcraft GUI the language of syntactically well formed graphical interfaces/representations that can be translated to the scripting language and assigned a valid meaning. Is it a "traditional" programming language? Perhaps not, but this will depend on the definition of a programming language, as the GUI is just a higher level abstraction than say Java, which is just a higher level abstraction of assembly language, and eventually machine code (bunch of 0's and 1's). So in this line of reasoning, all programming languages are just higher level abstractions of AL/machine code, which is the relationship I defined between GUI and JASS/the underlying scripting language. By transitivity, GUI is whatever kind of language JASS is, albeit the representation is a lot different.

It's probably the case that JASS is (trivially) turing-complete, in which case if the GUI is semantically equivalent (for all valid JASS programs, there is an equivalent GUI), then you can use GUI to compute any computable function, which sounds like a programming language to me :p.

Of course I'm not a computer scientist or a programmer, so these are just my personal thoughts/speculations, please correct me where wrong.
 
OFFTOPIC:

I have really thought of another question... why did we even called it GUI on the first place? it really seems misleading...

anyway, a tool to automate code production is not a programming language... and basically that is what the thing we call GUI is...

for Visual Basic though, it is the name of both the tool and the language... and we call the GUI items that you drag and drop as "tools" (I think since they are in the toolbox)

for visual C++, Visual C++ is the tool, C++ is the language... tools for the GUI objects too

for wc3, the tool is the trigger editor, language is JASS... if we proceed with this analogy, GUI is more like the "tools" in Visual Studio...
 
Level 15
Joined
Aug 7, 2013
Messages
1,338
I just don't see GUI as being a programming language. I have explained why i do not think it is a programming language.

A distinction I should make is a GUI versus a GUI-based programming language; the former is not a programming language, while (yes it's in its name) the latter is, and I'm suggesting that if Warcraft GUI is equivalent to JASS, and that you can (albeit inefficiently) compute any computable function with JASS, then Warcraft GUI and JASS are equivalent, and finally that Warcraft GUI is a programming language.

OFFTOPIC
I read your posts, but I think you should first define what constitutes a programming language, because that may be the source of disagreement (and in fact we might actually agree on the same points after all).

My baseline is that a programming language is one which uses/manipulates the machine instructions to perform computations. In that sense, there is only one single programming language, the language of the hardware that allows us to send instructions and compute values, i.e. machine code.

Of course though, nobody writes machine code (in machine code, instructions and data take the same form since it's all just bits). Then there is AL (assembly language) which should roughly have a 1-1 correspondence with each instruction/data to actual set of bits. But AL is abstraction of machine code, and there are marginal cases where people do write AL, and since AL is translated to machine code, they are equivalent languages, i.e. there is no program in AL which does not have a corresponding machine code equivalent.

Again if we abstract a level up (since who bothers to write in AL?) we get to lower level languages like C, and slightly higher level ones like Java (memory management is done automatically, etc.). But ultimately all these programming languages are really just more human-readable ways of manipulating the machine code, since they all get compiled and translated to it ultimately.

We can abstract to higher levels, such as a graphical interface (for programming), which is still a programming language. Even if it first may get translated to JASS or whatever, it all ends up becoming machine code, because remember that JASS itself is just a high level abstraction. There is no reason you can't perform an equivalent computation using a GUI-based language than a typed/writen out character based one.

It's important to remember that it's an illusion--all programming languages have arbitrary and idiosyncratic symbolism (for example, using letters of the English alphabet, or having "=" be the set operator, while "+" means addition). All those are glyphs, and so it's actually graphical, as they are just all characters.

A GUI by itself is not a programming language, it's usually just an interface to interact with a program (since not everyone is a programmer :p), but there is nothing preventing a GUI-based programming language, and if it's that there is no single computation performed by JASS which cannot also be done in the GUI, then they are equivalent, and just different representations of the same language.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
So you got a problem with the graphic representaion of the language?

The agument, GUI can't be "run" and needs to get converted first, is bullshit, you can't run ascii chars aswell.

At least 32 bit representation would be a programming language in your eyes, but the main problem would it be to represent the 32 bits. If you represent them on your computer they would be converted to ascii, which is some kind of GUI.

wrong, GUI is run by interpreter, just as Java bytecode is run by interpreter, Python is run by interpreter, Assembly is ran by CPU(possibly translated first to Machine Code)

Dude Jass can't be run aswell, it get's interpreted. And iam sure the interpreter won't just read you jass code from the war3map.j to run it. There are at least a few compiling processes that helps the interpreter.

Java also get's compiled to bytecode and can't be executed directly, do you think Java isn't a programming language aswell?

again wrong, because by this logic Excel is also programming language, because it is then interpreted to XML, which is also programming language

In my understanding the Warcraft 3 GUI is just a different way to script events in the game (graphically), than say using JASS or VJASS code. In the end they should semantically be equivalent (whatever trigger, etc. you can write in VJASS can also be done in GUI).

It's probably the case that JASS is (trivially) turing-complete, in which case if the GUI is semantically equivalent (for all valid JASS programs, there is an equivalent GUI)

while quite good post imo, the GUI is exact representation of Jass is not totally right as well, because there are things in Jass that are inaccesable by GUI, and there are things in vJass, that are not accessable by Jass(those are kind of hacks)

so no, GUI is not a language, it is a graphical tool that you click on and the language is typed for you depending on the input you gave the tool when you save the map

if GUI was language, than Excel should also be language


as the GUI is just a higher level abstraction than say Java, which is just a higher level abstraction of assembly language, and eventually machine code (bunch of 0's and 1's).

just a note: Java is higher abstraction of ByteCode, which is JIT compiled to assembly if needed(if bottlenecks or frequent codes are found by the interpreter)

OFFTOPIC:
I have really thought of another question... why did we even called it GUI on the first place? it really seems misleading...

Isnt the reason same as why we call Jass Jass? I mean, blizzard called it that way, and we just sticked to the same naming, but I dont know if Blizzard really called it GUI
 
Level 22
Joined
Sep 24, 2005
Messages
4,821
It was called GUI because... Well, it uses 2d graphics for control and interfaces jass to the user.

GUI can't be run because when you have a map made by using the GUI the triggers and everything in the GUI is compiled to jass
It's not compiled to jass because it is indeed already in jass, it just presents the jass code to users in a more friendlier way.
 
Level 8
Joined
Nov 20, 2011
Messages
202
wrong, GUI is run by interpreter, just as Java bytecode is run by interpreter, Python is run by interpreter, Assembly is ran by CPU(possibly translated first to Machine Code)

Iam not wrong, nothing that i said is wrong. You just interpreted something that i never said.

But your point is not bad. There are 2 ways to "run" code. You can interpret it or compile it down to machinecode and execute it directly by the CPU.

But i think you forget that the interpreter has to be written in a language that is compileable to machinecode. Ofc you can interpret the code of the interpreter but finaly there has to be machinecode.

My point is, ascii chars are also some kind of GUI. It is a graphic representation of some bits that are placed on some storage on your computer. At least even a interpreter interprets thoose ascii chars in form of bytes which are made out of 8 bits.

again wrong, because by this logic Excel is also programming language, because it is then interpreted to XML, which is also programming language

XML is a file format, not a language. Just because you can run for example a .w3x file this does not mean that what is inside is an programming language.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
But i think you forget that the interpreter has to be written in a language that is compileable to machinecode. Ofc you can interpret the code of the interpreter but finaly there has to be machinecode.

that has nothing to do with relation with Jass and GUI

I dont know who post this but:
and the earlier comparision GUI and Java vs Jass and bytecode is lacking one level of abstraction, GUI -> Jass -> Bytecode whereas Java -> Bytecode, so you can maximally compare Java and Jass
 
You guys are smart, but this thread is a bit painful. I want to clear some things up.

GUI then would just be a higher level representation of that core scripting language, just as VJASS might be a lower level representation.

No, vJass and GUI are both higher level representations of JASS. They add functionality by abstracting concepts.

Perhaps not, but this will depend on the definition of a programming language, as the GUI is just a higher level abstraction than say Java, which is just a higher level abstraction of assembly language, and eventually machine code (bunch of 0's and 1's).

This is a bit inaccurate. When people say "GUI" in relation to wc3 modding, they are referring to the specific GUI dialect used in the "trigger editor". I understand the confusion but I'll address the difference again later.

Also, Java is not a higher level abstraction of assembly language because Java isn't compiled to assembly code. Java is compiled to bytecode which is run by the JRE, which converts it to machine code. There is an important difference hidden there.

By transitivity, GUI is whatever kind of language JASS is, albeit the representation is a lot different.

Close, but not quite. There is an inherent difference between compiling a programming language and translating the dialect of a scripting language.

I just don't see GUI as being a programming language. I have explained why i do not think it is a programming language.

That's because you've been homogenized into a procedural mindset. Take a look at Haskel or LISP.

I have really thought of another question... why did we even called it GUI on the first place? it really seems misleading...

Because the editor which you use to write GUI functions is called the trigger editor, which is very misleading. trigger is just an abstract datatype, and we use the term GUI to help users not confuse the two. We should probably say "GUI Triggers" but that extra 9 letters is just so evil.

Then there is AL (assembly language) which should roughly have a 1-1 correspondence with each instruction/data to actual set of bits.

Almost, but not quite. Modern assembly languages such as x86 and ARM (and old ones too, like MIPS) use pseudoinstructions http://www.tortall.net/projects/yasm/manual/html/nasm-pseudop.html

I suppose that's why you said they "roughly" have 1-1 correspondence. A better way to phrase that would be that the size of the machine code is constant in complexity in relation to the size of the assembly code.

wrong, GUI is run by interpreter, just as Java bytecode is run by interpreter, Python is run by interpreter, Assembly is ran by CPU(possibly translated first to Machine Code)

No. GUI is run by a translator. JASS is run by an interpreter.

again wrong, because by this logic Excel is also programming language, because it is then interpreted to XML, which is also programming language

Excel is a perfectly reasonable example of a programming language due to the maths characteristic. Your reasoning is incorrect though. XML is a way of describing data, and can only be used as a programming language if a schema is provided. See: LISP.

while quite good post imo, the GUI is exact representation of Jass is not totally right as well, because there are things in Jass that are inaccesable by GUI, and there are things in vJass, that are not accessable by Jass(those are kind of hacks)

By your logic, everything possible in C is also possible in machine code, which is not correct. Compilers can optimize code to very good assembly language, but to say that they're 1:1 representations is not correct. That doesn't make C "not" a programming language.

if GUI was language, than Excel should also be language

No, but the excel math parser IS a language.

It's not compiled to jass because it is indeed already in jass, it just presents the jass code to users in a more friendlier way.
Not quite. Wc3 just translates GUI code to JASS. That's why you can't "un"-convert JASS to GUI.

Edit: lol, another one
and the earlier comparision GUI and Java vs Jass and bytecode is lacking one level of abstraction, GUI -> Jass -> Bytecode whereas Java -> Bytecode, so you can maximally compare Java and Jass

No. JASS is interpreted by the wc3 engine which converts native calls to operations defined in some C dialect. So it should be GUI -> JASS -> Interpreted to individual C++ procedures -> Machine code
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
No. JASS is interpreted by the wc3 engine which converts native calls to operations defined in some C dialect. So it should be GUI -> JASS -> Interpreted to individual C++ procedures -> Machine code


I cant agree on that, because Jass is JIT interpreted when you call Jass function to bytecode, that is interpreted by Wc3, it is not translated to Machine code

the right order imo should be: GUI -> Jass -> Bytecode -> Interpreter -> Actions on Screen, where Interpreter is wrote in C/C++ and reads the bytecode and depending on what it read it gives you some output

and "No. GUI is run by a translator. JASS is run by an interpreter."
imo, GUI most likely isnt run by anything, because you can translate the GUI trigger to Jass at any time, which means it must be run through translator every time you want to convert it into Jass. It is most likely Jass generated when the GUI action apperas on screen(this is my idea of how it works and I dont claim it being the right way, just how I see it)
 
I cant agree on that, because Jass is JIT interpreted when you call Jass function to bytecode, that is interpreted by Wc3, it is not translated to Machine code

the right order imo should be: GUI -> Jass -> Bytecode -> Interpreter -> Actions on Screen, where Interpreter is wrote in C/C++ and reads the bytecode and depending on what it read it gives you some output

Not all interpreters are JIT compilers. If wc3 used a JIT, it would be significantly faster. What's happening is the GUI is converted to jass when the map is saved. When the map is loaded in the engine, native calls are read (interpreted) and a corresponding C++ procedure is run. That's all there is to it, as far as I know.

and "No. GUI is run by a translator. JASS is run by an interpreter."
imo, GUI most likely isnt run by anything, because you can translate the GUI trigger to Jass at any time, which means it must be run through translator every time you want to convert it into Jass. It is most likely Jass generated when the GUI action apperas on screen(this is my idea of how it works and I dont claim it being the right way, just how I see it)

GUI is absolutely not read by the game at runtime. war3mapMap.j is the ONLY file that the engine looks at for script, and it certainly isn't modified at runtime.
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
no I didnt mean the game reads GUI, that would be against my claiming of GUI not being a language :D I mean, in trigger editor you can do Convert to custom text, and you dont need to save the map nor does it save the map, so it either gets translated as you press it, or it is auto-translated when new action appears
 
Level 6
Joined
Aug 26, 2009
Messages
192
Guys there's also this. Don't think, only because you know 2 programming languages, you know everything. Seriously, it's also possible to write a direct interpreter for GUI and then you have a turing complete programming language which is directly interpreted. Ofc, this is very useless, since Blizzard gave us a way to translate it into a scripting language which is getting interpreted, but it's possible. Would you then call it a programming language?
 
Level 8
Joined
Nov 20, 2011
Messages
202
I think Cokemonkey said everything that is to say.

Here is another try to explain why GUI is a programming language:

This is your point of view:
We got on the one side GUI where we create the code by clicking around through some windows.
On the other side we got pure Jass code which is written char by char.

This is my point of view:
We got for example in the JNGP autocompletion. This is some kind of GUI: you can see a lot of natives and functions, you can scroll down to see more and click on the right one you want to choose. So there are graphical elements which helps the user to write your code. In your point of view Jass wouldn't be a programming language as soon as autocompletion is used.
 
Level 14
Joined
Jun 27, 2008
Messages
1,325
Thank you cokemonkey, i think you cleared up some things here.

I think the word "GUI" is used in a confusing way. What we usually refer to when we say "GUI" in the context of wc3 scripting should more correctly called something like "GUI scripting language" or "Graphical scripting language".

The abbreviation GUI (Graph. user interf.) itself is much more general. Everything in the Wc3 World Editor (or JNGP) has a GUI, which means its nicely visualized and we can control it by pushing little buttons.

But these are two different things, when you read a "GUI Tutorial" in the hives tutorial section its obviously not an explanation about how to use Graphical User Interfaces in general, no its a tutorial which explains how to script wc3 using that "GUI scripting language" we usually just call "GUI".


cokemoney said:
Not quite. Wc3 just translates GUI code to JASS. That's why you can't "un"-convert JASS to GUI.
I think this is important. If GUI indeed would generate Jass code while you click the buttons, add actions etc. i could understand why you would call it a "Tool" rather than a language.
But its not, the GUI Actions get saved, and only when you 1. manually convert the trigger to custom text or 2. save the map the GUI is converted to Jass. (Offtopic: Note that the GUI code is still saved, since its still required for when you reopen the map in the editor. Map protectors usually remove this saved GUI code, since its only used by the editor, but not by the map itself).

One last thing id like to mention:
Programming languages are Formal Languages, which are a theoretical construct in mathematics/informatics.
A formal language basically is a set of symbols (language keywords) and rules that define a syntax for a language. This syntax definition can be used to tell if a text (a program code) is of valid syntax or not (in respect to this speficif formal language).
In Languages like Jass or Java the existance of such syntax rules seems obvious. "function endfunction takes integer" is not of valid jass syntax, "local integer a" however is.
The same thing applies to GUI, its just not that obvious because the Triggereditor is designed to only allow the creation of GUI Code with correct syntax. Example: You cannot create the action "Kill Unit (Last Created Item)" because the editor doesnt allow it. So this is an example that GUI has a well-defined syntax too.
(Dont get me wrong here, every programming language is a formal language, but not the other way around. XML for example, which is not a programming language, is a formal language too.
 
Level 7
Joined
Mar 6, 2006
Messages
282
What is the difference between gui and mui? Wil gui let me cast in multiplayer games

76d31508_c851d40e_Derail_1.jpeg
 
Status
Not open for further replies.
Top