Discussion:
Delphi popularity on the rise
(too old to reply)
David Ninnes
2008-07-10 13:54:42 UTC
Permalink
Hi all,

Haven't noticed this reported here, please forgive me if I've missed it. It
seems Delphi and pascal are on the up on the tiobe index

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

Not sure how much stock to place in this, but it's better than going down
:-)

cheers,
Dave
Michael Justin
2008-07-10 16:00:11 UTC
Permalink
Post by David Ninnes
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Not sure how much stock to place in this, but it's better than going down
OMG 0.51 % increase in one year - Delphi will beat Java in 36 years :)

Michael
Chi-Shun Chen
2008-07-11 06:22:34 UTC
Permalink
Post by Michael Justin
Post by David Ninnes
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Not sure how much stock to place in this, but it's better than going down
OMG 0.51 % increase in one year - Delphi will beat Java in 36 years :)
I think you are joking.


There are some new programming languages or tools every few years.

So Java maybe down to 10% or fewer in next 10 years.
Post by Michael Justin
Michael
Gil
2008-07-10 16:03:38 UTC
Permalink
Taking down scripting languages like PHP Delphi would be in 6th place
Marcello Dias
2008-07-10 16:58:13 UTC
Permalink
Post by Gil
Taking down scripting languages like PHP Delphi would be in 6th place
If you think that Java never really competed with Delphi,because Delphi was allways for Database related applications.
And that Visual basic was never used by professionals.
Delphi is in 4º in its category.
They should divide the research in categories like they did in Boxe.


Thanks
Marcello
marc hoffman
2008-07-11 06:33:25 UTC
Permalink
Marcello,
Post by Marcello Dias
If you think that Java never really competed with Delphi,because
Delphi was allways for Database related applications.
huh? i'm sure you can do database stuff in Java [not that i'd want to
<g>], and you certainly can (and many people are) do non-database stuff
in Delphi...
Post by Marcello Dias
And that Visual basic was never used by professionals.
Delphi is in 4º in its category.
and if you narrow it down to "languages that start with a D", it's up
even further. ;)
--
marc hoffman

RemObjects Software
The Infrastructure Company
http://www.remobjects.com
Andy Syms
2008-07-11 14:33:43 UTC
Permalink
Post by marc hoffman
and you certainly can (and many people are) do non-database
stuff in Delphi...
Yeah, we don' need no stinkin' databases. :-)
--
Andy Syms
Technosoft Systems Ltd
Nick Hodges (Embarcadero)
2008-07-10 16:03:56 UTC
Permalink
Post by David Ninnes
Not sure how much stock to place in this, but it's better than going
down :-)
My experience with the TIOBE index is that people are happy to
reference it when Delphi/Pascal is going down, but it suddenly becomes
statistically useless when Delphi/Pacal is on the rise. ;-)
--
Nick Hodges
Delphi Product Manager - Embarcadero
http://blogs.codegear.com/nickhodges
Richard Foersom
2008-07-11 06:15:44 UTC
Permalink
Post by David Ninnes
Haven't noticed this reported here, please forgive me if I've missed
it. It seems Delphi and pascal are on the up on the tiobe index
These numbers and arrows have always been a bit confusing. The arrows
only indicate place not the actual rating, so arrows can point up while
rating is falling, see e.g. Pascal in this month stat.

The rating is comparing same month last year, not through-out the year.
The number claims +0.51% to reach a rating of 2.011%, but if you saw
the chart some month ago (Feb 2008 I think) the rating was 3.3%. So is
it a gain or loss in these 5 months? Mumbo-Jumbo. However the graph
will show the rating (for top 10) throughout the year.

Anyway people put a lot of value into this stat, so in order for Delphi
to get a proper rating you should publish more of your work and write
articles on the net, to help your fellow Delphi developers and so it
will be counted by the search engines.

Doei RIF
Chi-Shun Chen
2008-07-11 06:33:16 UTC
Permalink
Post by Richard Foersom
Post by David Ninnes
Haven't noticed this reported here, please forgive me if I've missed
it. It seems Delphi and pascal are on the up on the tiobe index
These numbers and arrows have always been a bit confusing. The arrows
only indicate place not the actual rating, so arrows can point up while
rating is falling, see e.g. Pascal in this month stat.
The rating is comparing same month last year, not through-out the year.
The number claims +0.51% to reach a rating of 2.011%, but if you saw
the chart some month ago (Feb 2008 I think) the rating was 3.3%. So is
it a gain or loss in these 5 months? Mumbo-Jumbo. However the graph
will show the rating (for top 10) throughout the year.
Anyway people put a lot of value into this stat, so in order for Delphi
to get a proper rating you should publish more of your work and write
articles on the net, to help your fellow Delphi developers and so it
will be counted by the search engines.
In this point,

