Sorry for replying after sometime, some of your mails had gone to my junk
folder

>> > > - What .NET version to target?
> >
> > Any version.
>
> That 9 folds the amount of work, since the whole lib must be
> done several times.

The lib and IDE are / should be written in Pascal, so one just makes the FPC
compiler to target .NET IL and have a list of features that aren't allowed
to use in older .NET targets

when you compile a .NET app in VS.NET you select if the compiled code to IL
targets any .NET version, or targets specific .NET version - this is
metainfo for when running the app, so that it can select to run at the
default .NET runtime of the system or at any older runtimes that can exist
side-by-side on a machine [in case the app has some specific reason to run
at an older .NET version - e.g. some compatibility issue that hasn't been
resolved my the .NET runtime maker or some bank application that doesn't
want to risk it before doing enough testing at the newer runtime version
etc.]

So I don't see where the more work is needed, you can implement the Pascal
libs using only .NET 1.0 features and compile with a -MSDotNetAny option and
they'll run in next versions too (can also have -MonoXX option and a -NET
option to compile to any .NET runtime from any vendor, any version)

> > Visual Studio.net can do similarly (you select the target .NET
> > framework dependency [can be set to "all" or to a specific .NET
> > framework version] - VS.net can also compile to target mono, see
> > RemObjects.com's Chrome for article on how to do that).
>
> I'm not talking what could be done in theory, but I was
> trying to get beyond the theoretical discussion that involves
> Microsoft/Borland propaganda and random theoretical "you can
> compile for xx because yy exists".

I don't speed of theory, I speak of current reality. VS.net compile to
target mono, with or without (RemObjects has tutorial that explains how to
do it at their chromeportal.com) the use of "Grasshoper" (from MainSoft
corp.)

http://www.chromeportal.com/

> IOW, in which of these technologies can you imagine that sb
> has enough faith (and need) to put in 2 years of your spare
> time to port FPC/Laz?

Would do FPC first, add an IL target for the compiler (I'm interested in
tokenizers/parsers/compilers anyway [written my own for Logo and other
language, although I write them by hand, don't like Lex/Yacc tools - maybe
AST tools I'd use if they're XML enabled]).

Btw, I'd also like to add Pascal->XML to FPC (and define a PascalXML schema
to describe PascalXML documents), but that's not exactly related to the
above goal (unless one does PAS -> PascalXML via FPC and then PascalXML ->
IL via XSLT)

Also, would check which features of the Object Pascal language aren't
compatible with CLS (Common Language Specification). Could get some info on
that from Borland websites / forums etc.

> > Anyway in my opinion a form designer should be agnostic of the
> > framework under it, just support visual containment and use
> > Reflection-like APIs to get properties (and property pages if
> > applicable) of container and contained controls (which are
> themselves containers to other controls etc.).
>
> Which effectively means it will be limited and shitty. Lowest
> common denomitor.

VS.net's form designers are working with any language and same did Borland's
(Delphi and BCB) and don't see Lazarus one being better than them. In fact
Lazarus form designers need lot of work still

> > > - Is real (vs on paper) portability an issue? IOW will we
> abstract
> > > all libs for usage with mono, and develop Windows + mono
> at the same
> > > time, or do we develop Windows first and just point to
> mono as a stopgap?
> >
> > Side-by-side, to make sure only portable stuff is used
>
> You realise that this will probably severely limit what you
> can use from the framework, since mono is far from complete?

Mono people have prioritized the features of .NET they port, and they didn't
chose randomly I suppose. So why not start using the same priorities /
roadmap and use only features that are in both MS .net version and mono?
Plus I don't see why you need to use ALL .NET features in the IDE itself.
You just keep on using Pascal as you did, the FPC->IL compiler will do the
rest. You build form designers for WinForms and make sure you can generate
and understand .NET metainfo for assemblies (dlls/libs have that name in
.NET [I don't like it a lot cause people may have also heard of assembly
language])

> And it might become a problem in the future if e.g. Mono or
> Windows start to divergate (e.g. MS waves with patents, or
> Mono wants to do more than just emulation, or decides some
> parts are too windows centric and rolls their own incompat one)

They don't need to diverge, they just make extra libraries (assemblies) that
are optional for one to use in their applications anyway. If for example you
choose to use a library that talks locally (not via the net with webservices
etc.) to Microsoft Exchange server, why would you expect your app to be
portable if Exchange server doesn't run on other platforms than Windows? So
the developer of an application just chose which libraries they use when
they make an application, it's the same situation that exists for years with
any third-party library.

> > I don't see why not use Borland's VCL.net directly too
> where allowed.
>
> You need a license. So you have to duplicate it.

Users that have Delphi license should be able to use it I think. Somewhere I
had seen a posting on using VCL with Lazarus anyway, so some people must be
doing this already.

> > Can compare VCL and VCL.net Borland sources to see what
> they changed
> > during move to .NET I suppose
>
> Not allowed. But I expect them to be totally different btw.

As Mono people explain on their mailing list, not only is allowed to read
that code, but also to decompile code to read it in order to make your
product interoperable/compatible with it. They have legal founding on this
and MS doesn't do anything to them (apart from some MS people bitching now
and then on mono being a copycat), although they say it loud and clear that
they used decompilation to make sure some features would be implemented in
mono exactly as they were implemented in the .NET version of Microsoft. See
EU anti-monopolistic fines against MS, they played some role in MS adopting
new practices.

> > > - If multi platform:
> > >       - do we develop new libs ? (no ADO on linux etc)
> >
> > What do you mean by "no ADO on linux"? ADO.net isn't ADO
> and doesn't
> > need to use ADO stuff.
>
> Does it matter? What do I use on Linux/FreeBSD/ Mac OS X /CE etc ?

You use ADO.net (implemented in mono for example with SQL providers for
MySQL etc. [such exist for .NET too by third-parties other than MS, although
one can also compile those parts of the mono code and use them in MS .net
version if those providers just use sockets etc. and not native stuff that
are Unix-only]). Note that you can load assemblies (DLLs) from mono onto MS
.NET runtime too, it's just a matter of metainfo at the assembly (which you
can edit) which platforms it targets. Most assemblies contain "compiled IL
assembly" (CIL) code (IL is OOP-enabled assembly language for a processor
spec created together with Cambridge Univ. if I remember well]), so they can
load and run as they are at any .NET runtime (no need to have their
sourcecode etc.)

> > They will, WinForms API isn't dying, will always be arround
> in one way
> > or another (even "emulated" over some other API)
>
> But do you want to invest years in a technology that will be
> deprecated when it comes out.

Not deprecated, but with more powerful alternatives available (there's
already Qt for .NET, GTK+ for .NET, VCL.net etc. so there are other
alternatives already for .NET rich GUIs, plus you can even use ASP.net for
local application with Cassini or other embeddable webserver [which require
no installation on user's machine, they're just a .net library that you load
and call])

> All tools compete. True, there are different markets, but
> keep in mind that the .NET market is mostly a commercial one,
> with some derivative markets like mono.

In Greek we have two words for competition, one is "amila" (also called
"noble amila" sometimes) and the other is "antagonismos" ("anti" is prefix
for against, as we say antivirus, antibodies etc. and the "agon" means
fight, straggle to do something etc. [sports games are also called agones -
in plural]). So it's "amila" I only see between a commercial and a
non-commercial IDE.

MS have started giving for free the Express versions of VS.net and Borland
did similar with the Turbo Explorer ones after that, cause the
non-commercial IDEs exist and they see them as competent ones. They hope
people will start from their free IDEs and eventually come to use their
commercial versions (when they make a more profitable bussiness and can
spend money on that or get hired by company that can buy the full IDE and
wants to use their expertise on those dev tools)

If they thought opensource and other IDEs (for example "#develop" IDE for
C#) weren't competent, they'd have give a cheap (but not cheap enough for
poorer countries usually) low-end version of their IDEs, not have it totally
free (as they did in the past)

> > Mono does (partially) ASP.net under Apache. Even
> Microsoft's ASP.net
> > CAN run under Apache (with MS .NET runtime)
>
> Partially here, "CAN" there. But what is now really feasable?

I mean not all of ASP.net features are implemented. Doesn't have to do with
the Apache plugin for Mono. That fully takes care of passing the .ASPX files
to Mono. So when Mono's ASP.net is full (if it isn't yet - haven't checked
for sometime now), one will be able to use all of it. BTW, the ASP.net web
controls are getting less attention by the ASP.net team lately as they put
focus on ATLAS (their AJAX-style controls for ASP.net, have public beta or
something online for them), but I see it as an extra choice for the
developer of an ASP.net web application, doesn't mean all people will choose
to use the AJAX-style controls in the future

> So again to you and the other .NETistas: how would your
> program/roadmap for a FPC/Lazarus.NET look like, how long do
> you estimate a stage, and then we will try to objectively
> comment on that.

