Hello Idera/Emba, many costumers are afraid about its Delphi plans for future and they are prematurely leaving Delphi :( It is very sad. They need to be sure that Delphi won't die, on the contrary, it will live and grow :D

Hello Idera/Emba, many costumers are afraid about its Delphi plans for future and they are prematurely leaving Delphi :( It is very sad. They need to be sure that Delphi won't die, on the contrary, it will live and grow :D

o/

Comments

  1. Is this thread even serious? Do I need to write a post with a bunch of stats showing how Java and C# are dieing?

    ReplyDelete
  2. Eli M​​ It is serious :( after Idera deal you may see in forums, blogs, social networks Delphi developers and Delphi-based companies afraid due the lack of news to reassure them.

    ReplyDelete
  3. Horácio Filho That is bullshit - people are overacting like always.

    ReplyDelete
  4. Horácio Filho No. I have not seen that anywhere. Links or it didn't happen. You do realize that the previous owners of Embarcadero sold it to Idera for over $400 MILLION DOLLARS. They basically made out like bandits and are rolling on hills of money right now. For all intensive purposes Embarcadero appears to be wildly successful.

    ReplyDelete
  5. Nicholas Ring steals some of Stefan Glienke 's popcorn - yummy :-D

    ReplyDelete
  6. The worst case scenario would be idera selling or trying to sell the app development branch. They may just want to focus on db products. But this isnt even close to killing delphi or C++. We need to relax and keep calm.

    ReplyDelete
  7. Nicholas Ring Stefan Glienke pass some popcorn over here :)

    ReplyDelete
  8. Dalija Prasnikar No - it's all mine (plus you didn't say please) ;-)

    ReplyDelete
  9. Nicholas Ring Hey, so you are stealing popcorn and I have to say please... some people...

    ReplyDelete
  10. Dalija Prasnikar If you are going to ask, you should use manners. As you said, I just stole it (and my karma will pay for it) :-D

    ReplyDelete
  11. Just for the record, I was using Java in '96 way before I started with Delphi, now I am using Java again and it still sucks ;-)

    So one can say that I switched from Java to Delphi, and I then switched from Delphi to Java.

    But in reality I didn't switch from anything to anything I am just using different tools for different purposes, like plenty of other devs do.

    And I still prefer Delphi over anything else :)

    ReplyDelete
  12. Personally I haven't tried it - I don't know any place locally that sells it. As such, I am a coffee person :D

    ReplyDelete
  13. I tried Delphi FMX on mobile and my user experiance was not that good. The mixing of the new and old language styles (keyword vs. attributes) and memory manager (ARC vs. non ARC) made it really confusing to me. Also the lack of information on how to do some more complex stuff forced me to look for some other tools. Now I am using Android Studio (Java), which I enjoy.
    I still love Delphi(especially object pacal), but the current direction drives me looking around to use some alternatives.

    ReplyDelete
  14. Andrea Raimondi Only language I am using that is worse than Java is PHP.

    Ok, JavaScript is even worse, but I don't have to deal with it.

    ReplyDelete
  15. Horácio Filho​ To feel safe just use Lazarus and FreePascal

    ReplyDelete
  16. Pascal - Good
    Java - Bad
    Objective-C - Ugly
    Swift - Cutie with chicken pox

    ReplyDelete
  17. Dalija Prasnikar
    May I ask you, what is so bad about JAVA. I use it in Android Studio, and it feels pretty good to my. It seems it is very similar to C#.
    JavaScript is really bad, I can't use it.

    ReplyDelete
  18. Our framework users did feel comfortable with the fact that we support FPC, in addition to Delphi. For server stuff, an 100% Open Source solution can be seen by customers or managers as safe.
    Of course, we had to sacrifice some Delphi-only features (like enhanced RTTI), to maintain compatibility. See http://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_125

    ReplyDelete
  19. Markus Ja Yes it is similar to C#, but with important differences. Most obvious one it does not have structs. 

    It is everything is object language that forces you to break every good OOP principle out there just to avoid trouble with GC in memory constrained environment.

    And the amount of boilerplate code you have to write just to do some basic stuff is unbelievable. 

    And its generics are completely useless for anything other than managing collections.

    Achieving DRY in Java is next to impossible no matter how you turn it.

    Java is not hard to use, it just annoys the hell out of me, when I know that things can be done better and easier.

    ReplyDelete
  20. Horácio Filho I honestly do not see any reason why Delphi may be abandoned by Idera. Even if they reduce the Delphi team, or cut the costs (at management level, I suppose it is not possible to let the Delphi "raw" coders be less paid), they would still make some releases, and add some features (perhaps with external acquisition, as with FireMonkey, FireDAC, Castalia...).
    I may be more afraid if my project was heavily depending on closed third party components, even with the source code. I guess it is hard making a living with Delphi components selling, those days. And adding compatibility to new components versions may be difficult. Only fair solution for such companies may be to release their components as Open Source, in case of the company leaving the Delphi market. Remember Turbo Power solutions... and also what happened to Bold...

    ReplyDelete
  21. Anything they do (EMb/Idera) it does not matter so much. Delphi is on the dead end road - not because of the language itself. All you guys are wrong by saying Java is awful or PHP or Javascripts or anything else. It's not about the language anymore. Most languages have very comparable features now. Programs are sometimes faster or slower but it does not matter so much - look at Ruby or Python which are at least 30 times slower than the native code, but they are still very useful.
    Everything is about productivity and the productivity depends on the whole toolset. I mean language, IDE, frameworks and process (testing) used to create applications. So, what's wrong with Delphi? Simply, the IDE and frameworks are dead. FMX is clone of Flash UI concept (followed by Silverlight and dropped) in the meantime the most productive became CSS and frameworks created for Javascript (see Angular, Meteor, ReactJS and others). (If you do not like Javascript it's probably you know very little about the language which looks familiar but absolutely is not what you think). Delphi IDE is something not worth to mention, it's old and crashing. I would like to use something like InetlliJ IDEA or WebStorm or look at VS Code (written in Typescript). On the other hand Delphi can't be choice on the server side where NodeJs with ExpressJs become dominant.
    So, Delphi time is over, but it does not mean it's dead. We have a a lot (in my case millions LOC) of existing code and we keep paying to support the project. I'm anxious waiting for Linux server side compiler (promised but not delivered).
    Delphi it's still my language of choice, but I found Javascript (or Typescript) more fun and productive.

    ReplyDelete
  22. Tomasz Szulczewski I have to say the writing components is typescript with angular is actually fun. Js / ts are incredibly expressive and powerful. I prefer the prototypal inheritance of js over classical oo. All that said you better have full unit test coverage with js code because the compiler isn't going to help you out. Go middleware + angular front ends is the most fun I've had programming for a while.

    ReplyDelete
  23. Tomasz Kunicki Mike Margerum 
    If I put aside my CP/M and DOS days with TP, I actually started as web developer and I hate JavaScript for a reason. I know what it is, and what you can do with it, but it is just not my kind of language.

    Now, my JavaScript skills are somewhat obsolete (I didn't write single line of JavaScript code in last 15 years) but the reasons I don't like it are still there. I cannot imagine having fun using it in any way.

    ReplyDelete
  24. To say that NodeJS is dominant is living in faery land. PHP runs 80% of the web and Wordpress (a single PHP framework) itself runs 25% of the entire web (or so they claim). Both PHP and Javascript are awesome and hugely popular. Yes, server side Linux is important for Delphi to stay relevant in the future. It's not so much who owns Delphi it's can they execute to continue to stay relevant. Having technology that will allow Object Pascal to work closely with PHP and Javascript could be very important for it's future. Linux Apache WebBrokers is a good start. The mobile support is a good foundation. Compiling to PHP OpCode could also be a good move ( https://en.wikipedia.org/wiki/HipHop_Virtual_Machine ). Targeting WebGL would also be nice as the transition back to the web from mobile apps happens.

    ReplyDelete
  25. Very good take on JavaScript:

    "The by-design purpose of JavaScript was to make the monkey dance when you moused over it"

    http://programmers.stackexchange.com/q/221615/161734

    ReplyDelete
  26. Yes, you are right, PHP is absolutely dominant in the Web, but I rather see this as the legacy. We also run PHP on our web server but every new backend server for JS applications is written in node js using websockets or JSON api. So PHP was good in supporting old Web App model with server side HTML rendering. Currently we are moving back to client/server model when rendering is moved to browser (Angular, React) and web server is middle tier.

    ReplyDelete
  27. Dalija Prasnikar check out typescript . It fixed scoping issues , adds type checking , generics, and class syntactic sugar. Js reminds me of c++ in that there are pitfalls you need to steer clear of but if you stick with a subset of the language it's not bad. You end up writing a lot less boilerplate in js

    ReplyDelete
  28. Mike Margerum I would, but I am in completely different area now.

    ReplyDelete
  29. Any comments on Quartex Pascal and ModernPascal. Never tried these

    ReplyDelete
  30. Guys, think about it for a while... Nobody pays hundreds of millions to discontinue Delphi. Nobody is that crazy.

    ReplyDelete
  31. Dalija Prasnikar Can you elaborate which good OOP principles Java forces you to break?

    If you say that Java is boilerplate then in what universe Delphi is less boilerplate?

    The generics in Java are different but still very powerful. And with improved type inference in latest versions it's much more enjoyable to use.

    How DRY can be related with it?

    Sorry, but it seems that you are telling a lot of FUD here.

    ReplyDelete
  32. Linas Naginionis 'If you say that Java is boilerplate then in what universe Delphi is less boilerplate?' Surely you're not serious... Checked exceptions are an abomination, from a Delphi (or indeed C#) POV; other sources of necessary boilerplate have been lessened over time (e.g. event handling), but the culture remains.

    ReplyDelete
  33. Chris Rolliston​ I agree that checked exceptions was a mistake, but they can be easily ignored using lambdas. And you are definitely wrong that this culture remains. Just look at the new Java features: lambdas, static imports, better type inference, default interface methods, etc. All them reduces boilerplate. And please don't get me started about boilerplate Delphi forces me to write...Duplicate method declarations in interface and implementation sections, begin end keywords, ugly anonymous methods, no ARC on windows desktop, no type inference, etc.

    ReplyDelete
  34. What does "/sub" mean? Seen it here in a few comments.

    ReplyDelete
  35. Graeme Geldenhuys - See the sticky post.

    Horácio Filho - There is not even a question in your post - so it basically is generic FUD post. Post such posts on the official forums, please. Here we (mostly) try to deal with actual code related challenges - i.e. stuff we usually can resolve.

    ReplyDelete
  36. Linas Naginionis Cannot elaborate in details for the moment. But some short points.

    First, no language/framework/tool is perfect and everything can be improved. But, possible changes and improvements are also constrained by some specific language designs, specifications...

    Also, there are differences in what is real boilerplate and redundant, repetitive code that serves some purpose and the one that does not.

    For instance clear separation between interface and implementation in Delphi is not meaningless boilerplate code. I really miss that kind of separation in other languages.

    As for Java, there is combination of language/frameworks/OS designs that make the whole "breaking OOP" notion. I am strictly talking from Android perspective here, so some issues do not apply in general.

    Android official development guidelines for memory management can be summarized in - avoid throwaway objects, enums, superfluous classes, code abstractions, DI frameworks. http://developer.android.com/training/articles/memory.html

    Bust most basic breaking of OOP in Java is encapsulation - when you have to avoid creating throwaway objects you cannot properly encapsulate. For instance, objects that should be local to methods will end up being class fields. 

    Java also does not have properties, s you have to either write endless list of getter/setter methods or expose your fields to public (another form of encapsulation breaking). In addition you have to call methods with parentheses, so changing your mind latter on about public fields or getter/setters will inevitably break outside code, even if you don't follow getXXX()/setXXX() naming convention. That is most useless boilerplate code I have ever encountered.

    Another issue is with implementing interfaces and composition. While in Delphi you can delegate interface implementation to another object with single line of code, in Java you have to write every single interface method and manually call delegated method.

    And the is issue with constructors. If ancestor class has specific constructor you want to be inherited by descendant classes you have to explicitly add that constructor in each subclass just to call super constructor.

    I could also write endlessly about Java generics, but really the main issue is type erasure - which makes generics just sugar coat for some compiler time safety checks, and renders them useless in achieving DRY with some tad more complex code - that is easily achieved in Delphi (even though Delphi generics are far from perfect).

    And that is just a tiny bit of what is wrong with Java. Oh yes, and the most idiotic thing in Java is signed byte.

    ReplyDelete
  37. Dalija Prasnikar Ok, I'll try to answer your "issues". First of all, code duplication in interface and implementation sections IS boilerplate, it even breaks DRY. It serves no purpose at all. If you say that having interface section helps to find class methods easier, then your class does too much at first place and we all know SRP, right?

    As for Android development guidelines, it is perfectly logical that there could be some restrictions. Android is not server side environment. For this reason, UI's should be as thin as possible.
    But generally, when people speak about Java, they have server side development in mind which is completely different environment than writing code for Android.

    So generally in Java you can create as many throwaway objects as you want.

    Nobody forces you to write getters and especially setters. It's an anti-pattern. Objects should be immutable by default. If you need to expose some data from the object just make public final field and you're done. No need for properties.

    Sorry, didn't understand what you mean when talking about interfaces but Java now has lambdas, so if you apply interface segregation principle to full extent, you'll end up with an interface having single method which can be implemented with simple one-line lambda expression. And for composition - how would you compose objects in Delphi? It's impossible because you need to make sure they are freed after usage. In Java, I can even compose higher-order functions, e.g. inc.andThen(doubleIt).andThen(inc);

    Issue with constructors - explicit always better than implicit. What if you want to hide some constructor from ancestor class? In Java you can do this.

    I agree that generics in Java are not perfect but mostly there are easy workarounds for type erasure (if you need those workarounds at all). At least due to type erasure in Java your application size won't increase, which is not the case in Delphi.

    So I agree that no language is perfect but also you can write bad code in almost any language.

    ReplyDelete
  38. Linas Naginionis We clearly have so different views on things that discussing it makes no sense :)

    Interface and implementation segregation has nothing to do with your classes doing too much (which BTW is hard to avoid at times, just look at View widgets in Android or controls in Delphi). It has to do with clear separation between public API and implementation.

    Immutable - means throwaway objects, not recommended on Android

    ReplyDelete
  39. Dalija Prasnikar​ Interface declaration is a clear separation between public API and implementation. That's why interfaces don't need implementation part. Classes are implementations by definition, they have nothing to do with public API separation. Also, I've never mentioned that interface segregation principle has something to do with classes doing to much, you took this out of a context.
    Btw, Android != Java :)

    ReplyDelete
  40. Linas Naginionis I got distracted so I didn't finish my sentence properly. Obviously, interface section contains much more than just public API. What I meant is that interface section contains most relevant information you need for using and extending some class without need to read all implementation details.

    I find it very distracting to read and browse through implementation code when I just want to get global (cannot find the proper term at the moment) picture about what class does. 

    I know that you can fold methods an all that, but it is still very annoying.

    ReplyDelete
  41. Linas Naginionis I know Android != Java but languages exist in app/OS context. Java in combination with Android (or should I say mobile) is just horrible.

    ReplyDelete
  42. Dalija Prasnikar I think I understand what you mean. But as I said earlier, unless your class is violating SRP (Single Responsibility Principle) this global method list is not needed. And if you really need it, all IDEs can show this view to you.

    ReplyDelete
  43. Linas Naginionis, one of the beautiful things of Pascal is that it allows you to do this WITHOUT needing an IDE. I don't know how many times I have opened pas files with Notepad because of this feature :)

    ReplyDelete
  44. Linas Naginionis I know what you mean with SRP.

    Like I said there are places where classes are not violating SRP in any way and still have plenty of methods and implementation details. 

    I know, IDE can do a lot of things for me, but it can still get in my way. I guess I am more C oriented in that regard. For me Delphi has best of both worlds - same file for interface and implementation and clear distinction between two. I even prefer C style header files better than everything in one newer languages do.

    ReplyDelete
  45. Andrea Raimondi It's needed only if you are writing crap code.
    What if you need to change a method declaration (which happens really often if you refactor a lot)? Then you need to change the same code in two places. Please tell me you enjoy doing this without an IDE.

    ReplyDelete
  46. Linas Naginionis oh yes, I tend to do this in the IDE. Actually, I often use the Refactor feature for that matter :)
    But a lot of the time, you don't really need to see things visually, you just need to check out what's on the form and some code. If an IDE isn't available (such as on a mobile phone for example) or if the file is short and specific, then why bother? Just open it up, check, and you're done! :)

    ReplyDelete
  47. Linas Naginionis Hehe, some might say that you are writing crap code if you need to refactor a lot ;-)

    ReplyDelete
  48. Dalija Prasnikar Not if you are doing TDD ;)

    ReplyDelete
  49. Nicholas Ring throws stolen popcorn at Dalija Prasnikar :-P

    ReplyDelete
  50. There is a speculation of introducing value types as part of Java 10 new features, somewhere around 2018. Jack and Jill (Android toolchain) have received work for add Java 8 value to Android, mainly lambda support :D Such as occured with try-with-resources feature it must be limited to newer version :(

    ReplyDelete
  51. Android stuck on Java 6 with minimal support to Java 7 features, this is effect of Android has started with Apache Harmony code.

    ReplyDelete
  52. Lars Fosdal Really sorry man, it won't occur again :D Thanks at all :D

    ReplyDelete

Post a Comment