i think 1. Borland should had made Delphi be harder to learn.

and 2.if someone ask question in newgroups/Delphi forum,
we should suggest them search the answer by search engines 10 times first.


these should will incrase the rating :D
Post by Richard Foersom
Doei RIF
Graeme Geldenhuys
2008-07-11 07:15:40 UTC
Permalink
Post by David Ninnes
Haven't noticed this reported here, please forgive me if I've missed it. It
seems Delphi and pascal are on the up on the tiobe index
I would imagine the reason for Pascal going up is more to do with the
Free Pascal Compiler and Lazarus gaining huge popularity. The reason I
say that, is because Borland/CodeGear, doesn't use the name 'Pascal' any
more, but rather the 'delphi' language.

Either way, they are all Object Pascal based, so it's still a good
thing. :-)


Regards,
- Graeme -


_______________________________________________________
fpGUI - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/
Michael Justin
2008-07-11 16:28:50 UTC
Permalink
Post by Graeme Geldenhuys
I would imagine the reason for Pascal going up is more to do with the
Free Pascal Compiler and Lazarus gaining huge popularity. The reason I
say that, is because Borland/CodeGear, doesn't use the name 'Pascal' any
more, but rather the 'delphi' language.
Actually, Pascal is going down in the Index, -0.05% Delta July 2007, but
fortunately it is still ahead of COBOL.

Delphi + Pascal = "almost Ruby" - only in the Index, not feature-wise ;)

Looks like we'll be in the top ten this year ...
--
Michael Justin
SCJP, SCJA
betasoft - Software for Delphi™ and for the Java™ platform
http://www.mikejustin.com - http://www.betabeans.de
Francisco Ruiz
2008-07-14 11:03:39 UTC
Permalink
Delphi obtains a great result considering all the problems that have been
Borland in the last years.

