Results 1 to 10 of 40

Thread: The future of Pascal as language for games

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Quote Originally Posted by deathshadow View Post
    I swear that C and it's derivatives exists for the sole purpose of perpetuating the idea that programming is difficult -- it isn't... Assembly is simpler than C! It is an ugly, half-assed language that I cannot fathom the desire to use.
    I think you are confusing C with C++, which is quite a jump from one to another. C is like Pascal without objects, which at these days would be quite useless. I don't know why you keep bashing C since as you have said yourself, it's pretty much dead. You should be comparing Delphi / FPC to something on the same level, for instance C++ Builder (Embarcadero), which is also quite a powerful tool.

    Other than that, I wouldn't say that Pascal is any better or any worse than C++ (even though there are some things I like in Pascal more), it depends on how your code is written. There have been notorious examples on both ends: I have seen Pascal code that was so poorly written, where you would probably look for other alternatives including C++ if you want to understand what it was doing. (cough... GSM encoding... cough)

  2. #2
    Quote Originally Posted by Lifepower View Post
    I think you are confusing C with C++, which is quite a jump from one to another. C is like Pascal without objects, which at these days would be quite useless. I don't know why you keep bashing C since as you have said yourself, it's pretty much dead. You should be comparing Delphi / FPC to something on the same level, for instance C++ Builder (Embarcadero), which is also quite a powerful tool.
    First, notice I say "and it's derivitives", so I'm putting C#, C++, PHP, Java, Javascript, LSL, etc... Not just "C".

    Second, they ALL share being needlessly cryptic, having a structure nowhere near that of assembly (despite the wild and nonsensical claims to the contrary, line numbered BASIC was closer to ASM than C in terms of syntax!), lacking all the tools to prevent errors in the first place that pascal does. No forward declaration, typo's instantly become new variables, complete lack of range checking, compilers so stupid they resort to =, == and === as separate operations, complete lack of a real STRING type, did we mention a complete lack of range checking and lack of a real string type so buffer overflows are inherently the name of the game? (admittedly modern pascal's have tread into this #DDD idiocy with pChar), the seemlingly random and inconsistent use of -> vs. . on STRUCT, the outright annoying idiocy of .h files (because maintaining two files that redeclare the same thing is SO useful.. admittedly I'm the same way about interface/implementation in unit), willy-nilly error handling...

    ... and did we mention it being needlessly cryptic? This is even MORE true of C++, which is even MORE half-assed and pointlessly so than C. It is probably the worst object implementation I've dealt with, and on the whole seems carefully crafted to make 100% sure every program is susceptible to buffer overruns, memory leaks, and illegible inconsistent code.

    Though you do have a point, bad code is bad code, regardless of what language it's written in; the difference to me is the amount of bad code C lets past the precompiler, compiler and dozen other points at which they could easily have been trapped.


    As the joke goes, Pascal won't let you shoot yourself in the foot

    You want to see REALLY pointlessly cryptic though, have a good look at Rust... A language for the people who thought that C is a bit too verbose and clear for their tastes -- which is a bit like saying the Puritans who settled in Boston in 1630 traveled across the pond because the CoE was a bit too warm and fuzzy for their tastes.
    Last edited by deathshadow; 17-06-2012 at 01:43 AM.
    The accessibility of a website from time to time must be refreshed with the blood of designers and owners. It is its natural manure

  3. #3
    Ok, now you're exgerrating a bit.

    Quote Originally Posted by deathshadow View Post
    (...) lacking all the tools to prevent errors in the first place that pascal does. No forward declaration, typo's instantly become new variables
    Uhm, forward declaration is exactly the thing .header files do in C. And if you mean forward declaration of variables, well, there's nothing that would hold you back from putting all the vardecls at function beginning, then slapping a newline or two and putting actual code. I don't know a lot of languages, but typos becoming new variables is mostly a PHP thing, where "first appearance equals declaration" is a means to make coding faster. No such thing appears in C/CPP.

    Quote Originally Posted by deathshadow View Post
    =, == and === as separate operations
    Well, yep, this is somewhat annoying, but mainly due to the fact that = also returns a value (otherwise a=b=c would not be possible), so putting "if (a=b)" instead of (a==b)" works perfectly fine and most often, if the compiler isn't set to verbose, it won't even give you a hint that there is an assignment instead of comparison in the conditional. As for ===, I gotta say, that's my most beloved PHP syntax element.

    Quote Originally Posted by deathshadow View Post
    seemlingly random and inconsistent use of -> vs. . on STRUCT
    derp. Sorry, but no. It's exactly the same as use of "^." vs. "." on Pascal records/objects. The -> operator in C-like languages stems from the fact that dereference is done by putting * before the varname - and, as far as my memory goes, the dot has higher priority than the asterisk, so you must do "(*a).b" in order for it to work. This thing is obviously hard to read, so to easen things up, the -> operator was introduced. So - if it's a static var, you go ".", if it's a pointer, you go "->", as you would go "^." in Pascal. Nothing random nor incostistent for me.

    Every language has its pros and cons, that's needless to say. Pascal sometimes tends to get a bit to verbose, while minimalism is one of key traits of C. This most often makes writing in C-derivatives quicker and I'd even say, easier. As much as Pascal purposely introduces some error control, C purposely does not so - following the thought "if you don't want to, no one will force you". So, following the foot joke, it's kind of "compiler forces you to make sure you aren't aiming at your foot before shooting" vs. "you can shoot wherever you like and checking whether you're not aiming at your own foot is up to you".

    As for me, one of the things that still keeps Pascal back is a lack of a good IDE. Recently I had to, as part of my studies, write an app in QtCreator - and honestly, I found it quite entertaining, as the thing had all the syntax completion I could ever long for, drastically reducing the amount of key-smashing needed. As for Lazarus, well, dunno, maybe it's just me, but I absolutely hate hate hate the "shitload of floating windows" type of interface - I would much prefer if there was an option to have a "single window with embedabble/movable/switchable panels" one.

  4. #4
    Quote Originally Posted by Super Vegeta View Post
    As much as Pascal purposely introduces some error control, C purposely does not so - following the thought "if you don't want to, no one will force you". So, following the foot joke, it's kind of "compiler forces you to make sure you aren't aiming at your foot before shooting" vs. "you can shoot wherever you like and checking whether you're not aiming at your own foot is up to you".
    I can't say for FPC/Lazarus but in latest versions of Delphi you can turn off a lot of theese error checkings. I personally rather see that compiler warns me of potentionally bad code rather than I have to go bughunting becouse of one single poorly writen line. I started programing in C++ and I must say that I had huge problems in making simple code work properly.

    Quote Originally Posted by Super Vegeta View Post
    As for me, one of the things that still keeps Pascal back is a lack of a good IDE. Recently I had to, as part of my studies, write an app in QtCreator - and honestly, I found it quite entertaining, as the thing had all the syntax completion I could ever long for, drastically reducing the amount of key-smashing needed. As for Lazarus, well, dunno, maybe it's just me, but I absolutely hate hate hate the "shitload of floating windows" type of interface - I would much prefer if there was an option to have a "single window with embedabble/movable/switchable panels" one.
    Pascal does have a good IDE and it is Delphi. It alows a lot of syntax autocompletion. The only thing about it is that it forces it's own style of code formating wich is a bit different that the one I'm using.
    As for the floating windows from Lazarus. They are implemented like that to mimic Delphi 7 interface. It can become quite useful when programing on computers with multiple monitors. Having floating windows easily alows you to have code window on one screen and Form design window on the other.

    And if we are talking about pros and cons I think that the biggest pro for pascal is the ability for quickly rebuild existing project (only units wich has ben changed gets recompiled all others are already compiled from before). Becouse of this you don't have to wait several minutes for some big project to be recompiled just to see how change of a single line affects your application.
    I rember the days when I began programing in C++ and had to wait up to a minute to compile some of a bit more advanced Helo World program.
    Yes I know that some of today IDE-s for programing in C++ already allow precompiled units but most of them are still slower at linking them together than Delphi for instance.
    And finally I probably shouldn't even mention that in some cases Pascal based programs runs better than those made in C++ even when they have same function implemented.
    Last edited by SilverWarior; 17-06-2012 at 03:40 PM. Reason: Fixing typos

  5. #5
    Quote Originally Posted by deathshadow View Post
    ...complete lack of range checking...
    Just wanted to comment on this: in all our projects, range checking is assumed to be off. The reason for this is that in many situations number wrapping is the desired behavior, not to mention that range checking slows the execution down, so it should only be used in debug builds anyway. The appropriate software design comes into mind that you should make your code fault tolerant and if a parameter has invalid range, you should return the feedback appropriately.

    Regarding other syntax discussion of C++ vs Pascal, I think it's been fought to the death already and my opinion is that both have reasonably good syntax. For that matter, I try to stay away from Basic and its derivatives, and Fortran, which is, unfortunately, still quite popular in scientific community.
    Last edited by LP; 17-06-2012 at 05:52 PM.

  6. #6
    As someone already said, the future only depends on us using the language. Lots of people criticized my use of pascal instead of C++ for developing my engines and games, but over the years (around 15 of pascal) I've always proved them that it was more than enough for my needs

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •