I cannot find a compiler that uses a Graphic Language.I've read through my related threads, and I didn't see any answers.<br/><br/>This thread is where I attempted to say the same thing.  I just fail to make it simple.<br/><a href="http://social.msdn.microsoft.com/Forums/en-US/hottechnology/thread/4085dabc-f161-4ac8-957f-72f2141b1509/">http://social.msdn.microsoft.com/Forums/en-US/hottechnology/thread/4085dabc-f161-4ac8-957f-72f2141b1509/</a><br/><br/>I wish that Microsoft Research, would really look into Digital Logic Gates, in the simplest form.  The Graphic Language would consist of the basic logic gates, AND, OR, NOT, XOR, NAND, and NOR.  This piece of Code Represents a 3 input AND gate.<br/><br/>DIM X as MousePointer X<br/>DIM Y as MousePointer Y<br/>DIM Z as MouseClickEvent<br/>DIM Output as Boolean  <br/><br/>Output = 'False'  'Gate Logic places the boolean sense of False as 0 in circuit design.<br/><br/>' Supposing that X is the Horizontal pixel grid on the screen and Y the vertical,<br/>' Z could take place anywhere on the screen.<br/><br/>IF X &gt; 180 AND X &lt; 360 AND Y &gt; 200 AND Y &lt; 250 AND Z &lt;&gt; 0 THEN<br/>Output = 'True'<br/>ELSE<br/>Output = 'False'<br/>END IF<br/><br/>If that were a circuit, X were a voltage, Y another voltage, and Z a switch that was either on or off, between 180 and 360 volts X's swich is set to 1, and when Y's voltage is between 200 and 250 Volts, it's switch is on/set to an output of 1.  So, this could be drawn as a 3 input AND gate.  Since, the IF Statement is so flexible that we can do anything following the THEN or ELSE part of the code, the output of an AND gate is not always equal to one.  It is actually sent to one of if not a series of pointers.  In the logic of the Graphic Computer Language I am trying to establish, you should be able to use these sections of the program to generate a true boolean/Gate Logic Truth Table.  In any program all of the math that works for the least number of gates, works for these parts of your code.  If the pointer went to more code, I would just call a Sub Public or Private.<br/><br/>So, when I say, you could actually produce a virus free operating system, that doesn't mean when it arrives at the market.  That means for the duration of it's operation it can keep itself from running viruses.  First, you have to have the Langauge the computer can read.  Second, you have to derive the truth tables that define a virus.  If the compiler includes a decompiler, and the decompiler is just checking to make sure that the computer program was written by a native compiler, then the problem of having a machine figure out whether a program is a virus or not is nearly solved.  Every program requires User Input.  If it doesn't it has to be a driver, codec, DLL, but nothing that doesn't start with a mouse click, or a keystroke.  Now, think about a virus, it usually is more like a TSR that doesn't pay attention to the USER.  A video game always pays attention and the input is typically a joystick or other, sound or video.  Any binary file is treated as a binary first and only data.  Until, the decompiler has checked it, the operating system has to wait to execute the program.  That's why the operating system needs to be designed after the compiler.<br/><br/>There are dozens of different ways I could have written that last piece of code.  But, in Assembly Language, the way you would write the code would never include an IF statement.  X, Y, Z and Output would all be assigned values as Variables.  Keeping this centered around the ALU the Greater Than &gt; and Less Than &lt; turns this into a 5 input AND gate.  Each time you present greater than or less than it represents an input and the non-zero condition of Z only represents one input.  In Assembly Language, you would then have a jump statement to tell it which line of code to go to if all of the conditions were true, and then if they are not which line of code to jump to.  Now, I know which way data is flowing, it doesn't really matter if it's a string or a variable, in gate logic that's all 1s and 0s.  As long as I have converted that into a gate I can determin the flow of information through any other program that is verified as safe to the operating system.  If there is no user input causing the domino effect in some part of that code, no matter how long it is, that has no, requires no, and waits for no user input, then it must be malicious code.  If I walk away from my computer, and another computer calls my machine, and asks for data, web links, history, credit card numbers, or maybe a keystroke recorder.  Why doesn't text ever show on the screen.  Oh, look at the truth table.  The user cannot see the information, and it never makes it through any part of the code it generates to display it on the screen, and it's not sent to the sound card.  When the user has nothing to do with it, it is detectable in the truth table.  But, you have to be able to track all of that through several layers of software, drivers, dlls, codecs, and finally your user interface.<br/><br/>I should be able to translate that IF statement into a graphic of a keyboard, mouse, screen, sound/speaker, joystick, modem/network ports, printer, and the program as a bunch of logic gates.  I never need to run the program to know if it's going to send something unwanted to through my hardware.<br/><br/>There are plenty of Digital Logic Gate Simulators, that run simulated logic gates.  In a matter of seconds if not just a few moments, determine all of the possible logical states of that network of gates.  So, why doesn't anyone want a language that would keep commands like PARSE, MID, WEND, WHILE, LOOP UNTIL, go so far as a sophisticated scientific calculator in complex commands, and really just manage pointers/jump commands.  I have looked into it, and tested a few short pieces of Assembly Language Code to work as a AND gate, when it comes down the clock cycles it matches most.  But, then there are no alogorithms or theorms like Demorgan's and most of which you learn in basic algebra to use math to eliminate unneeded code from the binary or the source before it is compiled.  If you have extra commands or lines of code that could be written differently, the computer can actually solve that Boolean Algebraic equation for you.  But, if you continue to use the program languages that are out there, there will just be more viruses.  You won't have an Effective Heuristic Anti-Virus Engine designed into the Operating System.<br/>© 2009 Microsoft Corporation. All rights reserved.Thu, 09 Jul 2009 20:07:33 Zae4b994d-3e5f-4006-a94e-7d5acc116a1dhttp://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#ae4b994d-3e5f-4006-a94e-7d5acc116a1dhttp://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#ae4b994d-3e5f-4006-a94e-7d5acc116a1dGeek Moseshttp://social.msdn.microsoft.com/Profile/en-US/?user=Geek%20MosesI cannot find a compiler that uses a Graphic Language.I've read through my related threads, and I didn't see any answers.<br/><br/>This thread is where I attempted to say the same thing.  I just fail to make it simple.<br/><a href="http://social.msdn.microsoft.com/Forums/en-US/hottechnology/thread/4085dabc-f161-4ac8-957f-72f2141b1509/">http://social.msdn.microsoft.com/Forums/en-US/hottechnology/thread/4085dabc-f161-4ac8-957f-72f2141b1509/</a><br/><br/>I wish that Microsoft Research, would really look into Digital Logic Gates, in the simplest form.  The Graphic Language would consist of the basic logic gates, AND, OR, NOT, XOR, NAND, and NOR.  This piece of Code Represents a 3 input AND gate.<br/><br/>DIM X as MousePointer X<br/>DIM Y as MousePointer Y<br/>DIM Z as MouseClickEvent<br/>DIM Output as Boolean  <br/><br/>Output = 'False'  'Gate Logic places the boolean sense of False as 0 in circuit design.<br/><br/>' Supposing that X is the Horizontal pixel grid on the screen and Y the vertical,<br/>' Z could take place anywhere on the screen.<br/><br/>IF X &gt; 180 AND X &lt; 360 AND Y &gt; 200 AND Y &lt; 250 AND Z &lt;&gt; 0 THEN<br/>Output = 'True'<br/>ELSE<br/>Output = 'False'<br/>END IF<br/><br/>If that were a circuit, X were a voltage, Y another voltage, and Z a switch that was either on or off, between 180 and 360 volts X's swich is set to 1, and when Y's voltage is between 200 and 250 Volts, it's switch is on/set to an output of 1.  So, this could be drawn as a 3 input AND gate.  Since, the IF Statement is so flexible that we can do anything following the THEN or ELSE part of the code, the output of an AND gate is not always equal to one.  It is actually sent to one of if not a series of pointers.  In the logic of the Graphic Computer Language I am trying to establish, you should be able to use these sections of the program to generate a true boolean/Gate Logic Truth Table.  In any program all of the math that works for the least number of gates, works for these parts of your code.  If the pointer went to more code, I would just call a Sub Public or Private.<br/><br/>So, when I say, you could actually produce a virus free operating system, that doesn't mean when it arrives at the market.  That means for the duration of it's operation it can keep itself from running viruses.  First, you have to have the Langauge the computer can read.  Second, you have to derive the truth tables that define a virus.  If the compiler includes a decompiler, and the decompiler is just checking to make sure that the computer program was written by a native compiler, then the problem of having a machine figure out whether a program is a virus or not is nearly solved.  Every program requires User Input.  If it doesn't it has to be a driver, codec, DLL, but nothing that doesn't start with a mouse click, or a keystroke.  Now, think about a virus, it usually is more like a TSR that doesn't pay attention to the USER.  A video game always pays attention and the input is typically a joystick or other, sound or video.  Any binary file is treated as a binary first and only data.  Until, the decompiler has checked it, the operating system has to wait to execute the program.  That's why the operating system needs to be designed after the compiler.<br/><br/>There are dozens of different ways I could have written that last piece of code.  But, in Assembly Language, the way you would write the code would never include an IF statement.  X, Y, Z and Output would all be assigned values as Variables.  Keeping this centered around the ALU the Greater Than &gt; and Less Than &lt; turns this into a 5 input AND gate.  Each time you present greater than or less than it represents an input and the non-zero condition of Z only represents one input.  In Assembly Language, you would then have a jump statement to tell it which line of code to go to if all of the conditions were true, and then if they are not which line of code to jump to.  Now, I know which way data is flowing, it doesn't really matter if it's a string or a variable, in gate logic that's all 1s and 0s.  As long as I have converted that into a gate I can determin the flow of information through any other program that is verified as safe to the operating system.  If there is no user input causing the domino effect in some part of that code, no matter how long it is, that has no, requires no, and waits for no user input, then it must be malicious code.  If I walk away from my computer, and another computer calls my machine, and asks for data, web links, history, credit card numbers, or maybe a keystroke recorder.  Why doesn't text ever show on the screen.  Oh, look at the truth table.  The user cannot see the information, and it never makes it through any part of the code it generates to display it on the screen, and it's not sent to the sound card.  When the user has nothing to do with it, it is detectable in the truth table.  But, you have to be able to track all of that through several layers of software, drivers, dlls, codecs, and finally your user interface.<br/><br/>I should be able to translate that IF statement into a graphic of a keyboard, mouse, screen, sound/speaker, joystick, modem/network ports, printer, and the program as a bunch of logic gates.  I never need to run the program to know if it's going to send something unwanted to through my hardware.<br/><br/>There are plenty of Digital Logic Gate Simulators, that run simulated logic gates.  In a matter of seconds if not just a few moments, determine all of the possible logical states of that network of gates.  So, why doesn't anyone want a language that would keep commands like PARSE, MID, WEND, WHILE, LOOP UNTIL, go so far as a sophisticated scientific calculator in complex commands, and really just manage pointers/jump commands.  I have looked into it, and tested a few short pieces of Assembly Language Code to work as a AND gate, when it comes down the clock cycles it matches most.  But, then there are no alogorithms or theorms like Demorgan's and most of which you learn in basic algebra to use math to eliminate unneeded code from the binary or the source before it is compiled.  If you have extra commands or lines of code that could be written differently, the computer can actually solve that Boolean Algebraic equation for you.  But, if you continue to use the program languages that are out there, there will just be more viruses.  You won't have an Effective Heuristic Anti-Virus Engine designed into the Operating System.<br/>Tue, 09 Jun 2009 10:14:00 Z2009-06-09T10:14:00Zhttp://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#dde1feb4-8aa8-41bc-8f5a-7a0b703173b8http://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#dde1feb4-8aa8-41bc-8f5a-7a0b703173b8Andy Ayers - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Andy%20Ayers%20-%20MSFTI cannot find a compiler that uses a Graphic Language.You've probably heard of the halting problem. Once a system becomes powerful enough to effectively compute, its behavior becomes impossible to statically analyze. There's no easy way out of this.<hr class="sig">Architect - Microsoft Phoenix ProjectThu, 11 Jun 2009 07:14:09 Z2009-06-11T07:14:09Zhttp://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#c86aa3fb-f1ba-4906-9c86-191545945a85http://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#c86aa3fb-f1ba-4906-9c86-191545945a85Geek Moseshttp://social.msdn.microsoft.com/Profile/en-US/?user=Geek%20MosesI cannot find a compiler that uses a Graphic Language.Hello, I realize that for every problem there is a solution. But, like cleaning toilets, not everyone likes the right answer. First, statistical analysis, is the wrong method. It doesn't matter how many times you do this that or the other thing. When it comes to statistical analysis of a machine, it all leans over to the users. Boolean Logic and Algebra are the keys to developing a program language, operating system, compiler, decompiler and logic analyzer that can exclude viruses, spyware, adware and other forms of malware. The example of the above shows you how an IF statement can be converted into a boolean and gate. There is another way that can happen. Nested IF statements are also the same forms of boolean logic gates. http://en.wikipedia.org/wiki/Boolean_algebra_(logic) <a href="http://en.wikipedia.org/wiki/Boolean_algebra_(logic)">Boolean Algebra</a> The two other subjects on that page that are critcal to the speed of execution of any program and defining unnamed viruses, etc is http://en.wikipedia.org/wiki/Truth_table Truth table http://en.wikipedia.org/wiki/Logic_minimization Logic minimization As long as I take all of the Conditional Logic Statements in a program into account and convert them to the appropriate corresponding logic gates, all you have done is convert all of the strings and variables into logical conditions of 1s and 0s. It could be converted into a logic diagram of gates or a boolean logic equation. Every logic network of gates, no matter how big or small all require user input for any given function of the machine. If they do not, then there are only several pieces of hardware requiring full time programs to run/drivers. So, the Truth Table, can include and follow user inputs from a program all they way through several DLLs, or Drivers, and finding that a desktop application is contacting a server, and there is no user viewed or produced information being sent of which even that would have been included in the truth table and equation to determin what the program was doing, then the question is simple, is it communicating without permission? If there is no user input required to change that, the truth table will tell you, there are no checkboxes associated with the program and that communication, no textboxes, no listboxes, no forms except that the function is buried in one. Once, you have a series of truth tables that define illegal actions, or define the lack of permission for communications. If it is not a driver and you do not see it running, it can tell you that you will not see this program on your screen and or that you will not have any user control over it. If you have no user control over it, it runs and you cannot see it, and it communicates with a server, than it is spyware. If you have no user controls and it runs but you will see it, then it's probably an image you wouldn't want to see attached to a virus. We had the INI files, and now registry files, which for the most part are the encrypted version of the old INI files. The INI files should come back to the operating system, and the operating system really should refuse to run any programs that the decompiler cannot decompile, and after it has been converted symbols and tested/a simulaiton of the gate logic run to provide a truth table and define the program's purpose, it won't run it. This needs to be added to Command.com/The Multi-tasking environment handler. Then the installation of the program can go through and make it's entries into the INI files that are where a programmer can override the Registry files by using a dedicated text editor, and that all stays humanly readable and editable with keystrokes. But, a program when ever it shows up on the disk, is found on media, does come from the net, will not run until inspected. That inspection can tell you if the program is suspicious, and without huge lists of known viruses, or a scanner. The scanner is a part of the operating system and if you copy or move an executable it will be scanned before it will run and just because it has changed directories. So, what is scanner/decompiler really looking for? A lack of user control associated to functions, loops, and timers, and when ever a user doesn't have control, it is labeled a threat. I realize that if you took enough time to figure out how the compiler/decompiler pair would have to work with the operating system that you could use a spell checker and something similar to a grammar checker, just like for checking for open brackets to point out that some function doesn't have a cue that is user established by an mouseclick, enter key, and there's nothing in the tab order to allow access to communication control, or making the program visible. But, you can't tell how much extra code you have, cannot be sure you have the shortest or fastest executing without Gate Minimization.Tue, 16 Jun 2009 22:42:30 Z2009-06-16T22:42:30Zhttp://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#ec8bfc58-06ac-4058-b5b6-27ad70908114http://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#ec8bfc58-06ac-4058-b5b6-27ad70908114Andy Ayers - MSFThttp://social.msdn.microsoft.com/Profile/en-US/?user=Andy%20Ayers%20-%20MSFTI cannot find a compiler that uses a Graphic Language.What you propose is more or less (modulo the boolean algebra bit) the approach taken in modern managed runtime environments like the CLR. Read up on the verifier for .net programs. Unfortunately, it's not enough to verify that a program cannot do bad things.<br/><br/>A promising approach in this area is to require that in addition to the program itself, the program creator provide a proof that the program has certain goodness properties -- the runtime system then just needs to verify that the program and the proof are consistent and correct. The insight is that checking a proof is much easier than creating one. But I'm not aware of this being done in any large-scale systems...<hr class="sig">Architect - Microsoft Phoenix ProjectThu, 09 Jul 2009 14:20:13 Z2009-07-09T14:20:13Zhttp://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#6258de4a-a828-449e-90bd-a418eb21d156http://social.msdn.microsoft.com/Forums/en-US/phoenix/thread/ae4b994d-3e5f-4006-a94e-7d5acc116a1d#6258de4a-a828-449e-90bd-a418eb21d156Geek Moseshttp://social.msdn.microsoft.com/Profile/en-US/?user=Geek%20MosesI cannot find a compiler that uses a Graphic Language.If the rules that prevent viruses are not in part the compiler and in part the operating system, you'll never see the end of viruses.<br/><br/>Often times I find that computer security systems eliminate the simple solutions already provided for the problems that they are facing.Thu, 09 Jul 2009 20:07:33 Z2009-07-09T20:07:33Z