Compare with (C# + .Net) obtaining only 4,00%

Really .Net is very improductive compared with the huge number of users.

Is Delphi.net really important considering C# has only 4,00%?

Francisco Ruiz
Michael Justin
2008-07-14 16:01:47 UTC
Permalink
Post by Francisco Ruiz
Delphi obtains a great result considering all the problems that have been
Borland in the last years.
Compare with (C# + .Net) obtaining only 4,00%
I agree and think that Delphi can beat C# (in this index) after a while
if Tiburon does a good job. Unicode support can boost Delphi popularity,
which already grows almost twice as fast (+0.51 %) as C# (+0.29%) per
year ...

Mike
Chad Z. Hower aka Kudzu
2008-07-14 16:44:23 UTC
Permalink
I agree and think that Delphi can beat C# (in this index) after a while if
Tiburon does a good job. Unicode support can boost Delphi popularity,
which already grows almost twice as fast (+0.51 %) as C# (+0.29%) per year
...
64 bit and continued (now that its finally started with Tiburon) attention
to modernizing and expanding the language instead of focusing solely on the
IDE and .NET compiler would go a long way as well.

Generics are a huge boost, imagine what something like LINQ could do.
--
Keep up to date - read the IntraWeb blog!
http://www.atozed.com/intraweb/blog/
Francisco Ruiz
2008-07-15 08:33:54 UTC
Permalink
Post by Chad Z. Hower aka Kudzu
Generics are a huge boost, imagine what something like LINQ could do.
Sure of this.

This time I think Delphi is going in the right way. Projects like Lazarus
show us the potencial of our community if we can recognize the correct
targets.

Francisco Ruiz
Marco van de Voort
2008-07-25 20:40:39 UTC
Permalink
Post by Chad Z. Hower aka Kudzu
64 bit and continued (now that its finally started with Tiburon) attention
to modernizing and expanding the language instead of focusing solely on the
IDE and .NET compiler would go a long way as well.
Generics are a huge boost, imagine what something like LINQ could do.
To be honest, I don't put LINQ in the same "great" category as either
generics or unicode. Maybe not even as 64-bit.
Chad Z. Hower aka Kudzu
2008-07-26 02:43:21 UTC
Permalink
Post by Marco van de Voort
Post by Chad Z. Hower aka Kudzu
Generics are a huge boost, imagine what something like LINQ could do.
To be honest, I don't put LINQ in the same "great" category as either
generics or unicode. Maybe not even as 64-bit.
How much have you looked at LINQ?
--
Keep up to date - read the IntraWeb blog!
http://www.atozed.com/intraweb/blog/
Micha Nelissen
2008-07-26 12:05:39 UTC
Permalink
Post by Chad Z. Hower aka Kudzu
Post by Marco van de Voort
Post by Chad Z. Hower aka Kudzu
Generics are a huge boost, imagine what something like LINQ could do.
To be honest, I don't put LINQ in the same "great" category as either
generics or unicode. Maybe not even as 64-bit.
How much have you looked at LINQ?
Isn't LINQ fundamentally incompatible with native code?

Micha
Thorsten Engler [NexusDB]
2008-07-26 13:58:29 UTC
Permalink
Post by Micha Nelissen
Isn't LINQ fundamentally incompatible with native code?
No.

To implement something like LINQ similar to how it's done in .NET you
need:

- something like IEnumerator / IEnumerable (a LINQ statement is a fancy
way of defining the behavior of an IEnumerator) [native Delphi got that
already]

- generics (otherwise there would need to be a huge amount of explicit
casting going on) [native Delphi get's that now]

- lamda expressions (which are really just syntactic sugar on top of
anonymous methods) [native Delphi get's anonymous methods now]

- extension methods [Delphi already got class helpers and record
helpers, add interface helpers, or just rename them generally to type
helpers and allow more then 1 to be in scope for any particular type
and you got what's needed to mimic the functionallity of extensions
methods]

- automatic lifetime management of allocated resources [you already got
that through reference counting with interfaces, some care must be
taken because it's not safe with circular references, but it's
sufficient]

- type inference [That's something that's still missing in Delphi,
basically you define a variable without giving a type, the compiler
infers the correct type from your source and uses that type. Make no
mistake, this is *very* different from dynamic typed languages.
Variables still have a static type assigned at compile time. The only
difference is that you don't specify the type explicitly, it's
implicitly infered by the compiler from the code that accesses that
variable]

- anonymous types [requires type inference to be useful, but is really
just some syntactic sugar to keep you from having to define a simple
class or record with just a list of fields manually]

I think that pretty much sums up what would be required to support LINQ
in native code, and I don't see a problem supporting any of it in a
future version of Delphi.
Micha Nelissen
2008-07-27 16:27:17 UTC
Permalink
Post by Thorsten Engler [NexusDB]
- type inference [That's something that's still missing in Delphi,
basically you define a variable without giving a type, the compiler
infers the correct type from your source and uses that type. Make no
How do you do type inference on a type at compile time, while the
'select' statement is going to be executed at runtime?

AFAICS the result type of that seelct is only known at runtime, not
compiletime.

Micha
Thorsten Engler [NexusDB]
2008-07-27 16:49:36 UTC
Permalink
Post by Micha Nelissen
Post by Thorsten Engler [NexusDB]
- type inference [That's something that's still missing in Delphi,
basically you define a variable without giving a type, the compiler
infers the correct type from your source and uses that type. Make no
How do you do type inference on a type at compile time, while the
'select' statement is going to be executed at runtime?
We are talking about LINQ here. Not SQL.

LINQ is totally statically typed.

In .NET, LINQ to SQL (which is just one of many possible implementations on top
of the general LINQ framework, there is nothing SQL specific in LINQ itself)
requires the creation of classes (by an automated too) that represent all
tables and their columns that you want to use LINQ against. Based on this the
compiler can at compile time statically resolve any involved types.

--
Thorsten Engler [NexusDB]
2008-07-27 20:55:50 UTC
Permalink
I thought the 'Q' stands for Query?
Yes it does.

query (plural queries): A question or inquiry.
You mean like TQuery? But there the IDE creates all the statically typed
fields?
There are numerous "introduction to LINQ" pages out there. Just a few that
google returned:

http://www.codeproject.com/KB/vista/LINQ_1.aspx

http://msdn.microsoft.com/en-us/library/bb397897.aspx

http://www.15seconds.com/issue/060713.htm

If you have any specific questions after reading some of these I'll be happy to
try and answer them.


--
Micha Nelissen
2008-07-29 20:33:49 UTC
Permalink
You mean like TQuery? But there the IDE creates all the statically typed
fields?
Ok, LINQ is not as powerful as I thought it was. I guess it's a good
combination of powerful features (generics, interfaces, etc.), but
nothing new essentially in itself.

I'm wondering a bit how universal this kind of interface can be made, at
least SQL partially failed in unifying all the DBs ... they all
have/need their own extensions (particularly due to performance and
features) and people usually rely on them so porting is hard still.

Micha
Micha Nelissen
2008-07-27 20:38:17 UTC
Permalink
Post by Thorsten Engler [NexusDB]
Post by Micha Nelissen
Post by Thorsten Engler [NexusDB]
- type inference [That's something that's still missing in Delphi,
basically you define a variable without giving a type, the compiler
infers the correct type from your source and uses that type. Make no
How do you do type inference on a type at compile time, while the
'select' statement is going to be executed at runtime?
We are talking about LINQ here. Not SQL.
Who said 'select' was from SQL? :P

I thought the 'Q' stands for Query?
Post by Thorsten Engler [NexusDB]
of the general LINQ framework, there is nothing SQL specific in LINQ itself)
requires the creation of classes (by an automated too) that represent all
tables and their columns that you want to use LINQ against. Based on this the
You mean like TQuery? But there the IDE creates all the statically typed
fields?

What's the added power if it's static?

Micha
Rudy Velthuis [TeamB]
2008-08-01 20:06:06 UTC
Permalink
Post by Micha Nelissen
Post by Thorsten Engler [NexusDB]
- type inference [That's something that's still missing in Delphi,
basically you define a variable without giving a type, the compiler
infers the correct type from your source and uses that type. Make no
How do you do type inference on a type at compile time
Type inferrence is at compile time. Example:

var myVar := TMyObject.Create;

myVar is now inferred as being of type TMyObject. There is no need to
declare it as such, since the compiler can infer it from the
assignment. Of course, if myVar should be of an ancestor type, you'd
still have to declare it as such.

FWIW, type inferrence makes hardly any sense without inline declaration
of variables, like in my example.
--
Rudy Velthuis [TeamB] http://www.teamb.com

"Support your local Search and Rescue unit -- get lost."
-- Unknown
Thorsten Engler [NexusDB]
2008-08-01 23:33:36 UTC
Permalink
Post by Rudy Velthuis [TeamB]
var myVar := TMyObject.Create;
FWIW, type inferrence makes hardly any sense without inline declaration
of variables, like in my example.
I could live with:

var
myVar;
begin
myVar := TMyObject.Create;
end;

The type of such an untyped variable would be fixed by the compiler based on
the first use of that variable as encountered by the parser;

Having said that, I'm of two minds about the inline declaration of variables.
If that was supported then the variables should be strongly tied to the scope
where they are defined in:

begin
//...
if Bar then begin
var Intf := GetSomeInterface;
//...
end; //reference to Intf should be released here already
//...
end;

--
Kryvich
2008-08-02 05:50:14 UTC
Permalink
Post by Thorsten Engler [NexusDB]
Having said that, I'm of two minds about the inline declaration of variables.
Even now when we have inline declaration of functions and
procedures? :)

In the beginning we had a rigid structure of the unit:

type
const
var
code

Later there was a possibility to mix declarative blocks

type
const
var
type
var
code

Time to do the next step?
Rudy Velthuis [TeamB]
2008-08-02 11:35:31 UTC
Permalink
Post by Kryvich
Post by Thorsten Engler [NexusDB]
Having said that, I'm of two minds about the inline declaration of variables.
Even now when we have inline declaration of functions and
procedures? :)
We do?
--
Rudy Velthuis [TeamB] http://www.teamb.com

"A blind bloke walks into a shop with a guide dog. He picks the
Dog up and starts swinging it around his head. Alarmed, a shop
assistant calls out: 'Can I help, sir?' 'No thanks,' says the
blind bloke. 'Just looking.'" -- Tommy Cooper
Kryvich
2008-08-02 14:31:58 UTC
Permalink
Post by Rudy Velthuis [TeamB]
Post by Kryvich
Even now when we have inline declaration of functions and
procedures? :)
We do?
Anonymous methods.
Rudy Velthuis [TeamB]
2008-08-02 16:54:28 UTC
Permalink
Post by Kryvich
Post by Rudy Velthuis [TeamB]
Post by Kryvich
Even now when we have inline declaration of functions and
procedures? :)
We do?
Anonymous methods.
That is not the same as inline declaration of functions and procedures.
Inline declaration of functions and procedures is what Java and C# do.
--
Rudy Velthuis [TeamB] http://www.teamb.com

"It was God who made me so beautiful. If I weren't, then I'd be
a teacher." -- Linda Evangelista.
Kryvich
2008-08-02 19:34:20 UTC
Permalink
Post by Rudy Velthuis [TeamB]
Post by Kryvich
Post by Rudy Velthuis [TeamB]
Post by Kryvich
Even now when we have inline declaration of functions and
procedures? :)
We do?
Anonymous methods.
That is not the same as inline declaration of functions and procedures.
Inline declaration of functions and procedures is what Java and C# do.
Are Java and C# actually have procedures? ;)

OK, I (and original poster Thorsten Engler) wrote about the inline
_declaration_ of variables, functions and procedures.
Rudy Velthuis [TeamB]
2008-08-03 06:36:10 UTC
Permalink
Post by Kryvich
Post by Rudy Velthuis [TeamB]
Post by Kryvich
Post by Rudy Velthuis [TeamB]
Post by Kryvich
Even now when we have inline declaration of functions and
procedures? :)
We do?
Anonymous methods.
That is not the same as inline declaration of functions and
procedures. Inline declaration of functions and procedures is what
Java and C# do.
Are Java and C# actually have procedures? ;)
Yes, functions that "return" void.
--
Rudy Velthuis [TeamB] http://www.teamb.com

"My occupation now, I suppose, is jail inmate."
-- Unibomber Theodore Kaczynski, when asked in court what his
current profession was
Craig Stuntz [TeamB]
2008-07-28 13:49:33 UTC
Permalink
Post by Micha Nelissen
Isn't LINQ fundamentally incompatible with native code?
No.
In addition to Thorsten's good list of reasons, LINQ is really just an
(unusually easy to understand) implementation of a monad. Monads in no
way depend upon managed runtimes, and if you look you will find many
"native" implementations. So you have both theoretical and practical
proof that managed code is not required.
--
Craig Stuntz [TeamB] · Vertex Systems Corp. · Columbus, OH
Delphi/InterBase Weblog : http://blogs.teamb.com/craigstuntz
Please read and follow Borland's rules for the user of their
server: http://support.borland.com/entry.jspa?externalID=293
Barry Kelly (CodeGear)
2008-07-30 18:43:11 UTC
Permalink
Post by Craig Stuntz [TeamB]
Post by Micha Nelissen
Isn't LINQ fundamentally incompatible with native code?
No.
In addition to Thorsten's good list of reasons, LINQ is really just an
(unusually easy to understand) implementation of a monad. Monads in no
way depend upon managed runtimes, and if you look you will find many
"native" implementations. So you have both theoretical and practical
proof that managed code is not required.
I beg to differ somewhat: monads are actually easy to understand, it's
just that they're almost never described well enough, because they are
effectively just a design pattern rather than a thing in themselves -
i.e. they are "meta".

That whole field of group theory is pretty much the same thing as
pattern methodology applied to mathematics; they're always talking about
"morphisms" of various kinds because they're interested in the *shape*
of various classes of mathematical operations, rather than the
operations themselves.

-- Barry
--
http://barrkel.blogspot.com/
Craig Stuntz [TeamB]
2008-07-30 18:46:22 UTC
Permalink
Post by Barry Kelly (CodeGear)
I beg to differ somewhat: monads are actually easy to understand, it's
just that they're almost never described well enough, because they are
effectively just a design pattern rather than a thing in themselves -
i.e. they are "meta".
Sure, I can go along with that.
--
Craig Stuntz [TeamB] · Vertex Systems Corp. · Columbus, OH
Delphi/InterBase Weblog : http://blogs.teamb.com/craigstuntz
Borland newsgroup denizen Sergio González has a new CD of
Irish music out, and it's good: http://tinyurl.com/7hgfr
Maël Hörz
2008-08-02 08:18:46 UTC
Permalink
Post by Barry Kelly (CodeGear)
I beg to differ somewhat: monads are actually easy to understand,
it's just that they're almost never described well enough, because
they are effectively just a design pattern rather than a thing in
themselves - i.e. they are "meta".
I think that's part of the problem. Sometimes the descriptions are so
abstract that they seem to tackle a non-existent problem you just
created by introducing some strange representation. Not saying they
aren't useful, just that the presentation seems often like an other way
to do things without necessarily fitting into imperative languages nor
in this mindset.

I'm still not sure if I need monads outside of functional languages
where they make perfect sense, especially for exception handling.
Post by Barry Kelly (CodeGear)
That whole field of group theory is pretty much the same thing as
pattern methodology applied to mathematics; they're always talking
about "morphisms" of various kinds because they're interested in the
*shape* of various classes of mathematical operations, rather than
the operations themselves.
While you can always understand why you would want to catch a concept
and define it using a name and precise description, such a description
alone tends often to be the only thing you get.
Theory when let lose creates concepts for far too many things building
layer on layer, groups of groups etc until the real semantic and data
isn't visible anymore.
IMO only as much abstraction as really necessary to "naturally"
understand a problem but not less should be used. (there are some pretty
good guidelines on what is necessary and what not in literature about
semantic-nets, but I would have to look it up again).
Anyway, my point is, that often new programming patterns tend to
increase the overall complexity by adding another set of words/concepts
to your model so just explaining what they do is not enough (which is
often the case), you need a very strong argument why they are useful.
Barry Kelly (CodeGear)
2008-08-08 08:49:29 UTC
Permalink
Post by Maël Hörz
I think that's part of the problem. Sometimes the descriptions are so
abstract that they seem to tackle a non-existent problem you just
created by introducing some strange representation. Not saying they
aren't useful, just that the presentation seems often like an other way
to do things without necessarily fitting into imperative languages nor
in this mindset.
I'm still not sure if I need monads outside of functional languages
where they make perfect sense, especially for exception handling.
Taking LINQ as the example - the abstraction (the libraries etc.) is
constructed imperatively, and the interaction with the abstraction is
imperative (using just literal lambda constructs and method calls), but
the effect is declarative.

I think we (as programmers) should endeavour to write programs that are
as declarative as possible, even though they may be built out of
imperative parts (for whatever reasons), because declarative programs
emphasize the "what", not the "how" - and it's the "what" that pays the
wages.

Monads are just another abstraction that can effectively be implemented
in an imperative way behind the scenes (as everything on a von Neumann
machine is), but the kinds of details it can abstract away are details
that truly are only plumbing - i.e. emphasizing the "how", rather than
the "what".

To take another example - I once had to implement SQL-style cascading
null logic throughout a type system (i.e. any type could be either
nullable or non-nullable). That's another classic example of an
application of monads; the logic of testing each argument of an operator
for null, and carrying the null through, is very tedious if written
directly. It's something that you want to put behind the scenes, whether
it's through operator-overloaded wrapper classes, or whatever.

The point being that any *general* solution to the cascading null
problem is actually a monad - even if you never knew what a monad was to
begin with.
Post by Maël Hörz
IMO only as much abstraction as really necessary to "naturally"
understand a problem but not less should be used.
I agree.
Post by Maël Hörz
Anyway, my point is, that often new programming patterns tend to
increase the overall complexity by adding another set of words/concepts
to your model so just explaining what they do is not enough (which is
often the case), you need a very strong argument why they are useful.
Monads are just a tool in the toolbox. Once you know about the tool, you
can recognize situations that call for it. The knowledge of the tool
provides its own justification, by definition: if you applied it and
ended up with more complexity, you misused the tool - i.e. your
knowledge of the effect of the tool was at fault.

-- Barry
--
http://barrkel.blogspot.com/
Marco van de Voort
2008-07-29 11:21:03 UTC
Permalink
Post by Chad Z. Hower aka Kudzu
Post by Marco van de Voort
Post by Chad Z. Hower aka Kudzu
Generics are a huge boost, imagine what something like LINQ could do.
To be honest, I don't put LINQ in the same "great" category as either
generics or unicode. Maybe not even as 64-bit.
How much have you looked at LINQ?
Read a bunch of articles over the years. Never saw a demonstration of an
application that interested me, or had the potential to solve problems that
I have.

If you have a good example of something useful that can't be done any
regular way, don't be shy :-)(
Craig Stuntz [TeamB]
2008-07-29 14:04:31 UTC
Permalink
Post by Marco van de Voort
If you have a good example of something useful that can't be done any
regular way, don't be shy :-)(
LINQ is a system for developing monads. Unlike every other monad
framework I have ever seen, people seem to "get" LINQ without having to
spend weeks or months reading tutorials on category theory, the monad
laws, etc. As far as when are monads useful, the answer is any time you
would like to transform one instance or, better still, a dynamic list
of instances of some type into a list of another type.
--
Craig Stuntz [TeamB] · Vertex Systems Corp. · Columbus, OH
Delphi/InterBase Weblog : http://blogs.teamb.com/craigstuntz
Borland newsgroup denizen Sergio González has a new CD of
Irish music out, and it's good: http://tinyurl.com/7hgfr
Kjell Rilbe
2008-07-30 06:27:59 UTC
Permalink
Post by Craig Stuntz [TeamB]
LINQ is a system for developing monads.
Could you please post a link or two about what a monad is?

Thanks,
Kjell
--
---------------------------------------------------------------------------
Kjell Rilbe
Home: +46 8 7610734
Cell: +46 733 442464
---------------------------------------------------------------------------
"If there's a price for bein' me, that's one I'll have to pay"
Aaron Tippin
---------------------------------------------------------------------------
I.P. Nichols
2008-07-30 12:13:50 UTC
Permalink
Post by Kjell Rilbe
Post by Craig Stuntz [TeamB]
LINQ is a system for developing monads.
Could you please post a link or two about what a monad is?
"XLinq: XML Programming Refactored (The Return Of The Monoids)"
http://tinyurl.com/yd462e

"We propose in this paper that general-purpose languages should extend their
query capabilities based on the theory and established practice of monads,
allowing programmers to query any form of data, using a broad notion of
collection. This proposal is in opposition to the common practice of
inserting specialized sub-languages and APIs for querying XML one way,
databases another way, and objects a third way. The LINQ project at
Microsoft leads by example, providing basic monadic operations on
collections of arbitrary origin, on top of which C# and Visual Basic
programming languages have implemented generic query comprehension syntaxes
on top of LINQ. "

"Are monads actually used in anything except Haskell?"
http://www.reddit.com/r/programming/comments/p66e/
Kjell Rilbe
2008-07-30 12:26:44 UTC
Permalink
Post by I.P. Nichols
"XLinq: XML Programming Refactored (The Return Of The Monoids)"
http://tinyurl.com/yd462e
"We propose in this paper that general-purpose languages should extend
their query capabilities based on the theory and established practice of
monads, allowing programmers to query any form of data, using a broad
notion of collection. This proposal is in opposition to the common
practice of inserting specialized sub-languages and APIs for querying
XML one way, databases another way, and objects a third way. The LINQ
project at Microsoft leads by example, providing basic monadic
operations on collections of arbitrary origin, on top of which C# and
Visual Basic programming languages have implemented generic query
comprehension syntaxes on top of LINQ. "
"Are monads actually used in anything except Haskell?"
http://www.reddit.com/r/programming/comments/p66e/
Thanks!

I think I got the basic picture, but wish I had time to dig deeper. :-)

