Charles Simonyi leaves Microsoft
tibbetts writes "The New York Times reports (printable version) (Free blah di blah) that Charles Simonyi, the former chief architect at Microsoft and creator of Bravo, a text-editing program that later became Microsoft Word, has left the company to form his own startup. The focus of his new company is to "simplify programming by representing programs in ways other than in the text syntax of conventional programming languages," which is highly ironic in light of his infamous Hungarian Notation style of naming variables. Perhaps more amazingly, 'Mr. Simonyi has left Microsoft with the right to use the intellectual property he developed and patented while working there.'"
'Mr. Simonyi has left Microsoft with the right to use the intellectual property he developed and patented while working there.'
He probably threathened to reveal some rather embarassing details about how Microsoft has abused it's market power if they didn't give it to him.
I always prefered Reverse Polish myself.
Let's hope he isn't allowed to take Clippy the animated paper clip with him. die Clippy die.
OddManIn: A Game of guns and game theory.
Quick, get him to work on OpenOffice!
I'm determined to reclaim my karma. Now, if I can only find a groundbreaking article and something witty to say....
And the Smart Rats are fleeing the ship. I wonder what he knows that we don't know.
"Live Free or Die." Don't like it? Then keep out of the USA
Makes you wonder what he'll be shooting for? A cheaper, compatible MS Word competitor?
And a word on hungarian notation. It makes me want to puke. Your variables should be named well enough that it shouldn't need extra letters to tell you the type.
Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
IBM has done a lot of experimentation on developemnt systems along these lines. They never caught on. I remember seeing IBM demos trying to create development systems that anyone could drag and drop their own programs together.
"Mr. Simonyi has left Microsoft with the right to use the intellectual property he developed and patented while working there"
Is this normal? Or would he have negotiated this as part of his leaving? I would have imagined that the IP would have been owned by Microsoft?
Incidentally, I thought posting no-registration-required links to NYTimes.com was frowned upon....
He's been there for, let's see, exactly 17 years. Interesting.
"Mr. Simonyi has left Microsoft with the right to use the intellectual property he developed and patented while working there."
????!!!!!Errrrr??????
(conspiracy) Something seems to be going on here.(/conspiracy)
Even Hungarian Notation is a big improvement over having no naming conventions at all.
The only thing that we learn from history is that nobody learns anything from history.
Registration-free link courtesy of asahi.com/english/nyt
main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
Forgive me, but how does one code without text syntax?
There's a programming language called LabView (http://www.labview.com). Programs in this language aren't textual but rather lke graphical machines that you can easily visual the data flow through. This doesn't ultimately make programming necessarily easier though... scientists without CS degrees that still want to program their scientific instruments just often happen to have an easier time visualising LabView programs, that's all.
Does this mean that we're going to be seeing more programs with annoying paper clips?
HallmarkOrnaments.Com
"The focus of his new company is to "simplify programming by representing programs in ways other than in the text syntax of conventional programming languages,"
So it's Like Visual Basic?
In Soviet Russia, Trojan exploits YOU!
Mr. Simonyi has left Microsoft with the right to use the
intellectual property he developed and patented while working there.
That's only because Bill Gates owns his soul.
"It looks like the wheels are coming off! This time for sure! No really, this looks very bad for Microsoft!"
Posted by [any_slashdot_editor] on [several_times_every_stinking_day]
from the Boy-Who-Cried-Wolf Department
The only thing slowing Linux's takeover of the desktop is the ability to open Word file formats. He'd be excellent for understanding this... I hope the right people are paying attention...
--- For a good time mail uce@ftc.gov
They woulda off'd him before they're give in to those "terrorist-type" tactics.
I'm sure it was a part of his original contract.
I personally don't think that either a purely visual approach is necessarily better. Anyone looking into this should probably build it from the ground up by looking closely at how actual programmers write code, and treat it as a usability problem. Try to reduce key-stroke redundancy, and figure out ways to reduce errors. A friend of mine and I once considered writing a language editor which guaranteed that at any time, the program displayed in the editor window was syntactically correct. This would mean autogeneration of text (auto-completion of variables and syntax), and restrictions to prevent the developer from entering impossible code.
I think the mistake people have made is often to start out with unfounded assumptions about how it should be done - such as assuming that a "drag and drop elements, then connect them up with lines" approach is the right direction (I don't think it is - or we would all be programming with Javabeans right now).
Unlike most of the management at Microsoft (Ballmer), Charles Simonyi is definetly technical.
:).
Not mentioned in this article, he developed the Multiplan interface, which a gazillion of CPM based boxes used, the first version of Access, and had peripheral involvement of the development of the first Mac GUIs.
This guy started writing programs on a soviet vacuum tube (Ural II) computer. He snuck into Eastern Europe, and from there moved to the US.
If I had any cash I would invest in his company.
"Mr. Simonyi has left Microsoft with the right to use the intellectual property he developed and patented while working there."
To quote Nelson Munze, "HA HA!"
He's probably just a respected member of the company in a senior position, who politely asked the right people. MS don't have to be unreasonable just because you dislike them, you know...
Perhaps he left to create a simpler programming style 'cause he got so tired of trying to decipher the crappy code written with "Hungarian Notation" all these years.
Microsoft would never give up it's intellectual property - unless of course it stood to make money. So Microsoft probabaly does have some clause to buy the company from Simonayi.. or some agreement that Simonayi will directly/indirectly aid Microsoft.
Maybe this new company is MS's way of striking at other competitors ( remember MCI owning that 10-10-220)
MS will just nail him on something that wasn't his own intellectual properly, as Word was probably a collaborative effort, and much larger than the original content designed by Mr. Simonyi. Actually, what he may have contributed at the beginning would likely be somewhat common or antiquated by now, bet you a marble he doesn't get any of the current source.
No Score +1 Bonus? Oh Excellent Karma, how I love thee - phorm
Washington Post
Why post only a link to a page that requires registration for such a well reported story?
Input error. Replace user and press any key to continue.
which is highly ironic in light of his infamous Hungarian Notation style of naming variables.
It was a technique for making types easy to identify in a language (C) that doesn't have any native way of indicating type. In BASIC, you know that A$ is a string. In Perl, you know that @names is a list. In C you don't know what "last_position" is. A pointer? An index? A floating point vector? It's not as if Hungarian Notation was designed to be the ultimate language-independent programming tool.
This guy invented the hungarian notation yet his name is not an anagram of Satan, Baalzebub or Lucifer. Or has I missed something ? Or is it in the name of his new start-up ?
I'm not sure if this is bad because it's... well... evil and bad... or if it's cool because it can finally lure the stupid people with no knowledge and reverse intuiton away from basic so it will finally die...
Given his resume, it seems clear that he would have to start his own company if he wishes to leave Microsoft--no one else would hire him.
Simulation and Modeling languages are often graphical in nature. SLAMSYS is an example.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
Part of me wonders if we shouldn't give this guy and others a heiroglyphic language and be done with it.
I can see the logic...most musical notation is pictoral/symbolic (except lyrics), since A-B-C-sharp-hold it for 30 seconds- wouldn't convey the relative relation of the notes as well.
But for computer programming, I still think text will come out on top.
Beware typoes.
Could it be that maybe this man just wants a change of pace? Maybe he wants to move geographically? Maybe he wants more freedom to spend time with people important to him? Maybe he just decided to do it on a whim? Can we consider that maybe, just maybe, this has nothing to do with Evil Empire Microsoft (TM), politics, Open Source, or geekiness?
The masses are the crack whores of religion.
This topic raged recently on comp.object.
There are basically two common candidates: drag-and-drop "box-and-line" diagrams, and tables (my favorite).
I argued that OOP puts too much of the "noun modeling" into code. The more that is put into tables (relational databases), the easier it is for me to search, sort, filter, navigate, etc. the information (assuming decent relational tools).
The alleged downside is that algorithms are decoupled from data, which is "bad" in most OO philosophy. However, I don't see any huge penalty of this, and the benefits of being able to apply relational algebra and relational modeling outweigh any small drawbacks IMO. Besides, I have put code into tables on occasion.
I personally find code more rigid than a (good) relational system. In procedural/relational programming, mostly only "tasks" end up dictating code structure, and not the noun models, noun taxonomies, and noun relationships; which are all subject to too much change and relativism to use code to manage IMO. OOP is too code-centric WRT noun modeling.
It is probably subjective, so I hope that whatever he comes up with to replace code, it does not become forced down everyone's throat if it catches on in all the PHB mags. One-size paradigm/approach does NOT fit all.
Perhaps he can strive to make all 3 methods (code, tables, diagrams) interchangable. That way a given developer can use the representation that he/she likes the most without shop-wide mandates.
Table-ized A.I.
The register (us)'s version of this article says that Simony was the creator of Word and Excel, which were developed to overthrow VisiCalc and Wordstar.
From the article: Richard Brodie's mission under Simony was to "write the world's first wordprocessor with a spreadsheet user-interface. It took five years to repair the damage."
5 years? First rate clean up guys. First rate.
If you blog it...
Considering Word is perhaps the most buggiest piece of crap in the MS office suite (Excel & Access are relatively good)- I'm not sure MS is losing too much with the passing of this guy. Still it is interesting that MS isn't making a big issue about the IP this guy contributed. Maybe cause' it aint very good.
- Mod me down if you love Microsoft, I don't care anymore since I can't see my score. WHAT'S UP WITH THAT!
Blender And Linux Fan
There have been attempts at making programming languages that do not use "words" or "letters" in the past. Maybe this fellow has a good idea how to describe code without symbolic words. Drawing a map or something might work... who knows.
It has to be intuitive to be useful i think
In the future, though, www.asahi.com/english/nyt is the solution to all your NYT-reading problems.
main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
It's been done; for example Lisp represents programs as data structures rather than text. The structures are often obtained by scanning a text notation, but that is not strictly necessary. Sometimes the structure is manufactured by the program itself. Or it could come from some GUI manipulations, whatever. I wonder what Simonyi could be up to in this area that is original? (Original to the entire computing world, that is, not just ignorant pockets thereof).
when programming the usloth platform is akin to punching your microwave oven, who needs to understand the great loss implied by a pay-per-view (p-p-program, p-p-compile, p-p-*) mentality and practice? "it's only a few cents (each time), boss, and i am so productive tickling the mediaglyphs, just sign the check for the upgrade, please, PLEASE!"
programming is a craft, an art, a science (if done right). the usloth approach does not cultivate society. usloth slaves are to be pitied.
thi
Ah, I do that myself and I didn't even know it was called something. That's how I remember the names of people I meet, too. I won't forget the difference between lsrDave and fnyDave. That was dumb.
----
"Those who quote others are more likely to one day be quoted" -Tom Planter
He isn't hitting anything new as far as technology goes. Five years ago there was a company called FastTech that had tools called Graphiq and Cellworks.
Graphiq provided a rudimentary GUI that let you plan program flow with individual modules coded in something called C-- (this is no joke).
CellWorks provided a much better GUI but a different low level language that resembled in only the worst possible ways: Basic.
What we discovered using these tools is that they could indeed be powerful and almost any yahoo could use them. Once you wanted to solve something complicated and the problem immedietly started to look like programming 101.
In other words, complicated things are complicated, and it doesn't matter what the tool is. If you want to solve it you need someone specialized in that tool to solve it.
It's as simple as that.
Beware the wood elf!!!
If it weren't for Charles Simonyi, I wouldn't be proud to be Hungarian at parties...
:P
Wait... I never actually get invited to parties... damn... day dreaming again...
---
Programming is like sex... Make one mistake and support it the rest of your life.
Maybe it's like labview, which is a graphical programming language. Matlab Simulink is another example.
You draw the interface with drag and drop components. The logic is made the same way, by dragging and dropping logic and algorithm icons onto a white board, and then wiring them together. Each component has specific input and output nodes which require data of a certian type.
I use this a lot at work. At first I thought it was just a lame way for people with no programming skills to cobble something together. Now, I like and appreciate it. It will never replace the generality and power of text-based programming, but for specialized programming areas, it works well.
open source compiler, and an open source dev platform.
The problem with programming languages is that they are only as useful as the number of people that can write compatable code. Perl would be useless if you had to write everything in Perl and couldn't link to C code. You have to have as many interfaces out of your world as possiable.
focus of his new company is to "simplify programming by representing programs in ways other than in the text syntax of conventional programming languages
No wonder.
He was working on intentional programming before he left Microsoft.
Will Microsoft wait till the new company comes up with something truely nifty, and then buy it up (like they did to get their hands on Halo)?
Blog Prophyts - Right On, Man
You start by decoupling the text syntax from the data structure representation of the program. The Lisp language does this. Having this separation, you can continue to use the text notation to code for the data structure which makes up the true source of the program. Or you can write programs that construct that structure, perhaps out of pieces that you codify using the text notation. Or you can do something totally different: make a GUI which lets the user manipulate objects, and have that object manipulation generate data structures which represent programs that are compiled and executed. The technology for doing this has existed for a long time already.
Mr. Simonyi has left Microsoft with the right to use the intellectual property he developed and patented while working there.
If he patented stuff, he owns the rights to it and can use it if leaves MS. Now if his work was patented in MS' name, then he couldn't take it.
I'm out of my mind right now, but feel free to leave a message.....
And Microsoft holds a right to be the first to negotiate with Intentional Software if the company comes up for sale.
It sounds like Simonyi just handed the executioner his axe and said, "Now, don't use this UNLESS I say it's ok..."
This is the best news for thworld and the worst news for Monopolosoft since Myself.!!!! Great news!!!!!
Rien n'est plus beau que le creux du 0.
Depending on the context, this can be quite useful. Especially if you want to refer to X in several different manners.
There is no one naming convention that solves all problems.
This notation style is quite nice of a contracting firm that has a lot of different eyes on the project through out its life.
If I know the graphical control is the only one of its kind on a form, say an option button, the prefix "opt" jumps right out at you in code.
Or let us say that you have a selection of an item, and then additional information to gather for that item. optItem and txtItem is a lot simpler and extremly obvious, as opposed to item_chosen_or_not and item_value.
Then again all my loop counters are i,j,k,l, etc. I really have a problem naming loop counters simple enough to not be annoying, and more descriptive than i. The loops tend to be pretty ovious upon inspection, so the time wasted thinking up a good name is just that, wasted.
There is no one right school. If everyone agrees on a convention that will be working on a specific problem, then that is a good convention.
Yeah I saw this on CNN and BBC.
----
"Those who quote others are more likely to one day be quoted" -Tom Planter
But I hate it when my programs get stuck in the vacuum cleaner.
Has he heard about COLORFORTH ?
Trolling using another account since 2005.
Comment removed based on user account deletion
Hey! The printable version that was linked to didn't blah di blah me when I tried to access it! Maybe this is the cure for all of the NYT registration stuff, link to the printable version rather than the one with ads. Of course, I'll miss seeing all of the ads, but I'm willing to make the sacrifice.
I'm an American. I love this country and the freedoms that we used to have.
Companies can not get patents. Typically the human gets the patent and assigns the rights to the company.
A quick peek into the USPTO shows the Simonyi has something like 8 patents (probably from two applications, one of which was split into many parts) all of which are assigned to Microsoft.
So, Microsoft must have granted him rights to use the patents in his new venture. And Microsoft must have gotten something in return or they have not acted in the interest of their shareholders. What they got is the mystery.
See PARC's history and search for "Bravo", or read the summary below:
First off, I am a long-time C++ programmer (and C before that) with a recent conversion to Perl for anything involving munging text files.
/why/. If you're mucking around at the low level and it's making your high level design look a mess, take it as a clue that your design is not clear. Sure, there are exceptions that have to be coded for. Get them in the model at the right level and save yourself some work. I know programmers who have worn out the Cs and Vs on their keyboards, they cut and paste so much (yes, Windows, sue me).
It has been brought to my attention that no sane programmer would design a record keeping system that involved giving the a customer a text editor and a manual and making him enter his records in a particular format in files with a particular name and extension. Yet that's exactly what we do to ourselves with programming languages.
What we need is something that goes from UML all the way down to ASM, and more importantly, all the way back up. Editable at every level in between. Use colour, fonts, sounds and whatever else you want to indicate the age of a piece of logic (at whatever level), who last changed it and
I don't imagine this is going to be easy. However, the implementation is almost certain to be easier than getting people like me to start using it. Perhaps you youngsters should just write off everyone over 22 and start again. You'll thank us when we're gone.
--
E_NOSIG
Multiplan tanked, basically, because it ran too slow. The world went from Visicalc to 1-2-3. You can read the Billster say so himself here
BTW, everyone check out the rest of that interview, lots of interesting stuff, like "School Experiences: BG: 'We were kind of desperate to get free computer time one way or another. ' " and "Writing An Altair BASIC:
'I was fairly self-confident in those days. We didn't know how long it would take us. And it was kind of funny because we were sort of acting like we had it already.'".
try { do() || do_not(); } catch (JediException err) { yoda(err); }
"simplify programming by representing programs in ways other than in the text syntax of conventional programming languages,"
Oh... you mean like Magic ?
Calling Microsoft 'M$' is a sign that you're a retard.
The fact that you couldn't even do it right removes all doubt from my mind.
I once saw a spec (back in my VB programming days) that had something like four or five parameters in the hungarian notation before you even got to the variable name. something like
intLocalFnnameModulenameX
THAT gets a little absurd, IMHO. Not arguing that intX, or even intLocalX isn't useful, but you can twist yourself around an axle pretty damn quickly with this stuff.
ceci n'est pas un sig.
Anyone notice that OSDN is running Microsoft
ads... traitors!!
Here's one.
http://intentsoft.com/
Check out the FAQ, some entries are just hilarious.
http://intentsoft.com/faq.html#q11
At the beginning was at.
'Mr. Simonyi has --left-- Microsoft with the right to use the intellectual property he developed and patented while working there.'"
:)
"Left", as in he left it there, for them to use, or...
"Left", as in departed with that right so that it was no longer there and they couldnt use it.
dont tell me i need to read the damn article....
There's nothing Intelligent about Intelligent Design.
Wow, I get to be the first person to post something actually informative.
/ /w ww.research.microsoft.com/ip/g /digerati/simonyi/simonyi_p1.ht mlw .aisto.com/roeder/active/ifip96.pdf
Simonyi was big on what he called 'Intentional Programming' (yes, as opposed to UNintentional programming, which is what we've been doing all along I suppose.) It's been in the works since at least '94 which is when a classmate of mine went to work on the project after graduating.
He got shafted as the power inside the dev tools group shifted. Most of his group got cut loose and ended up looking for other positions, Oddly enough, Simonyi himself left the group and gave up on it a year or so ago apparently without telling the remaining core of the group.
See:
http://web.archive.org/web/20000815211509/http:
http://www.edge.or
http://www.omniscium.com/nerdy/ip/
http://ww
Hugarian notation is EVIL, and here's why.
....
....
...
....
/* ????? */
...
...." but otherwise the notation creates more problems than it is worth.
Consider a large program, in which we manipulate lots of ints. We have lots of pointers to ints, so our code looks like:
int *piFoo = &bar;
*piFoo += 1;
*--piFoo = 5;
and so on.
Now, we discover that ints aren't big enough - we need to use longs.
long *piFoo = &bar;
*piFoo += 1;
*--piFoo = 5;
OK, now we have two equally bad choices:
1) We leave the variable names alone. But now they are lying, and therefor are introducing more errors.
2) We change the variables. Now what SHOULD have been a simple change is rippling all over the code.
Even if you do as you should, and use a typedef, things are still bad:
typedef int Thingy;
Thingy *pThingy_mythingy = 0;
....
How do you create the "warts" for typedefs without creating ambiguity?
It gets even worse if you have structures:
struct Narf
{
int *pi_Poit;
};
....
*narf.pi_Poit = 5;
....
Now, you have to rev all the items that reference that structure, all documentation that refers to that structure, etc.
I can somewhat understand the use of a leading "p" to indicate "pointer to
The proper place to trace variable types is not in the name of the type! It should ideally be traced by your editing environment, along with the location of the variable's definition, the location of it's instantiation, the location of it's initialization, and any comments that you want to assign to the variable.
www.eFax.com are spammers
It is appreciated...
It states:
Mr. Simonyi's departure, to be announced today, will leave Microsoft with only three senior people from the team that led the company in the early 1980's: Bill Gates, a co-founder and the company's chairman; Steven A. Ballmer, the chief executive; and Jeffrey S. Raikes, a group vice president.
I'm pretty sure Marc Macdonald is there again; Marc was the first employee of Microsoft.
Simonyi was into Intentional Programming. In IP you express the "intent" of your system. Binding the intent to an actual implementation can be handled automatically for a particular target platform. Not sure if this stuff was just a pipe dream, or if they (MS) ever got anything to work.
http://www.aisto.com/roeder/ip/
If pictures were more powerfull than text then I would be drawing a you a picture of this argument instead of writing it.
I challenge you to draw a picture of this argument.
just what the world needs, more LabView Programmers...
Harder.. Better.. Faster.. Stronger
What they got is the mystery.
All that research and you didn't even read the article. Microsoft has the right to purchase his new company if he should decide to sell.
The guy left Microsoft with IP regarding Word Documents. I'm interjecting that some of that information would simplify the transition of desktops from Microsoft to OpenSource. How the hell is that off topic?
--- For a good time mail uce@ftc.gov
"PR Speak to English" translation: "If they make something we want, we'll take them over and crush them."
Sure the ability to 'draw' a program sounds lucrative ... but lets look at VB a moment. I've programmed in VB, it is an incredibly slow language that is weak and limited in scope. Sure it works for writing up a quickie program that you don't want to do the C++ for and don't care about speed or efficiency.
Whenever you make programming easier you narrow its scope and limit its functionality, that's how it's been forever. Sure C is a lot easier than machine code, however with machine code you can do whatever you want with the CPU. BASIC is easier than C but you can do about jack squat with it. VB is a lot easier than C++ but it is slow, only works on windows, and is limited in what it can do with the computer (IE, you can stick a bit of assembly in it to do a special task.)
Personally, I think making programming easier for laymen is a BAD thing. We already have enough sKript Kiddies claiming they are '1337 h4XX0r' enough of them already know how to steal VB code we don't need to open the door for '1337 pr0gr4mm3rz' too.
Our greatest enemy is neither a single man, nor is it a nation, it is, as it has always been, our own greed.
I've gotten pretty far merging relational and object models.
Personally, I find OOP can be a bit rediculous when everything is mindlessly reduced to a rigid object model as dictated by some guy's rigid methodology. (Not all are rigid)
What I've found, is that most of the time is a matter of versatile interfaces. Myself wanting the best of my procedural language and SQL, I found myself creating interfaces that implement smart tables. A smart table is an object that exposes an arbitrary number of properties, like that of a named collection. Unlike a normal named collection, a smart table allows you to implement adhoc rules (changing this field causes this), using code, stored procedures, etc. Need more than just smart properties? Fine, derive from the Smart Table base class, and add your own functions (usually stored procedures)
"Communism is like having one [local] phone company " - Lenny Bruce
Drag 'n Drop one's own programs together? Been there, done that, in 1994 no less. NeXTStep Developer.
What does Microsoft get?
Bill gets Charles out of his hair, that's what. The guy was probably too much trouble to keep around and it was easier to give him some (to MS) worthless IP that to keep dealing with him.
Also, he is kind of Bill & Steve's buddy from way back - Simonyi was, what, employee #4 or something?
Maybe the mess that was/is Office will finally be re-done, now that 20 years of pride isn't getting in the way.
I just finished reading Dealers of Lightning which has extensive writing about how Simiyoni got to Xerox and his career there.
It sounds Simonyi has an idea that could be comlimentary to Microsoft's goals He wants to develop a new revolutionary improvement to programming and good programming tools help sell operating systems. The huge number of programs that run on the Windows is probably Microsoft's most significant advantage over Linux, and MacOS (for now anyway).
A visual method of coding data structures, sockets, buisiness rules etc could do for programming what RAD tools did for GUI development. RAD tools enabled someone with very little programming abilitity to build useful programs.
If his ideas are a real success Microsoft might try to buy out Simonyi's company and reintegrate it with the Visual Studio family in the future.
What a bunch of idiots (my apologies to those who actually said something insightful) !!!
......
A man leaves M$ and all sorts of ridiculous comments are made about him and what he contributed to all of us.
For those of you who have a hard time accepting Hungarian notation and thus ridicule the poor man all together; I believe that Hungarian notation is a sincere contribution to the industry (whether its good or bad is something else and very subjective) but at least the guy contributed something to the industry, What have you contributed ???? probably nothing, or else you would've had something better to send your time at instead of shredding the guy to pieces !!!
Can't you just say something insightful or just shut up instead of making complete clowns of yourselves !!! (my apologies again to the decent folks out there).
It can be very useful, when used right. I've been using it for a while, but now I'm moving away from it, excepting for UI elements. I find it useful to have mnuSave(menu) and cmdSave(button), for example. It also saves some clutter in IntelliSense, for example when I know there's a button for exiting, but I'm not sure if it's called cmdExit or cmdQuit.
Now, when writing code I almost never use it, excepting cases when I want to make something obvious, for example bDone would be a Boolean value. It makes it absolutely obvious to everybody else that it's not a counter of how many files have been processed or something of that kind.
I find going any further than that extremely messy. I remember seeing a variable with a 10 character hungarian prefix somewhere. Yuck!
6
enter
12
+
5
*
4
+
so = 94 vs traditional (6+12)*5+4=
For my part, I refuse to embed type names unless my code is complicated enough to make it hard to track all the variables or when I have to name two related variables that use different types. And when type information is necessary, I use plain English: MainForm, not fMain. Maybe not a good idea if you're writing huge bodies of C++ code with hundred of global variables. But not all of us do that.
Nice link - The ideas behind "intentional programming" sound rather interesting. Making a language for abstractions would surely ease programming by huge amounts, especially with how the abstractions sound adaptable to new events and problems.
If it ever succeeds, it will be quite interesting.
There was a tone towards the end though that was a bit scarey - it almost made it sound like the abstractions themselves could become a popular commodity. That could be a scarey day, especially with the patent and copyright laws.
Facinating idea still.
1) The guy had been working for Microsoft for 21 years (how long have you worked anywhere?)
Zero nanoseconds.
2) He's a billionaire (how much money do you have?)
It depends. When is his welfare check supposed to arrive?
Which, ironically, I just yesterday finished reading the chapter on Simonyi.
Good insight into why Word works with block of text instead of a stream as WordPerfect does.
If you don't want to repeat the past, stop living in it.
hahahaha that's awesome
I don't think it's such a mystery; the article explains it in the very next sentence. "And Microsoft holds a right to be the first to negotiate with Intentional Software if the company comes up for sale."
Microsoft has apparently decided that Intentional Programming isn't worth pursuing; they've dropped the project. So as things stood, they weren't going to see much return on the work they paid for. But Simonyi wants to pursue it as a private venture. Great! Let him fund further work, because he's a true believer. And if it starts to look more successful than they thought, they can go buy it back.
(Besides, it doesn't say they signed over the rights to the patent; it just says that he "has left Microsoft with the right to use" the stuff. So essentially they've just given him a free license to his own patent.)
---glv
Could it be that the real reason Simonyi wants away from Microsoft is that he's interested in aspect-oriented programming? And the language that's getting the buzz in aspect-oriented programming is AspectJ, where J stands for Java? And promoting Java would be a career-limiting move at Microsoft for anyone these days?
Instead of the Times article, look at this one in the Washington Post which gets a little closer to this interpretation.
To a Lisp hacker, XML is S-expressions in drag.
Odd that no-one's posted this yet.
The company can be found at http://intentionalsoftware.com/ with some vague-but-cool-sounding stuff about changing the world.
"Genius may have its limitations, but stupidity is not thus handicapped." --Elbert Hubbard (1856-1915)
Try to reduce key-stroke redundancy, and figure out ways to reduce errors. A friend of mine and I once considered writing a language editor which guaranteed that at any time, the program displayed in the editor window was syntactically correct.
Ok, key-stroke redundancy is a stupid thing to focus on. The real time investment in good programming has nothing to do with how fast you type the program in. You should be spending at least twice the time in analysis, planning, and documentation that you do actually entering the code. A better area to focus on would be tying code, documentation, and visualization together. I hate updating documentation after making a change to an application, I want it to just happen. Lots of recent IDE's have made nice strides in this area for a multitude of languages recently. It really has a long ways to go though.
As for not allowing code that isn't syntactically correct to be entered, forget it. Every attempt I've ever seen at this has been unbearable to work with. Practically all text entry has been done with the mouse and it's incredibly restrictive. People enter code in different ways, I might copy a piece of code from a help file or document and paste it in to my editor then modify it. I might message a friend and he might e-mail me a snippet of a program he's written for another company. I don't want to try to duplicate stuff by point and click. Now, I have seen editors that will highlight any syntax errors. That's a little annoying from time to time but it's much less restrictive. It's sort of like having a word processor underline misspelled words...
This is a perfect job for even the simplest search-and-replace functionality.
Read again, anonymous coward. Microsoft has the right to negotiate first. So? That has no value. MSoft will either offer some price or not offer. If they offer too much simonyi takes the deal, but Msoft is not stupid. So Simonyi negotiates with all buyers and microsoft keeps a finger in if they are interested and buys at market price.
:-)
I don't see where Microsoft demanding the right to be stupid is any kind of compensation for donating their shareholder's patent rights.
Maybe there is a formulaic structure to that negotiation that isn't in the press release? Maybe a pricing formula? We don't know that part.
How about:
app (fn i => foo.bar.yukims.glock(a, i)) [1, 2, 8, 13, 19]
(Apply to each element of the list [1, 2, 8, 13, 19] the function that calls foo.bar.yukims.glock with the pair of a and its argument.)
I agree that this kind of repetition is to be avoided, but that doesn't mean that we should be avoiding it by introducing syntactic hacks into the language. In fact, just adding higher-order code to a language (ie, having a functional language) solves this kind of problem elegantly and briefly.
Don't dismiss Simonyi's ideas too quickly. Believe me, what he's doing is really clever.
Contrary to what many wrote here, the idea is NOT to create a visual programming tool a la Visual Basic. It is to represent programs visually, to "render" the program tree using various ad-hoc renderers. For instance, the best representation for math notations is not text. It could be something like MathML, or a graphical representation, or TeX. So the idea is that you can have several input representations, several output representations, and one common format underneath it all. You get rid of the whole idea of source code...
The good news is that there is a Free Software project with the same capabilities: Mozart. It's been there for a long time, and it's quite functional now. This might give you an idea of what can be done with this kind of tools. See in particular the Moka Java-to-Java extensible compiler, which lets you do things with Java you can't do otherwise... I think it's really the future of programming.
-- Did you try Tao3D? http://tao3d.sourceforge.net
I think it was something like:
int v[] = new int[] {1, 2, 8, 13, 19};
foreach(int i in v) {
foo.bar.yukims.glock(a, i);
}
I think the mistake people have made is often to start out with unfounded assumptions about how it should be done - such as assuming that a "drag and drop elements, then connect them up with lines" approach is the right direction (I don't think it is - or we would all be programming with Javabeans right now).
There is nothing wrong with "drag and drop elements, then connect them up with lines". That is the way it should be done. The problem is with the way we program. Encapsulating conventional algorithmic code with things like JavaBeans and c++ classes will not get rid of the fundamental problem of software engineering: the practice of using the algorithm as the building block of software programs. For an alternative non-algorithmic approach, take a look at Project COSA.
For more on Chuck Simonyi's invaluable contributions to computing, and to be reminded of how what is now mundane was at one point incredible and revolutionary (thinking of Bravo, here) this book is an excellent, highly readable and entertaining rendition of those days. I'd probably enjoy a second read of it, myself....
Quod scripsi, scripsi.
A professor at my school wrote a language called jboxes, it has the same basic design as java- it is a actually some sort of extention to java but all the programming is done using a gui where boxes are moved around and connections added. I myself have never used it but it looks neat, he gave a class that I was in a demo shortly after he finished. It looked like it might have helped me in some of my first cs classes, although I did not have that much trouble.
Anyway the point of creating Jboxes was to help students who had trouble with OOP and writing code, Jboxes takes away the problems of syntax to help new cs students understand the structure of programming and think of the design instead of getting hung up on syntax problems.
I could not seem to find a page dedicated to jboxes on his website but he does have the executables and pdf files(for his classes) at http://clem.mscd.edu/~shultzj/190kf02/
"Alcohol, cause of, and solution to, all of life's problems" -Homer Simpson
Charles S.: I'm leaving to go my own stuff
Bill G.: Charles, you'll have to give up your rights to all the stuff you've developed over the years
Charlies S.: Did I metion that I still have a copy of those memos that the government never saw?
Bill G.: Well when you put it like that, I'll give you the rights to all your stuff. Need any cash? No? Here have some anyway. Anything else I can do? Anything at all? Coffee, Water? Sure..?
The idea of simplified programming makes me thing of Agentsheets. Does anyone know if this is the sort of thing he's working on?
Microsoft has a research lab at Oxford. There is a guy there associated with Intentional Programming from an Electrical Engineering background.
Might as well take it down to an ASIC.
The ultimate in speed. A custom architecture for your app.
I wonder if a 'Linux' chip would look much different from a 'XP' chip, if one were to compile both kernels and then tried to cram the most common operations into whatever silicon was available.
If you are clueless about what it is, then read the msdn info and decide for yourself. Don't buy into Chrisd's characterization uncritically.
As for me, I don't use it often, but occasionally I find it useful especially when writing code in a language that supports automatic type conversion and a variant data type.
Amazing magic tricks
In the superb 1985 book Programmers at Work, Simonyi talks about the loved and hated Hungarian naming convention, programming and meeting other famous programmers:
- "
...the guys at Apple, like Bill Atkinson [one of the Lisa programmers who later developed the MacPaint program for the Apple Macintosh computer] -- I think Atkinson is the greatest--and Bill Budge [who programmed Pinball Construction Set for Electronic Arts]. These guys are all great.
Kiczales is the founder of aspect-oriented programming.We don't have much to talk about. We feel good vibes and exchange three or four words. I know that if one of these guys opens his mouth, he knows what he is talking about. So when he does open his mouth and he does know what he is talking about, it's not a great shock. And since I tend to know what I am talking about, too, I would probably say the same thing, so why bother talking, really? It's like the joke tellers' convention where people sit around and they don't even have to tell a joke. They just say the joke number and everybody laughs. It would be great to be able to work with all these guys, but we are business competitors. I think we could do incredible stuff together. Maybe the Martians will invade and we will have to do a Manhattan project in computers. We would all be shipped to New Mexico. Who knows?"
Czarnecki's 2000 book Generative Programming reviews work from both Simonyi and Kiczales on "intentional programming". Read the sample chapter to find out what Intentional Software (Manhattan Project of computing?) may be subsetting-for-future-supersetting. The subjet is domain-specific developent.
Review table-oriented programming for historical context. Then learn about TRIZ (Theory of Inventive Problem Solving), a heuristic methodology created by Russian Genrich Altschuller. From Terninko's 1998 Systematic Innovation:
-
".. A patent was rarely given, so most inventors applied for an author's certificate. The Soviet government owned the intellectual property that the author's certificate documented, so the certificate was merely an acknowledgement of the inventor's contribution. Ironically, it is the simple, direct format of the author certificate that facilitated Altschuller's research into the inventive process
... During the formulation of TRIZ, Altshuller and colleagues reviewed tens of thousands of author's certificates and patents.
... author certificates ... included a cover sheet, a one-page sketch and a short invention description. This simple format made it easy to identify underlying patterns of the inventive process ... Altshuller identified patterns frequently used in the more innovative patents.
... a revolution in the field of inventive problem solving had begun.
... Altshuller and his boyhood friend, Raphael Shapiro ... in a 1948 letter to Stalin ... criticized the inventive process used throughout the nation and offered some measures to improve the methodology. Their proposed improvements were an embroyonic form of TRIZ. Unfortunately, their patriotism and valuable ideas were not rewarded. Altshuller and Shapiro were charged with "inventing with the purpose to do harm to the country." After a year of interrogation and torture, they were sentenced to 25 years in a prison camp above the Arctic Circle.
... publishing their first article on principles of their theory in a 1956 issue of a scientific magazine ... Under the pseudonymn Altov, Altshuller wrote science fiction stories to earn his living. But here again he found an application for TRIZ in the creation of many of the ideas for his futuristic devices and creatures.
... Only two of Altshuller's books have been translated into English ... key findings are explained in these books, which reflect his study of over 200,000 patents, focusing on 40,000 identified as containined the most innovative design solutions.
... What if we have never encountered a problem analagous to the one we face? This obvious question reveals the shortcomings of our standard approach to inventive problems. A table of conflicts (Contradiction Table, Appendix D) between 39 design parameters (Table 1) answers this question of how we can face an unfamiliar conflict by offering 1201 generic problems that were solved using at least one of 40 generic principles (Appendix C and Table 2).
That's probably enough fair-usage citation of Terninko's book. Online, you can surf the contradiction table of principles/problems.In 1946, Altshuller decided that he must create a new science for the theory of invention
... These patterns identified in the development of a design contain two major components: regularities in design evolution, and principles used in innovative solutions. Altshuller's observations led to an additional breakthrough; since the evolution of engineering design was a process governed by definable laws, it could be taught
What would have been a hellish existence for most people became a time of significant intellectual growth and productivity for Altshuller. The prison camp contained dozens of professors, eminent scientists, musicians, and artists, all of whom were jailed during Stalin's great Purges. As a result, Altschuller's education continued. Because fellow prisoners were happy to have someone who was eager to learn and listen for hours, the prison camp became Altshuller's private university. The worst punishment for Altshuller was the prohibition on writing. A prisoner could be beaten cruelly and placed in a cell if he were found in possession of a notebook. Despite this considerable obstacle, Altshuller continued to develop the science of innovation.
Stalin died in 1953, and Altshuller and Shapiro were released one year later
... During the 1970s, translations of Altshuller's books and articles circulated in Germany and Poland, eventually reaching Japan, the U.S.A. and other Western countries
Traditional problem solving builds on past experiences
TRIZ Applications:
- elementary school using TRIZ
- weapons technology, Kowalick
- Cringely on Kowalick updating TRIZ for GM and NASA
- more refs
Rich--
bay area colo w/remote console and reboot
open-source java
I for one would be interested to see a Slashdot interview with him.
Hyslop and Sutter on Hungarian
(In summary, don't.)
'Mr. Simonyi has left Microsoft with the right to use the intellectual property he developed and patented while working there.'
He probably threathened to reveal some rather embarassing details about how Microsoft has abused it's market power if they didn't give it to him.
Yeah yeah, four legs good, two legs bad. I think you mistyped the URL, you really want to be here.
Why don't you Slashbots just shut the fuck up already? I'm not kidding, and I've got karma to burn. Everybody knows what you have to say even before the story is posted, and everybody knows you can't back up your outrageous claims.
And by the way, you spelled your nick wrong. Would you take a guy who in one sentence proposes a clearly agenda-driven and unverifiable hypothesis with zero arguments seriously if he can't even spell his own nick? Ask yourself that before posting the next time.
"If you think education is expensive, try ignorance" - Derek Bok
Microsoft's is called VB, used to create VD like viruses.
As for me, I don't use it often, but occasionally I find it useful especially when writing code in a language that supports automatic type conversion and a variant data type.
My reaction to that would be that the language is forcing work that should be automated (by strong type checking etc.) on the programmer. It seems to me that if you are using a programming environment where Hungarian Notation is useful, you should perhaps step back and consider alternative tools.
What is also worth remembering is the fact that Mr. Simonyi founded the chair of "Professor of Public Understanding of Science" at Oxford, which is currently held by Richard Dawkins. His book "Unweaving the Rainbow" is a direct result of all this.
"Man in the Moon and other weird things" - wfmh.org.pl/thorgal/Moon/
This is the man behind Assbackwardsland Notation?
May the demons of the underworld take him! May his liver be devoured slowly, ever as his pancreas spins upon the spit!
Hungarian Notation was the most pointless development to hit programming since 'object oriented languages' (Funny, show me something you can do in an OOP language that you can't do in, say, C. *snort* Awww, wot, ya gotta put some elbow grease into it and bloody code? How sad.)
HN was invented for use with C, not C++.
But even so, in C, C++, or any weakly-typed language, changing the type of a variable can introduce subtle bugs, particularly when dealing with unfamiliar code. It's a good idea to review references to a variable when changing its type, and that's a process that meshes well with search/replace anyway.
This isn't a problem with HN; it's a benefit, since you're forced, or at least strongly encouraged, to do the right thing.
And isn't this something of a canard, anyway? How often do you have to change a variable's type? If you're doing a lot of that, something is wrong. Compare this with how often you need to find a variable's type.
I guessing that Simonyi, with his fascination with "notational calculus" was also responsible for Multiplan's elegant address notation. I've always found it much easier to use than the klunky "A1" notation introduced by VisiCalc. Alas the spreadsheet user community was already well established, and simply didn't want to learn macro writing all over.
I'll try not to hold that against him! Access is a nasty piece of work. It's a bad attempt at an end-user database tool that's become a painful to use database programmer's tool.!!!
What the heck does THAT mean??
I'll tell you what it means. Microsoft is instutionally unable to innovate. Any REAL innovation would be starting in a new, and very small, field.
Ah, "visual" drag-and-drop programming environments! That's a real horror, my friends. As a veteran who has suffered the immense pains of using that kind of torture, and who has happily come back to the sunny fields of C++ (text editor, then gcc), I know what I say.
By the way, the painful system I am talking about is a development tool for quite specialised telecom applications, running on top of traditional switches. Some idiot named it Intelligent Networks. The system was regarded by my fellow developers as "assembler with funny little drawings"...
As a general rule you're correct, however in this case it's actually the other way around. Languages that support a 'variant' data type do not require type checking (strong or weak) because type conversions are handled automatically (you never have to cast anything or even worry about what type anything is. 99% of the time the compiler figures out what you meant based on the code you typed in. This leads us to the usefulness of Hungarian Notation:
Hungarian Notation allows the code to be more meaningful to the reader. This creates less work for the programmer because in languages with a 'variant' data type more work is already being done by the compiler. If you are adding an integer to a string, but the string happens to contain a number, then the compiler will automatically calculate the value that is the sum. The sum can then be concatenated to another string or added to another number, whatever you choose. Of course, the risk with this kind of thing is that you accidentally write code that means the wrong thing and the compiler doesn't complain. That's where Hungarian notation comes in: It forces you to think about what the code means when you are writing it. I think that for most people this is a Good Thing.
Amazing magic tricks
Well, I, for one, certainly do that. I like my code to actually compile when I'm done editing it. If one is too lazy to check the safety of a type change like this, HN will be the least of one's problems, IMHO.
There's a lot more keeping Linux from taking over the desktop than lack of word file format parsing. Like, oh, say, some consistent UI, ease of administration, and a whole lot of marketing!
Although she may have left Microsoft, she'll live on in her music, what with great hits like `Let the River Run' `You Belong To Me' and `You're So Vain'. I think this will really be her legacy - in fact, I wasn't even aware of her coding skills.
Oh wait, Charles Simonyi? Er, nevermind...
Yes. Thank you. The FREE registration was giving me a lot of problems.
There is no free lunch. Grow up.
if the language in question is javascript, and the environment is a client browser, what alternative tools would you suggest? javascripts lack of types sucks (since the type is inaccessible, but sometimes critical), but that's the language you've got. I find very simplified hungarian notation invaluable here when *I* have to enforce variable typing since the language does not.
It sounds like he left Microsoft to explore Microsoft Research's own Intentional Programming project where source code is not simply respresented as a text file rather as a database of symbols which can be defined and replaced at the scoping level making the compiler truely multilingual in both written text and symbol programming, like flowcharts and circuitry schematics. Interesting stuff.
I've worked extensively with scientific developments, numerous specialist units (some of which were the same by different names), different default unit systems in different target countries, etc... In all seriousness, I think there are three simple approaches to variables that store values with units, depending on the complexity of your situation.
From the bottom of my heart, I can tell you that two of these approaches work tidily. The middle one doesn't scale readably to either highly compound units or calculation of non-trivial expressions.
For simple work, start with a variable age, and make its type and meaning clear with concise comments where it's declared. It's much easier if you stick with the same units everywhere as a general rule: all lengths are in mm, all times in s, whatever. Then you just need to comment exceptions, such as storing an age in years and not seconds. Note that someone reading your code will soon learn what units are being used, and then typically finds the constant _in_years an irritant. Meanwhile, any up-front benefit you derive from a "clear" name is offset by the fact that you have to either take it on trust (leading to bugs when things get out of synch) or check anyway (removing any benefit).
If you need more power, or you want robust unit checking, design yourself a smart type to do it. It's not hard, and it can save literally weeks of effort later on if you need to do any deep reorganisation to support different unit systems, etc. You can also incorporate things like checking for values within a valid range, automatic deduction of compound unit types, yada yada if you ever need them.
Naming conventions are, in principle a good thing. As with anything, though, too much is often worse than none at all.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
One of the principals I try to stick to is to enter data once and only once. In the case of Hungarian notation, there is redundency in a variable's definition:
int iName;
A good IDE allows one to take an identifier when encountered in a program, such as:
iName = foobar;
and lookup its original type/definition along with all of uses of that particular variable. You'll notice that this is not possible in visual studio. The best one can do is a text search across all files that comprise the workspace.
My only question is whether the lack of such a type lookup/cross reference facility drove the widespread use of Hungarian notation, or if the use of Hungarian notation (particularly within Microsoft) prevented the evolution of this facility in Visual Studio when it has existed in numerous other IDEs.
He seems to be the only person posting to this article that knows what Simonyi has been working on.
he focus of his new company is to "simplify programming by representing programs in ways other than in the text syntax of conventional programming languages,"
So he's leaving to work on HyperCard?
Now I don't necessarily believe this, but it seems to me that this could be construed as an attempt by the players within Microsoft to continue to operate as an effective monopoly without being a singular corporate entity.
Creating a web of inter-locking corporations has worked for various other evil organizations such as Scientology, the mafia, DeBeers, etc. Why not Microsoft?
The ties that bind them together would not even have to be in the form of stock. As long as a symbiotic relationship exists among the companies that are spun off, you can expect them to act in such a way as to benefit them all.
Lee
Muslim community leaders warn of backlash from tomorrow morning's terrorist attack.
I downloaded the whole thing and I downloaded the samples/examples, and I can't make heads or tails of their friggin menus -- that darn thing is worse than Word!
Shouldn't I be able to do something like Files Open (or perhaps Files Open Project), browse to a directory called "samples" or "demos", open one of the projects, build it, and tell it to run (this is an IDE, isn't it?), and it should run the friggin program. I can then browse the source code of that program and see how the do stuff -- like a GUI button or text box, and then write my own programs.
Yeah, yeah, I browsed their help, and you are supposed to drill down into menus with non-standard names (what happened to Files Open?), and then you can set a bunch of options, you can import the examples and UNZIP them, and then you can specify a whole bunch of "jar" files you are supposed to add to your project to get at the necessary Java classes to do neat stuff. The help file instructions run to pages of "click on this" and "activate this dialog" and "enter this field", and I tried following help, and I couldn't find the stuff that was supposed to be there, and as to the examples I did find, I got as far as building them, but I couldn't figure out what the heck I was supposed to specify to get anything to run.
I have used Delphi and I have used Microsoft VC++ and Code Warrior, but Eclipse has me completely stumped. Yeah, yeah, I could plow through their help and maybe in a couple of days of trying things I could get a sample program to build and run in Eclipse, but I got a whole bunch of other stuff to do.
Am I the only person out there who finds Eclipse opaque? Does someone have any helpful advice on how to get started with the thing?
Hungarian Notation saves our ass. My group maintains several million lines of code, and we change variable types all the time. By changing both the type of the variable and the prefix on its name, we effectively cause all code that referenced that variable to fail to compile. This is the desired result.
The task of progogating a change of variable type includes visiting the affected code and verifying that the change will not have unwanted consequences. It almost always does. Hungarian notation allows you to do this quickly, effectively, and in a single pass. Waiting for the regression test to come back negative is reckless and unprofessional.
We don't allow code to be checked in if it is not in HN. If it can't be visually audited for type correctness by an independent team, without the use of an IDE or some type of code browser, it's a liability and therefore has no business in our code base.
-Hope
/QUOTE The idea, Mr. Simonyi said, is to make it easier to build and debug complex software programs by moving a step further away from conventional, close-to-the-machine coding -- the painstaking handwork that can be where programmers' good ideas or intentions are lost or left out.
"We're trying to improve software productivity by making the program look more like its design," Mr. Simonyi explained./ENDQUOTE
didn't Bill Atkinson do this with HyperCard?
"simplify programming by representing programs in ways other than in the text syntax of conventional programming languages"
Don't you mean Visual Basic?
Thanks,
Travis
"INTENTIONAL PROGRAMMING" A Talk With Charles Simonyit ml
http://www.edge.org/digerati/simonyi/simonyi_p1.h
Perhaps I am abusing the term "weakly typed."
What I meant was, C and C++ are pretty permissive about mixing and matching various numeric types together in expressions. Sometimes the implicit conversions the compiler generates don't work the way the author of the code expects.
The problem is frequently exacerbated when C and C++ are used in environments that encourage or require liberal use of explicit casts. That throws a lot of possibly helpful type-checking out the window.
The latter does not imply the former, by any means. One of the fabulous things about functional languages is that when you create a new data structure, you can often create a few very simple functions to work with that structure in a very abstract way, and then write more powerful and specific functions using them, ad nauseam.
The app function that Tom7 mentioned would be a typical example, applying a function to everything in a list. The next "level" might be a function that combines the elements of the list using another function, so that you could sum all of the elements in the list by just calling that function and passing "+" as the parameter function, for example.
This approach translates perfectly well to arbitrarily complex data structures. Indeed, higher order functions provide an "exponentially powerful" way of writing code to manipulate such complex data structures. You could have code that traverses a binary tree in a depth-first or a breadth-first way, and completely independent code that is used to calculate the mean of a collection of values, and then glue them together to build the code to calculate the mean of all values in the tree. Of course, you could use the same breadth-first or depth-first algorithm to search the graph, and the same mean-finding code to average a list, or the grades of everyone in a hash table whose first name is "John". Now that is code reuse. :-)
Gotta love this stuff, now if only it would go mainstream so I could play with it at work...
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
no m_lpszFilename..
no m_pModuleState..
does that mean that microsoft code will get much more readable now?
while (!asleep()) sheep++
Could it be that Simonyi left because in .NET Microsoft deprecated Hungarian notation? Maybe he was too attached to
all 138 different prefixes.
The new .NET naming standard is the Camel notation. It's the same
naming/casing standard that
is used in Java.
OK dipshit, this guy isn't some peon Microserf who has been working on Office file formats. Simonyi is one of the original employees of the company. He led the teams that developed the Office applications (Word, Excel, Access, etc.). For the last 10 years or so, he hasn't been doing anything Office related. He's been working on something called Intentional Programming. So consider the following:
1. He probably doesn't know anything about current Office file formats since he hasn't been involved with those projects since the early 1990s and even back then he was a team leader/senior manager.
2. Even if he did know something of value, he's probably not even remotely interested in getting into MS Office vs. OpenOffice and similar issues. They're unrelated to his research interest and way below his intellectual level.
3. The Office file formats aren't protected by Microsoft. Anybody with an MSDN login can download the specs from Microsoft. Building good Office import filters is not difficult because the formats are secret and have to be reverse engineered. It's difficult because the formats contain lots of embedded COM objects for which you have the binary data for but not the code that goes with it.
The responsibility lies in Chris's corner, as it is the posters responsibility to stick to facts and avoid bullshit like that. If only to help combat the very accurate stereotype that most young programmers are a bunch of mindless sheep out to parrot rhetoric and follow the crowd (perhaps a different crowd then some, but they are zealot conformists nonetheless)
ToonTalk is a non-text representational programming language. You program by 'physically' manipulating things in a cartoon world in the first person. It's a full, sophisticated language with features like parallel-executing functions and the ability to output your program into Java.
At the moment it's sold as a kids toy, but it clearly represents an entirely different programming paradigm.
I think it's one of the most stunning achievements of the last 10 years in software. It's the work of one person. Go Ken go!
If you have kids, let them try it.
http://www.toontalk.com/
I think Hungarian notation did serve a purpose, but nowadays it's obsoleted by modern compilers and high-level languages.
The main usefulness of Hungarian notation was in the days when much of the OS was still written in assembler. There is no type-checking in the assembler, so having a convenient way of conveying type information to the programmer, consistently, across a large organization is useful.
Consider a C program where you might have a struct foo. In one function, you might have something which is struct foo variable and elsewhere you'll have one or more variables that are pointers to struct foo. Hungarian notation lets you see at a glance whether a given variable (which you happen to know deals with a struct foo) is the structure or just a pointer to it.
If you screw up "var->field" versus "var.field" in a C program, a modern compiler gently reminds you. If you screw that up in an assembly program, nothing warns you. You just end up crashing mysteriously.
That said, I think Hungarian notation specifically is just ugly. But it's better than trying to read through C++ name-mangling!
--JoeProgram Intellivision!
Kinda interesting to read about others careers, how about a /. article on people's careers, good to get focus from others.
(1) Anyone hear of Lexmark ("Still trying to pretend we aren't really part of IBM") International? Let's say the "new" office suite this guy develops somehow "takes off"... and MS decides to drop their office suite except for the big collaborative business aspects (which, compared to Notes, doesnt exist)....
(2) Didnt this guy write Word before he worked for MS anyway? (not really a question... he did, regardless of or as supported by current belief). Perhaps that is why he has retained the rights... a good contract when he was bought out by MS in the beginning (and thus this isnt something as sinister as possibility #1...)
Dunno - it will be interesting to see how things go. But those are the only things I could think of that would explain why he got to leave with all his IP.
-Rob
BinFeeds
WebMaster:
BinFeeds
XXX Thumbnailed Image Newsgroups but
I've been increasingly troubled that I perhaps was alone in thnking textual representation fo source code is silly. As a Java programmer, every IDE under the sun ahs a little side panel where the structure ofyour class is represented as a tree, and as you clickon elements in the tree, the file jumps to that delcaration.
Turns out, though, that it doesn't really matter that method A appears before method B in the file. Code folding is a very simple step in this direction. And all of this arguing over tabs vs. spaces, curly-braces on their own line, etc. would be obliterated if code were stored in some other, unformatted manner.
I know IBM's alphaWorks has a project that transforms Java into XML and back. Once in unformatted XML, it is easier to see if a file changed functioanlly whereas typical diff programs would higlight a curly brace being moved to its own line.
"I worked at Microsoft for 20 years and all I got was this lousy code!" :-)
-Derek
...out to read the article and at least try to understand what Intentional Programming is about (use google, morons) rather than posting hundreds of speculative posts about this being a drag-and-drop programming environment, or about conspiracies, etc.
The only conspiracy here is that he's leaving with MS intellectual power because he's good friends with Bill - this pisses me off as a stockholder, but it has nothing to do with him having "dirt" on MS or Bill.
Morons...typical slashdot posting morons.
The company URL is here:
http://www.intentionalsoftware.com/
I'm a UBC student, and Simonyi's partner is Kiczales, a UBC professor. This morning he sent an email to the department basically stating that he's going off to found the new company, and that a major focus will be his previous work on Aspect Oriented Programming.
"Politicians and diapers must be changed often, and for the same reason."
(* Of course, you could use the same breadth-first or depth-first algorithm to search the graph, and the same mean-finding code to average a list, or the grades of everyone in a hash table whose first name is "John". Now that is code reuse. *)
No, that is called "reinventing a language-specific database".
Table-ized A.I.
Now the interesting thing I found out there is that the *other* founder is Kiczales, a Xerox PARC person who was a prime mover in the Aspect-Oriented programming movement. So it looks like we have here is a start-up featuring really smart people whose efforts to do world-changing programming tool/language research did not get anywhere in the large companies they previously worked for. Or something like that.
The success rate for start-ups is not very high, but this is at least an interesting sort of venture, unlike so many of the dot-coms of the past few years.
Babar
"...he still owns billions in MS stock."
This is the real reason. If he got really angry, he could dump his stock all at once and still be a billionaire. Just think how many Microsoft options that would drive underwater. Think of how the selloff could snowball, if others followed suit and sold their stock holdings, while they are still worth something.
Microsoft has to be really, really, REALLY nice to their insider shareholders, or else! It also follows logically, that they will have to be really ugly to their ordinary non-insider shareholders!
Also, don't expect "Trustworthy Computing" from Microsoft anytime soon! Microsoft just has no leverage to impose the required discipline on all those greedy "Microsoft Millionaires"!
If Kernighan and Ritchie had suggested Hungarian notation, you'd find lots of evangelists for it on Slashdot.
And if Bill Gates wore a dress, he'd be Mother Teresa. GMAFB, Kernighan and Ritchie wouldn't have suggested Hungarian notation, they're not that stupid.
(Besides which, the first C compilers only distinguished identifiers in their first 8 characters (and the loader reduced that to 7). They certainly wouldn't waste the space.)
-- Alastair
The gap between graphical notation of math and even high-order programming languages is mostly caused by ASCII, UTF-8 and other character sets we use to represent a simple fontless text of programs. Anything more sophisticated elements like graphics, diagrams are coded, not represented.
There is a good attempt to solve the problem of file persistence of math notation in MathML. When I try MathML in Mozilla it looks great. But when I try to "code" it myself - it's not really productive process without some vsual IDE support. Same with SVG. So, we need tools for MathML and SVG formats.
MathML and SVG are not really revolutionary since Donald Knut invented TeX, another unversal language to represent such document components as fontful, graphically enriched and formatted texts. And Adobe gave us Postscript to represent diagams and pictures (of course Postscript is not only about that). But have you tried to "program" on TeX and Postcript manually, in simple text editor? Isn't it a nightmare?
Fortunately there was LyX for awhile around, and now there is also TeXmacs. Creating a document in LyX is really productive job as it is not just mimicing MS-Word, which has a low-level manner tending to edit style of characters rather than document components. LyX forces (and helps) you to think about whole document and it style from top to bottom. Isnt it a style of structured programming?
When I've been creating several math papers in LyX I was thinking - why not use it as IDE for some new programming language which syntax will be based not on flat fontless character sets, but on math-based notation?
Of course I remember Ration Rose and Together - classical UML editors. By the way, when my paper is about both math and program design, then I really need UML editing in LyX. Or I need math editing in Rose, or document formatting in Dia. Unfortunately I did not meet a tool with all 3 editing styles: math, UML and document.
Ok, something like LyX might be an editor. The syntax should be XML-based for being readable/writable by both human and machines. Let's say it should be based on a combination of Docbook, MathML and SVG, rather than on decent TeX and EPS. As for semantic, it should be something multi-paradigm, combining functional, logical and object paradigms, like in Curry, Mercury or Oz.
Programming on such "not-flat" language will be more transparent for students, better verifiable for rapid development, and closer connecting math theory and implementation practice.
That's the idea I give free to any who wants to create such IDE-based language.
Less is more !
is this what you want?
foreach $x (1,2,8,13,19)
{ foo.bar.yukims.glock($a,$x); }
something like this would work in perl, pure functional programming languages (CL!) also have much of this stuff.
-- Matti Nikki
ZDNET
Microsoft veteran launches tool start-up
and The Register
Originator of Excel, Word leaves MS for startup
He's the one who co-authored the MSN messenger protocol.
/me is too lazy to google it, go do it yourself!
Btw, the document describing the protocol comes with the gaim source tarball, available here.
--gera.
-- All true wisdom is found on T-shirts.
Have you ever seen White Lightning, it was a 'joystick driven programming environment' for the Commodore 64 !!
You could program using a joystick selecting statements and changing values etc, it was actually fast also !!
Grtz Dreez
I read, some years ago, a book containing interviews to famous programmers, included Simonyi. He started writing code on a Russian vacuum tube calculator (The Ural II already mentioned) because he was working as a night guardian. Vacuum tubes often die when turned on because of thermal shock: so to reduce downtime the monster was never turned of, and our hero was left alone at night with it, as a sentinel.
Is that a tree-hunging martial art where one breaks apple pies in twos to share them ?
I m not so nugary now, but I could use a piece on the side of my coffee.
As a scientist, I've used LabView alot in the past. I hated it. Don't let National Inst kid you: there is just as much arcane syntax with LabView as with any other language (it's just expressed in a different way). What's nice with Labview are a) the nice data visualisation widgets and b) the huge driver list.
I've abandoned Labview in favor of Python now. It has the simplest syntax of any language I've seen so far, it's interpreted (as is like labview), it can do fast array-based number-crunching, it's got a selection of excellent GUI toolkits to choose from. Writing Python wrapper for C++ hardware drivers is trivial. Python is cross-platform. Oh and Python is free...
I've always had reservations about the use of his hungarian notation, but I see his move as an admirable one
Anything that one does to attempt to understand the difficulties inherent in software development is an admirable one. It could provide an insight into the solutions of difficult problems other than software and even ourselves, as software developers who have to 'think' for a living.
At www.ppig.org, the psychology of programming interest group there are others who hold similar interests, not only about developing software, but comprehending and learning about how to program.
That depends. Can your database give the performance characteristics of a singly-linked list, a skip list, an array, a red-black tree, a hash table or any other arbitrary data structure? I very much doubt it.
In your posts here, you invariably reduce from "data structures and algorithms" to "algorithms", with the argument that everything should go in "a database". Perhaps this explains your hatred of OO; it fundamentally mixes two things you like to keep separate so you can ignore one of them. Unfortunately, while that might be adequate for your business applications domain, there is a reason that the study of data structures and choosing the appropriate one is regarded by most of us as a significant thing.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Variant... VB. I suppose a ugly variable names are only fitting for an ugly language.
Napster-to-go says "Fill and refill your compatible MP3 player", which is a lie. It's not MP3. It's WMA with DRM.
Doesn't Python have 'em too... It's really nothing other than treating strings, ints, long ints, and floats as Objects and having smart methods handle numerical operations.
Amazing magic tricks
I disagree. I think Kernighan and Ritchie would really like Hungarian Notation, when it is appropriate. I don't believe it's always appropriate, however there are some situations when it can make code much more readable.
Also, let's try not to get too nostalgic for the days when C compilers only distinguished identifiers in their first 8 characters...
Amazing magic tricks
Ah, you're right. However, I think an editor that knows the language and can assist with variable typing is a better solution than hand-crafted name mangling.
Napster-to-go says "Fill and refill your compatible MP3 player", which is a lie. It's not MP3. It's WMA with DRM.
That has little to do with Hungarian Notation. Just add a "Chk" or "Hoopla" or whatever in front of the changed variable and the compiler will barf just as well and mark the places you need to check.
If you dont't use Hungarian Notation, you can change the variable back after checking the code. That way you will only commit the changes that really were necessary.
Maybe MSFT is actually a very fair company (to it's employees)? :-/
...was to fund Richard Dawkins' professorship:
Article at www.world-of-dawkins.com.
Female Prison Rape in NY
Female Prison Rape in NY
FYI. LabVIEW is not an interpreted language. It has a compiler under the hood that takes your program and generates x86, PowerPC, etc.. machine code. Since the syntax check happens as your are editing, the compile is very quick and you don't notice that it's there (since it doesn't need to generate errors, etc..) The only version of LabVIEW that was interpreted was LabVIEW 1 and it was slow (hence the addition of the compiler)
It's lucky this guy is a billionaire 'cause he'll never work again - he's a fucking idiot...
Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
The REAL purpose--if you read Simonyi's Ph.D thesis--is to piggy-back off of the already unique names of types in order to avoid having to give variables names and let the name be provided by context! If you are writing a routine that destroys a window:
void DestroyWindow(HWND );
Wouldn't you ideally like to omit the name of the variable? Isn't it obvious what it does? Calling it "HWND TheWindowToBeDestroyed" is clutter and just makes the source look like a mess.
But the compiler forces you to give variables a name, that's the way it is. Calling it noname12314 is okay from a technical point of view, but programmers can't decode that. Fully Hungarianized names, such as:
HWND hwnd;
HWND* phwnd;
HWND rghwnd[3];
But the type is just a side benefit. If you can't think of a name that does more good than harm, it saves you from naming. Of course Hungarian also has a way to encode useful information if you think of it: this is what the suffix is for, e.g. if you have two HWND variables you *must* discriminate somehow:
HWND hwndTopmost;
HWND hwndUnderTopmost;
(even though "hwnd" is free in the scope, they couldn't
- both
be called "hwnd"!)It's rather depressing that even within Microsoft, nobody gets it; like any other tool, it wreaks havoc in the hands of the ignorant. (Just look at the Windows APIs themselves, they don't get it at all! No wonder Hungarian Notation has such a bad rap.)
(* Duplicates are not needed at all. *)
It may be a matter of convenience. For an analogy, While-Loops are *not needed* if you have recursion, but many just find loops more convinient than (just) recursion.
(* It is just file processing prior to import into the system. *)
What if I want to process most of it *as* a table instead of as a file(s)? Table operations are often more convinient than file fiddling IMO.
I don't necessarily want my convenience limited in an attempt to achieve some idealistic purity. Perhaps the idealistic purity has benefits that outweight such limitations, but at this point I don't see them.
WRT "Oracle clones", I meant in a general sense, not a syntactical swappability sense. The current RDBMS follow a kind of copycat approach. That is perhaps why they don't follow your suggestions. Being like each other is more important to sales than implementing the (alleged) "ideal" relational model. Nobody seems interested in the later. You are welcome to evangelize it, but I suggest you improve your presentation. (My pages need an overhaul also, BTW.)
Existing data and tools just may be stuck in a kind of proverbial QWERTY of the proverbial relational typwriters.
Table-ized A.I.
This is exactly the correct response to mindless trolls that are parroting things they really know nothing about. OOP is not about doing anything new, it is about managing it and doing it better and easier. Sure, you can sit down and do it the long way, but to those that would rather get things done then they use macros, non standard libraries and things like OOP. gee, maybe you will argue next that any real programmer would never use anything outside of the core lib set and do everything for each program by hand. what a loon
In my haste, I blew away not only my /. cookie, but my NYTimes cookie. I didn't know this until I used the link to the printable version.
Darn :((
db
Cig:
ôô