As I said above, first should target on FPC->IL (for all FPC language
flavours, both standard and Object Pascal) and do also all recent Object
Pascal additions by Borland (for example allow an interface to inherit from
multiple interfaces [as in Java and .NET] and not just from one [as in
COM]). Can have an extra option for enabling/disabling that extra stuff for
native targets (the "IL" target would turn that option on by default)

> > Also, as I said above, ADO.net has not much to do with ADO.
> From what
> > I remember there is ADO.net on mono (they provide managed
> db providers
> > for MySQL and Oracle at least I think)
>
> Of course they play a lot. I also run WinUAE on Windows and
> UAE on Linux, but that doesn't mean I'm going to develop
> Amiga software.

When writing code for mono, one can use MySQL directly if they wish or other
db interfacing API, but they usually would choose to use ADO.net to abstract
both the DB they use (and be able to move to other DB if they wish) and the
platform they compiled onto (e.g. be able to also run their app as is [since
ADO.net exists there too] on Microsoft's .NET, with the MySQL db running on
a Unix machine or on a Windows machine, doesn't matter). ADO.net is a core
library of .NET framework and any implementation of is on other platforms
would also have high priority to port ADO.net if they do db stuff. From what
I remember mono's ADO.net stuff are quite complete

> > > Can you name apps? Afaik it is mostly used for a bit of in
> > > application scripting and some webapps. But is it really a Delphi
> > > replacement? I doubt it. What does it use for GUI btw?
> >
> > Who said about Delphi replacement.
>
> I mean a replacement for any of the languages you name below.

Don't remember what this was about to answer it, if you mean Python, if you
have a compiler and enough libraries to cover your needs you can use it for
anything. With Python.NET specifically, since you can use any .NET assembly
(=library) you can choose it in place of any other .NET language (plus the
classes you make are usable from any other language and vice-versa). With
CLR/CLI (common language runtime / common language infrastructure) and as
long as a developer use only CLS spec (Common Language Specification)
features in their interfaces/classes (languages can define more stuff than
CLS) they can be sure that other languages will be able to use their
interfaces/classes. E.g. you can define some interface in C# and implement
them in Python.net. Or you can get a class in VB.net and extend it in
Python.net or vice-versa

> Agreed 100%. I simply don't see any reason why I should use
> it. All the above languages (even VB.NET even though I hate
> it) are somewhat general purposes. The scripting languages
> are all limited. Why would I bother? What is their sweetspot?

Python.net isn't a scripting language, it's a compiled one (early bound, not
late bound). That's why one would opt for it if they like it's syntax (any
Python libraries that use CLS-only features are usable from other .NET
languages too, so liking the Python libraries but not the Python syntax
isn't reason to move to Python.net, you could call those libs from C# or
VB.net - similar you can call VB-specific libraries from Python.net or C#
[say functions for statistics etc. that VB has])

> I always thought PHP's was webdevelopment, and Perl was
> textprocessing, and Python was fairly embeddable in apps.

Luckily Python is quite generalized and complete OOP language, not a hack
like Perl (I don't consider PHP a language exactly, it's mostly a clever
preprocessor)

> But PHP and any of the web scripting use could be replaced by
> ASP.NET (so I'd rather invest time in that), Perl turned out
> to have a horrible syntax, fluctate in time, and caused me
> the worst trauma of my entire development carrier
> (specifically in combination with Latex2html). Well Python is
> still used for in application scripting, but I don't spend my
> time on that. Hobby wise or profesionally.

They use it for application scripting cause it has implementation that are
embeddable in applications. I prefer Pascal and RemObjects PascalScript
(opensource) for my Delphi apps, and in .NET one could use Chrome or VB.net
or VBScript or JScript, since the runtime has functionality to dynamically
invoke a compiler (at runtime) and link to the produced code etc. No real
need to use an interpretter when you can use a compiler for your
application's end-user programming ("scripting"). Btw VBScript and JScript
(implements the ECMA spec for JavaScript) have compilers in .NET, not
interpretters (I think VBScript just uses VB compiler and doesn't exactly
exist as a separate language as was in the past)

> > > However for me the GC aspect of .NET is not worth the trouble,
> > > except for ASP.NET maybe. What would one actually gain?
> >
> > The GC aspect of .NET isn't like the one in Java VM. I have
> not seen
> > problems with GC hickups stalling the whole runtime as in Java
> > (although recent JVM versions have become much better).
>
> I don't have a problem with allocation in general. I design
> and architect software, not throw it together, so GC doesn't
> solve any problem for me.

When you have your code interoperating with third party code (say you make
an application that loads and runs third-party plugins in it), then you
don't want a third-party plugin bringing down your application cause of some
bad allocation/deallocation or "hacking" into your application by messing up
with its memory (say cracking your licensing scheme) etc. Running inside a
runtime that takes care of such issues for you makes creating a new
"language" easier (cause you focus in the compiler and language issues, not
in making a low-level RTL for your language). With .net runtime also
supporting Code Access Security etc. you can make say the plugins for your
apps run at various security levels, a useful feature that Java VMs provided
with SecureClassLoaders. One can make huge discussion on benefits and
negatives of running inside a runtime (I don't mean running inside an
interpretter) or in a virtual machine runtime

> > You always have to master what you're learning/using in my opinion,
> > but depends on the time you want to give to that (we must
> have a real
> > life too or eventually we wear off [I've been and still are
> there a bit]).
>
> I don't master them at the expense of free time, but simply
> by carefully selecting the technologies I dive into, and not
> be persuaded by a bit of carefully crafted PR.

You could call me a "crazy scientist" a bit, I try to study as many
technologies as possible if they interest me, not only if I see me using
them directly (I might get ideas from them anyway). For example I wouldn't
use LISP in a project, but I did study it

> > You reuse your experience at whatever new thing you're at, the only
> > thing to worry about is doing the same stuff over-and-over
> every day,
> > not learning new things, nothing really inspiring (e.g. on
> .NET I find
> > LINQ
> > inspiring)
>
> The only thing that was somewhat inspiring for me was the
> internal model of ASP.NET, how they deal with sessions etc.

Everyone is interested in other things of course

* I see LINQ (Language Integrated Query) as a very interesting new thing in
coming .NET versions (think they also have extension for .NET2 downloadable
at their site)
http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx
Or read
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/ht
ml/linqprojectovw.asp
directly

The FAQ
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=307705
<http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=307705&SiteID=1>
&SiteID=1
mentions Borland Delphi too at the "Third-party languages" that are
implementing LINQ (also the Nemerle macros and Phalanger PHP compiler for
.NET), but the links is broken (would like to see which language extensions
Borland did to implement the LINQ concepts)

* Also CodeDOM technology is very nice (although maybe not as complete as
I'd like it to be), see Borland's that use it to translate C# to Object
Pascal / Delphi
http://bdn.borland.com/article/0,1410,32338,00.html#rating
Both the C# and Delphi compliers of Borland emit and accept CodeDOM (it's
AST - Abstract Syntax Trees - concept), that's why it was easy to make that
translation. It's optional for a compiler to do it, but very handy (and if
there's FPC->IL it should also accept/emit CodeDOM trees in my opinion)

> I don't really buy the "safe" code or GC aspect. I don't
> really have to invest much time in memory allocation, and a
> customer will complain regardless of the fact that the error
> is an "access violation" or a "null pointer exception".

That second though means your application memory may be corrupted, that
thing can be exploited etc. The first just means you tried to do an action
that wasn't allowed (and if you catch it even at a global exception handler,
your app is still alive and can continue safely to use it as long as it's
well written to cope with unexpected failures [a well written application of
course shouldn't allow exceptions to propagate up to the gloal exception
handler, but always better to have such one for extra safety]).

What I hate with C# btw is that you're not forced to declare at a method
which exceptions it throws as in Java, so callers have to see the
documentation to catch them and not have the compiler make them catch the
thrown exceptions. Have talked with C# team lead programmer on that in the
past at some MVP gathering, but he seemed stable on their choice (saying
that other people didn't like that feature of Java). Hope they change their
mind in the future and provide it a language option for C# and other .NET
languages. I think there's a plan already (or maybe they worked on it too at
.NET3.x) to add checked exceptions support, so I suppose if the runtime adds
it the .net languages will eventually decide to allow using that feature
(possible as method attributes so that backwards compatibility is kept and
the language syntax isn't changed)

Sincerely,
George

----------------
George Birbilis ([EMAIL PROTECTED])
Computer & Informatics Engineer
Microsoft MVP J# for 2004-2006
Borland "Spirit of Delphi"
++ QuickTime, Delphi, ActiveX, .NET components ++
http://www.kagi.com/birbilis
++ Robotics ++
http://www.mech.upatras.gr/~Robotics
http://www.mech.upatras.gr/~robgroup




  _____  

avast! Antivirus <http://www.avast.com> : Outbound message clean. 


Virus Database (VPS): 0644-4, 31/10/2006
Tested on: 3/11/2006 3:21:31 ??
avast! - copyright (c) 1988-2006 ALWIL Software.



_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to