Kjell
--
---------------------------------------------------------------------------
Kjell Rilbe
Home: +46 8 7610734
Cell: +46 733 442464
---------------------------------------------------------------------------
"If there's a price for bein' me, that's one I'll have to pay"
Aaron Tippin
---------------------------------------------------------------------------
Craig Stuntz [TeamB]
2008-07-30 12:23:15 UTC
Permalink
Post by Kjell Rilbe
Post by Craig Stuntz [TeamB]
LINQ is a system for developing monads.
Could you please post a link or two about what a monad is?
Here's the best explanation I've seen of how LINQ implements monads.
However, it's non-trivial reading (although relatively simple, compared
to the average monad tutorial); plan on spending at least half an hour
working through the article.

http://blogs.msdn.com/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx

The real miracle of LINQ, I think, is that it's entirely possible --
easy, even -- to use LINQ while remaining ignorant of monads. This, in
contrast to, say, Haskell, where you can't really call yourself
proficient with the language unless you understand the monad laws.

For understanding monads in their own right, you might look at:

http://lambda-the-ultimate.org/node/2455
--
Craig Stuntz [TeamB] · Vertex Systems Corp. · Columbus, OH
Delphi/InterBase Weblog : http://blogs.teamb.com/craigstuntz
Borland newsgroup denizen Sergio González has a new CD of
Irish music out, and it's good: http://tinyurl.com/7hgfr
Barry Kelly (CodeGear)
2008-07-30 19:20:22 UTC
Permalink
Post by Kjell Rilbe
Post by Craig Stuntz [TeamB]
LINQ is a system for developing monads.
Could you please post a link or two about what a monad is?
Here's my jist: monads are a design pattern; any abstraction that obeys
the so-called monad rules is a monad, just like a class whose purpose in
life is to construct other classes using virtual methods is a factory.

