Does anyone else notice that C# 4.0 dynamic was here 20 years ago in form of NSObject forwardInvocation:(NSInvocation *)
-
Or is it just me?
-
well really I will say that
Nothing new has been invented in the last 20 years when it comes to programming.
REALLY!
go look back at what has been done for years in SmallTalk and Lisp for example.
C++ is in many ways C with some cool macros, the first gen of C++ compilers where not much more than a pre-processor that wrote C code from C++ code.
multi-core is just multi-cpu refined so that building the parts is less costly and runs better.
parralel processing has been a known problem for years, we are just now gewtting to a point where we need a general solution for low cost systems... but super computers have been there for a while.
OOP is 20 years old -- actualy more like 30 years old.
and Jobs used Mach to make the Next Cube OS when then got some bits ported to Mac OS in making OS X
but Mach pre-dates the Mac OS.
the list goes on and on....
Heck I saw Commodore 64's that ran dynamic programs... code was patched into memory from disk on-the-fly by smart coders back then... it was BASIC but the methods were far from basic
-
You are right. Things have not change much in the last 20 years.figuerres said:well really I will say that
Nothing new has been invented in the last 20 years when it comes to programming.
REALLY!
go look back at what has been done for years in SmallTalk and Lisp for example.
C++ is in many ways C with some cool macros, the first gen of C++ compilers where not much more than a pre-processor that wrote C code from C++ code.
multi-core is just multi-cpu refined so that building the parts is less costly and runs better.
parralel processing has been a known problem for years, we are just now gewtting to a point where we need a general solution for low cost systems... but super computers have been there for a while.
OOP is 20 years old -- actualy more like 30 years old.
and Jobs used Mach to make the Next Cube OS when then got some bits ported to Mac OS in making OS X
but Mach pre-dates the Mac OS.
the list goes on and on....
Heck I saw Commodore 64's that ran dynamic programs... code was patched into memory from disk on-the-fly by smart coders back then... it was BASIC but the methods were far from basic
I've been working with MacBook for only the past 1 and half years, before that I only know Microsoft programming.After learning some Objective-C programming I realized that most of the ideas Microsoft present as their are actually been around for long time.C# 4 dynamic directive is nothing more than forwardInvocation.The different I see is that Objective-C has it built into the language, not as a patch added in version 4. -
What do you mean "patch"?ido.ran said:
You are right. Things have not change much in the last 20 years.figuerres said:*snip*I've been working with MacBook for only the past 1 and half years, before that I only know Microsoft programming.After learning some Objective-C programming I realized that most of the ideas Microsoft present as their are actually been around for long time.C# 4 dynamic directive is nothing more than forwardInvocation.The different I see is that Objective-C has it built into the language, not as a patch added in version 4.
I don't remember ever hearing Anders Heisberg ever claiming the language ideas were invented by him, nor MS.
-
Minh said:
What do you mean "patch"?ido.ran said:*snip*
I don't remember ever hearing Anders Heisberg ever claiming the language ideas were invented by him, nor MS.Maybe patch was not the best word.
What I mean is that it's a "feature" added to the language, not so natural from the begining.
Obj-C is the only language I know which took "sending messages" metaphore and put it into action.
As of not claiming the language ideas were invented by MS, sometime is does look like they think they invent the wheel. I think MS is doing great job on some products (like WCF and WPF, not so much WF) but they do tend to act as if they are the first one on the plant to think about the idea.
I just happen to learn Obj-C on my free time and when I saw the "unhandled message method" exists in the core of the language it just strike me that it has been there for so long and MS only got to it now. -
Obj-C is not the only language which put "sending messages" into action: it "borrowed" that metaphore from Smalltalk. Smalltalk goes much further: all its control structures (if-then-else, while-loop, ...) and operators (+, -, *, ...) are not built into the language, but are implemented as messages. For example: if-then-else is a message on the Boolean-class:ido.ran said:Minh said:*snip*Maybe patch was not the best word.
What I mean is that it's a "feature" added to the language, not so natural from the begining.
Obj-C is the only language I know which took "sending messages" metaphore and put it into action.
As of not claiming the language ideas were invented by MS, sometime is does look like they think they invent the wheel. I think MS is doing great job on some products (like WCF and WPF, not so much WF) but they do tend to act as if they are the first one on the plant to think about the idea.
I just happen to learn Obj-C on my free time and when I saw the "unhandled message method" exists in the core of the language it just strike me that it has been there for so long and MS only got to it now.(a < b) ifTrue: [ ... ] ifFalse: [ ... ] -
TommyCarlier said:
Obj-C is not the only language which put "sending messages" into action: it "borrowed" that metaphore from Smalltalk. Smalltalk goes much further: all its control structures (if-then-else, while-loop, ...) and operators (+, -, *, ...) are not built into the language, but are implemented as messages. For example: if-then-else is a message on the Boolean-class:ido.ran said:*snip*(a < b) ifTrue: [ ... ] ifFalse: [ ... ]You right, I didn't write it well: ObjC is the only language I know which "send messages" and is in use for real-world applications.
SmallTalk, as little as I know about it, never left the class room much.
Ido. -
Late binding has been around for almost as long as programming, you'd be hard pushed to attribute it to SmallTalk let alone Objective C.
-
Uhm, Smalltalk is used in real-world applications. The first WIMP-based GUI was written in Smalltalk. There are multiple commercial and non-commercial implementations of Smalltalk (Squeak, GNU Smalltalk, Dolphin, VisualWorks, ...) and a whole community of Smalltalk-developers. Maybe you should look further into it, if you're interested.ido.ran said:TommyCarlier said:*snip*You right, I didn't write it well: ObjC is the only language I know which "send messages" and is in use for real-world applications.
SmallTalk, as little as I know about it, never left the class room much.
Ido. -
It's been around for longer than that. Besides which, the point of the C# dynamic keyword isn't to introduce the world to the benefits of the dynamic keyword - it's to allow programmers who use dynamic-style programming to use C#.
C# isn't about inventing new programming paradgms - new programming paradgms should never be introduced into a commercial in-use language - they should be integrated only once they are known to be good.In this case, I'm not sure that the dynamic keyword is all the great idea that its made out to be (it means that lots of program-errors can't be determined until runtime, which is a bit rubbish and reduces the overall code stability of the sourcebase). -
AndyC said:
Late binding has been around for almost as long as programming, you'd be hard pushed to attribute it to SmallTalk let alone Objective C.
I remember learning that C# didn't have late binding and was surprised, as almost every language I had used to that point had some form of it.
-
evil: like any power tool; Use with caution!evildictaitor said:It's been around for longer than that. Besides which, the point of the C# dynamic keyword isn't to introduce the world to the benefits of the dynamic keyword - it's to allow programmers who use dynamic-style programming to use C#.C# isn't about inventing new programming paradgms - new programming paradgms should never be introduced into a commercial in-use language - they should be integrated only once they are known to be good.In this case, I'm not sure that the dynamic keyword is all the great idea that its made out to be (it means that lots of program-errors can't be determined until runtime, which is a bit rubbish and reduces the overall code stability of the sourcebase).
that's been true with C and pointers, with recusion and lot's of stuff...
some folks take new stuff and try to do everything with the new toy.. and then find out they messed up.
-
I honestly don't see me using any dynamic stuff, and cannot see the use of it in business application development. Not the stuff I do anyway.figuerres said:
evil: like any power tool; Use with caution!evildictaitor said:*snip*
that's been true with C and pointers, with recusion and lot's of stuff...
some folks take new stuff and try to do everything with the new toy.. and then find out they messed up.
Any developers (smart client) that can see a use for this?
-
We use it with everything we write (VB6).vesuvius said:
I honestly don't see me using any dynamic stuff, and cannot see the use of it in business application development. Not the stuff I do anyway.figuerres said:*snip*
Any developers (smart client) that can see a use for this?
Instead of separate stand-alone apps, we have one MDI app that loads forms with ActiveX controls on them. So instead of recompiling the MDI app everytime something gets released, we just add an item to a menu (which is dynamically loaded) and then have the menu item open a form with the new ActiveX control on it.
Without late binding, we'd have to put a reference to every new piece we write. -
I suspect you've never tried to write an Office add-in using VSTO?vesuvius said:
I honestly don't see me using any dynamic stuff, and cannot see the use of it in business application development. Not the stuff I do anyway.figuerres said:*snip*
Any developers (smart client) that can see a use for this? -
Not yet unfortunately, though I'm sure if dynamic makes it easy, my nonchalance will evaporate. I do know Anders demo'd an interop thing, where the code gode seriously unwieldy, I presume this is the spivinious scenario.TommyCarlier said:
I suspect you've never tried to write an Office add-in using VSTO?vesuvius said:*snip*
-
This thead title reminds me of a saying about "nothing ever being new - at least the idea of it". Anyone know where that came from, I can't put the right query into Google?
-
I don't think that nothing is ever new, it just not that common.vesuvius said:This thead title reminds me of a saying about "nothing ever being new - at least the idea of it". Anyone know where that came from, I can't put the right query into Google?Most of the "new" things are "old" things presented differently.Back to the issue, loading forms, dlls, modules, bundle or anyway you will like to call it is not what dynamic is about (current me if I'm wrong).dynamic is about been able to "interpret" inside your object what a method call should mean.Another thing is that I like new stuff, like to play with them and use them.The problem with Microsoft is that they introduce new things, but break compatibility with exists things.The start with Windows API, which is the only thing that stay till today.Then they had MFC, which some say still exists, but it is pretty dead.Then VB6 which break when they move to VB.NET..NET Framework 1 is not compatible with .NET Framework 2..NET Framework 3 is not even a framework, I like WinFX much better.They are not adding, they changing and breaking exists code.That's the real problem.
Thread Closed
This thread is kinda stale and has been closed but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.