<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Il 27/10/2017 14:26, Marcos Douglas B.
      Santos via Lazarus ha scritto:<br>
    </div>
    <blockquote type="cite"
cite="mid:CA+ixmeaN2N216GH3CuSR8B0ir-u4LZXBW915+QemnQHe3LVjTw@mail.gmail.com">
      <pre wrap="">I would like to propose a discussion about "What is the relevance of
Object Pascal nowadays".
I don't want waste your time. I just want to know if we are growing
and being more relevant or not.

I use Object Pascal (mostly FPC, some old Delphi) in production to
make real applications. But we are seeing more and more "new
frameworks", "new technologies" and new languages that are become more
relevant.

What do you think?

Thanks.

Regards,
Marcos Douglas
</pre>
    </blockquote>
    <p><br>
    </p>
    <p>We're working in the field of automatic machines. From textile
      machines to printer post-processing equipments (mainly in the
      security printers field), from coffee roasting machines to chain
      wear monitoring equipment. We do not usually deploy software, but
      rather we sell control equipments which are then integrated by the
      final manufacturer in the machine.</p>
    <p>Our equipments usually include custom embedded controllers and a
      supervisor which may range from an industrial grade PC to a
      Raspberry PI. It provides both the human interface and the
      real-time high-level process control.</p>
    <p>We're also frequently asked to integrate our supervisor into the
      factory data network both to provide production data (for
      statistical purposes, quality assurance, and security) and to
      fetch process information when appropriate. This leads to
      supplying also small servers which do handle network protocols,
      Data Base handling, creating Reports etc.<br>
    </p>
    <p>We found today's Object Pascal and Lazarus to be the most cost
      effective solution, for a number of reasons. Mainly:</p>
    <ul>
      <li>Object pascal syntax makes it easier to detect programmer
        errors at compile time, thus strongly reducing the debug time.</li>
      <li>Being most projects quite similar and with very short
        development time allowed, we need readable and self documenting
        sources, making it easy for anyone to modify project A into
        project B.</li>
      <li>For the same reason, re-usability of code for us is a must.
        Again Object Pascal is a winner by this POV.<br>
      </li>
      <li>Always for the same reason we need a RAD tool, and Lazarus IDE
        is again a winner.</li>
      <li>We need to interface with our real-time framework with
        predictable timing, and this rules out most of the "modern"
        languages.</li>
      <li>Given the relative stability of the Object Pascal language, we
        may take advantage of a huge amount of code we have developed in
        the past. I've just ported to Lazarus a program which was
        originally developed in the 90's with Delphi 3!</li>
    </ul>
    <p>Many of those reasons apply also to Delphi, but we dropped Delphi
      long ago because:</p>
    <ol>
      <li>Primarily, we need Linux support, because of the real-time
        requirements, which aren't achievable in Windows environment.
        OS-X isn't an option because we need industrial grade PC's.<br>
      </li>
      <li>Secondarily, Lazarus IDE is light years better than Delphi
        IDE.</li>
    </ol>
    For sake of completeness, I must add that our real-time framework
    and the real-time tasks are written in C. This was a must when it
    had to be part of a patched Linux kernel, running in kernel space.
    Now that RT_PREEMP has reached maturity and has made its way into
    the mainline kernel we've been able to move the stuff to user space.
    Therefore we're rewriting most of it in Object Pascal, to take
    advantage of a much lower development and maintenance cost.<br>
    <br>
    Giuliano<br>
     <br>
  </body>
</html>