Monads are all about being one-step removed from any operation you
perform on some data. Rather than performing operations on data
directly, you put the data into a wrapper object, and then ask the
wrapper object to do something to the data for you (in the form of a
function), and the wrapper object hands you back the wrapped result of
the transformation.

Because the wrapper object always mediates between the verb (the
function passed in) and the object of the verb (the data inside the
wrapper), it can subtly change the meaning the verb in an appropriate
way for its task.

For a List monad (suppose it's a list of integers), you might want to
"add 5", i.e. a function like 'x => x + 5' in C# lambda syntax. Well, a
list monad knows that it is wrapping a whole list of data rather than
just a single element, so it applies that function for every element in
the list, and returns a new list with that transformation applied.

For the famous Haskell IO monad, things are slightly different;
functional programming forbids side-effects, and IO is nothing if it's
not a side-effect. The IO monad side-steps this by logically
constructing an imperative program; i.e. when you pass functions into
the IO monad, and your mental model is that you are performing
imperative operations "now", the logical model of the monad is to take
in your functions and build up a nested set of instructions (in the form
of nested monads) such that when the entire Haskell program returns, the
return value is logically an imperative program which can then be
executed with side-effects. The type of every Haskell main is "-> IO
()", i.e. a monad wrapping Unit (which itself is roughly the same as
'void'), so it all works out type-wise.

So, with monadic IO, some function called putString("foo") returning "IO
()" [putString :: String -> IO ()], the putString function isn't
actually writing anything on-screen; it's returning some kind of
structure, wrapped inside an instance of IO (), that, when interpreted
after it is returned by 'main', will cause output on the console.

Of course, a Haskell implementation will probably do things differently
for efficiency, but it will take care not to break the type
abstractions.

-- Barry
--
http://barrkel.blogspot.com/
Barry Kelly (CodeGear)
2008-07-30 18:55:02 UTC
Permalink
Post by Marco van de Voort
Post by Chad Z. Hower aka Kudzu
How much have you looked at LINQ?
Read a bunch of articles over the years. Never saw a demonstration of an
application that interested me, or had the potential to solve problems that
I have.
If you have a good example of something useful that can't be done any
regular way, don't be shy :-)(
Pascal doesn't do anything that can't be solved using machine code
either (not least because one is translated into the other). I think
you're looking at it the wrong way; being able to filter and sort a list
in a specific way in a very short line of code is just useful, and
shorter than any other existing way to do the thing. E.g.:

using System;
using System.IO;
using System.Linq;

class App
{
static void Main()
{
var files = new DirectoryInfo("c:\\").GetFiles()
.Where(f => f.Length > 1024)
.OrderByDescending(f => f.Length)
.Select(f => new { f.Name, f.Length })
.Take(3);
foreach (var f in files)
Console.WriteLine(f);
}
}

... to show the names and sizes of the top-three files larger than 1K in
the root of C:.

LINQ is pretty strong and, IMHO, useful for these kinds of reporting and
extraction scenarios.

-- Barry
--
http://barrkel.blogspot.com/
ibirite
2008-07-26 11:57:14 UTC
Permalink
Post by Francisco Ruiz
Delphi obtains a great result considering all the problems that have been
Borland in the last years.
Tibico is insane...: VB is one of the top 5 most used languages. This
can be true, what exactly it means?
Here in Brasil, Java its not the top language, but is close from the
top. Delphi and VB where close to the leadership, before C# appears.

But Delphi is decreasing every day... You can see it on the
bookstores: no good delphi book since 2003. Its a signal that writers
dont want to waste time writing things that nobody will read.

Delphi Win32 itself have nothing really new since version 7, except
some IDE improvements. I think this is the main reason for such
shame...
AndreiK
2008-07-15 09:29:53 UTC
Permalink
and it could be even higher if you consider that some systems
use Object Pascal under different names. For example
Microsoft Dynamics NAV which language C/AL is very similar
to Pascal.
Post by David Ninnes
Hi all,
Haven't noticed this reported here, please forgive me if I've missed it. It
seems Delphi and pascal are on the up on the tiobe index
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Not sure how much stock to place in this, but it's better than going down
:-)
cheers,
Dave
Loading...