Why are types sometimes interchangeable lazarus / 64-FPC development ---------------------------------------------------------------------- Joanna · 2023-01-04 23:24 I hope it’s not too much of a bother. A non pascal using friend of mine wants to know why two identical real types he created are interchangeable. I told him that that isn’t the way to distinguish things but here is his question if anyone cares to answer. Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i { It has come to my attention that unfortunately base data formats are conflated:} program typeDemo(input, output, stderr); type meters = real;type seconds = real; var l1: meters;var t1: seconds; begin      t1 := 10.0;        l1 := t1;end. {Well I didn't *want* this to compile.But OK then, this must mean Pascal uses structural typing.Therefore, two records with the same fields will be compatible:}program typeDemo(input, output, stderr); type vector = record                                                                                                      x: real;                                                                                                            y: real;                                                                                                          end;                                                                                                                type coords = record                                                                                                    x: real;                                                                                                            y: real;                                                                                                          end;  var v1: vector;var c1: coords; begin        // there are no records initializers or what? anyway.        v1.x := 10.0;        v1.y := 5.0;         c1 := v1;end. {Well, this time around we get nominal typing. How much more random can this type system get?} He seems to think because two simple types are considered compatible, two records with identical fields should be compatible. How do I explain this to him? My first urge is to say something along the lines of the record fields are more hidden than the type of real. ---------------------------------------------------------------------- ccrause · 2023-01-05 05:12 Quote from: Joanna on January 05, 2023, 12:24:48 amCode: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i type meters = real;type seconds = real;Here meters and seconds are declared as type aliases to the type real.  Read the section on type aliases in the documentation for reference. To create distinct new types, use the form: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i type meters = type real;type seconds = type real;This will however still be assignment compatible types, so would not generate a compiler error when mixing these types in an expression. ---------------------------------------------------------------------- 440bx · 2023-01-05 05:53 Quote from: Joanna on January 05, 2023, 12:24:48 amHe seems to think because two simple types are considered compatible, two records with identical fields should be compatible. How do I explain this to him? My first urge is to say something along the lines of the record fields are more hidden than the type of real. record fields aren't "more hidden" than anything else. what happens in the case of Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i type meters = real;type seconds = real; var l1: meters;var t1: seconds; is that the variables l1 and t1 ultimately both resolve to "real" which is an "atomic" pre-defined type that cannot be broken down any further (unlike "meters" and "seconds", which are really just aliases for "real" as @ccrause already pointed out) what happens in the case of Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i  type vector = record                                                                                                      x: real;                                                                                                            y: real;                                                                                                        end;                                                                                                                   type coords = record                                                                                                      x: real;                                                                                                            y: real;                                                                                                          end; var v1: vector;var c1: coords; is that the types "vector" and "coords" are themselves atomic by virtue of being records.  A record type definition always defines an atomic type (as in the case of "vector", "coord" or whatever other name is assigned to the type) When the parser sees that "v1" is of type "vector" and "c1" is of type " coords", it does NOT care that the fields that make up both records are the same, that is completely irrelevant.  As far as the parser is concerned, there is a type named "vector" and another type named "coords", because these are records, the different names, which implies different types, means the types are not compatible.  For type identification purposes, "vector" and "coords" are atomic and as different as "integer" is from "string" is from "set" is from an enumeration, etc, etc. succinctly, the type of a record isn't determined by the fields it contains but by its name (which is effectively the name of a new type that is assignment compatible only with itself.) HTH. ---------------------------------------------------------------------- Joanna · 2023-01-05 12:04 Quote Here meters and seconds are declared as type aliases to the type real.   Exactly, that’s what I thought when I first saw them, of course they are the same type because they are both type real by different names.  Quote the variables l1 and t1 ultimately both resolve to "real" which is an "atomic" pre-defined type that cannot be broken down any further. the types "vector" and "coords" are themselves atomic by virtue of being records I was not familiar with the term atomic before. Thanks for teaching me something new today. I didn’t know the correct terminology to use for this. ---------------------------------------------------------------------- MarkMLl · 2023-01-05 14:37 I've been trying, without success, to find a remark from PascalDragon when I was complaining about something-or-other a few weeks ago. Basically, his point was that there were certain number-like types that the compiler automatically treated as compatible (i.e. a byte can be assigned to a word and so on), but this didn't extend to programmer-defined types. Hence I think it's reasonable to say that even if (from OP) meters were single and seconds were double, they would probably be compatible. Whether this is a Good Thing is arguable: it's very convenient in terms of having Pascal be a general-purpose application language, but detracts from Pascal's claim to be suitable for maximally-robust code. I'd add that I'm not entirely happy with the term "atomic" used earlier in this thread. It's usually applied to /operations/ rather than /types/, so one would refer to a debit-this-and-credit-that operation being atomic in commerce, or a 64-bit increment being atomic if it were resistant to being broken into (by an interrupt or second CPU) when half-completed. MarkMLl ---------------------------------------------------------------------- ctk · 2023-01-05 14:59 Hi, I'm the one who made the initial remark. I'm not certain why Joanna meant to make it a question of sorts, as it's only an observation. And a reason I don't see Pascal as a usable language, due to warts (such as this one) in its featureset. Pascal will not be fixed anyway, as it is set in stone now, so the best I can hope is its users will move on to better-designed languages, after acquiring a sense for what good design is. (which my posting here might help with) So here's the problem explained, take two: In Pascal, I have two options to declare a new type. I can do an alias, which does nothing but add a name for the same type: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i program typeDemo(input, output, stderr); type vector = record        x: real;        y: real;end;type coords = vector; var v1: vector;var c1: coords; begin        // there are no record initializers or what? nevermind, let's do it field by field.        v1.x := 10.0;        v1.y := 5.0;         c1 := v1;end.(This compiles; great! That's what was expected, and what I needed.) Alternatively, I can declare an entirely new type from an existing one: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i program typeDemo(input, output, stderr); type vector = record        x: real;        y: real;end;type coords = type vector; // note that I added 'type' here var v1: vector;var c1: coords; begin        // there are no record initializers or what? nevermind, let's do it field by field.        v1.x := 10.0;        v1.y := 5.0;         c1 := v1;end.(This fails to compile; great! That's what was expected, and what I needed.) And of course I can do the same thing with any other type, so: Let's do an alias again: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i program typeDemo(input, output, stderr); type meters = type real;type seconds = meters; var l1: meters;var t1: seconds; begin        t1 := 10.0;      l1 := t1;end.(This compiles; great! That's what was expected, and what I needed.) And now I want these to be incompatible, so I add 'type': (I badly need a compiler error if I ever assign seconds to meters, say if I'm a physicist) Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i program typeDemo(input, output, stderr); type meters = type real;type seconds = type meters; // note that I added 'type' here var l1: meters;var t1: seconds; begin        t1 := 10.0;        l1 := t1;end.This compiles; what gives?! That's completely unexpected, adding 'type' didn't have its effect. In fact it seems to have had no useful effect whatsoever. It worked with some other type earlier, so this is inconsistent and arbitrary. Features should work uniformly. https://en.wikipedia.org/wiki/Principle_of_least_astonishment ---------------------------------------------------------------------- MarkMLl · 2023-01-05 15:05 @ctk: frankly, I agree with you. I've previously remarked that Pascal was, for various reasons, rushed; it was knocked together not long after Hoare and Wirth had started working on the concept of distinct types and Wirth's subsequent languages were far stricter. MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-05 15:08 From the wiki:"You want to do this, for instance in order to define a whole new set of operators. Otherwise the operator definitions for the type it was cloned from would still apply." And the manual: https://www.freepascal.org/docs- html/ref/refse19.html#x49-690003.8 The latter explains that type Tx = type y generates different RTTI so creates a means to identify a typed type. This is also used inside the rtl and possibly the compiler. (And Delphi compatible) It may seem a bit shallow, but it's not. ---------------------------------------------------------------------- Bogen85 · 2023-01-05 15:15 Quote from: ctk on January 05, 2023, 03:59:33 pmPascal will not be fixed anyway, as it is set in stone now, so the best I can hope is its users will move on to better-designed languages, after acquiring a sense for what good design is. (which my posting here might help with) I understand where you are coming from. There are many things in Pascal that I don't like. And I'm aware of and know many other languages (some very well, and I do use them where it is applicable). However, there are many things I prefer to do in Pascal, by choice, despite the many shortcomings it has. Quote from: ctk on January 05, 2023, 03:59:33 pm And now I want these to be incompatible, so I add 'type': (I badly need a compiler error if I ever assign seconds to meters, say if I'm a physicist) Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i program typeDemo(input, output, stderr); type meters = type real;type seconds = type meters; // note that I added 'type' here var l1: meters;var t1: seconds; begin        t1 := 10.0;        l1 := t1;end.This compiles; what gives?! That's completely unexpected, adding 'type' didn't have its effect. In fact it seems to have had no useful effect whatsoever. It worked with some other type earlier, so this is inconsistent and arbitrary. Features should work uniformly. https://en.wikipedia.org/wiki/Principle_of_least_astonishment I agree with you, and this is one of the things I do not like about Pascal. However, if I needed to have Pascal enforce types in this way, that can still be done. Not at the base type level like you are showing here, but via classes or advanced records with overloaded operators and properties. That way I segregate the different units that share the same base types but since I've hidden access to them directly, the compiler will do the enforcement you (and I) would be looking for. ---------------------------------------------------------------------- MarkMLl · 2023-01-05 15:54 Quote from: Bogen85 on January 05, 2023, 04:15:30 pmHowever, if I needed to have Pascal enforce types in this way, that can still be done. Not at the base type level like you are showing here, but via classes or advanced records with overloaded operators and properties. In Wirth's defence, the idea of having distinct types for numerics etc. that were structurally compatible was very much a novel one. While (even in the ALGOL-60 era) people appreciated that reals were distinct from integers and integers were distinct from strings (and all three were often handled by distinct areas of the CPU), the idea that two reals were not assignment-compatible might even have made it more difficult to sell the idea of block-structured languages than it was already. MarkMLl ---------------------------------------------------------------------- 440bx · 2023-01-05 15:55 Quote from: MarkMLl on January 05, 2023, 03:37:58 pmI'd add that I'm not entirely happy with the term "atomic" used earlier in this thread. It's usually applied to /operations/ rather than /types/, so one would refer to a debit-this-and-credit-that operation being atomic in commerce, or a 64-bit increment being atomic if it were resistant to being broken into (by an interrupt or second CPU) when half-completed. MarkMLl I'm not particularly fond of using the term "atomic" to describe a data type.  I used that term because when the parser is going through its tables to determine the final/true type (which it needs to do), when it finds that something is a "record", the search stops.  It's a record, that's it.  In the case of an alias, such as "type coords = real;", there will often be a pointer (or some indicator) that "coords" resolves to one of the language's standard/built-in types thus the search can be thought of having gone one more step (thereby "coords" is not "atomic") I agree the terminology is not quite ideal. ---------------------------------------------------------------------- MarkMLl · 2023-01-05 17:52 Quote from: 440bx on January 05, 2023, 04:55:08 pmI'm not particularly fond of using the term "atomic" to describe a data type.  I used that term because when the parser is going through its tables to determine the final/true type (which it needs to do), when it finds that something is a "record", the search stops.  It's a record, that's it.  Hmm. "Terminal something"... just calling it a terminal would be confusing in the larger compiler context since that's how predefined keywords are referred to. "Terminal type"? Whatever: I see what you're getting at. It's not just "this is an lvalue" or "this is a variable being used in an expression", it's having progressed sufficiently in examination of the type of the variable that its constituent parts aren't relevant. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-06 00:38 Quote (I badly need a compiler error if I ever assign seconds to meters, say if I'm a physicist)This reminds me of back when I was taking a beginning computer Programming class when the teacher was explaining that computers are dumb and don’t know anything. Meters and seconds mean nothing to a computer and it’s the responsibility of the programmer not to add meters to seconds or any other inappropriate things of same data type for that matter. It would be ridiculous to make a new data type for every simple Numerical variable that shouldn’t be added together. The workaround would be to encapsulate the meters and seconds As fields inside of separate records. I suppose you would need to make procedures To do math on them because they are inside records. Robustness is possible but it always takes a lot of extra effort to achieve it in any circumstance. Quote I don't see Pascal as a usable language, due to warts (such as this one) in its featureset. Pascal will not be fixed anyway, as it is set in stone now, so the best I can hope is its users will move on to better-designed languages, after acquiring a sense for what good design is. (which my posting here might help with)It doesn’t need fixing  This is a prime example of the hostility to pascal I encounter from people who don’t use pascal. There is nothing wrong with pascal in this regard. I have been using it a long long time and it keeps getting better. Some people will just go to great lengths make up excuses not to use it as illustrated here. ---------------------------------------------------------------------- lainz · 2023-01-06 01:16 And how it works in another languages to compare with fpc? For example in c or c++? ---------------------------------------------------------------------- Joanna · 2023-01-06 02:23 Someone just mentioned to me that although meters and seconds don’t add what about computing meters per second? Should that be allowed? I suppose we need a better fpc compiler that will only allow meters to be divided by seconds but prevent all other mathematical operations ---------------------------------------------------------------------- Bogen85 · 2023-01-06 03:17 Quote from: Joanna on January 06, 2023, 01:38:00 amThis is a prime example of the hostility to pascal I encounter from people who don’t use pascal. There is nothing wrong with pascal in this regard. I have been using it a long long time and it keeps getting better. Some people will just go to great lengths make up excuses not to use it as illustrated here. Nothing wrong with pascal here? No. It is not being consistent. There are are many things wrong with pascal, and this is one of them. But as I said, I can work around this flaw and am willing to do so because of all the other positive things about the language. ---------------------------------------------------------------------- Bogen85 · 2023-01-06 03:19 Quote from: Joanna on January 06, 2023, 01:38:00 amMeters and seconds mean nothing to a computer and it’s the responsibility of the programmer not to add meters to seconds or any other inappropriate things of same data type for that matter. No, it is the responsibility of the type system if I as the programmer clearly indicated the meters and seconds were different types. Just like the type system does not yet you assign a boolean to a real. Quote from: Joanna on January 06, 2023, 01:38:00 amIt would be ridiculous to make a new data type for every simple Numerical variable that shouldn’t be added together. No, they were explicitly defined as different types. ---------------------------------------------------------------------- 440bx · 2023-01-06 04:40 Quote from: Bogen85 on January 06, 2023, 04:19:47 amQuote from: Joanna on January 06, 2023, 01:38:00 amMeters and seconds mean nothing to a computer and it’s the responsibility of the programmer not to add meters to seconds or any other inappropriate things of same data type for that matter. No, it is the responsibility of the type system if I as the programmer clearly indicated the meters and seconds were different types. Just like the type system does not yet you assign a boolean to a real. Quote from: Joanna on January 06, 2023, 01:38:00 amIt would be ridiculous to make a new data type for every simple Numerical variable that shouldn’t be added together. No, they were explicitly defined as different types. The current implementations of Pascal do have some faults but, a compiler can only go so far in putting barriers between types.  For instance, as @Joanna pointed out, it must be valid to _divide_ meters by seconds (physicists do like to calculate speed) while it is usually (maybe always) invalid to add meters to seconds but, it would be difficult and cumbersome to have to tell the compiler what operations are and are not allowed between user-defined types.  (no compiler comes to mind that offers that feature.) Allowing and disallowing operations among units of measure is NOT part of a compiler's type system.  As far as the compiler is concerned, seconds and meters are both numbers, therefore mathematically compatible. In addition to that, even if it were possible to force the compiler to consider "meters" and "seconds" to be truly different types, doing so would lead to ambiguities and contradictions, e.g, meters = 10.5; seconds = 10.5;  if both meters and seconds accept the same 10.5 constant then they must both be the same type as the 10.5 constant which means they are themselves of the same type (transitivity) which would contradict the declaration that they are of different types. ---------------------------------------------------------------------- arahael · 2023-01-06 05:34 Hello! If you check the documentation at https://wiki.freepascal.org/Type It seems that the assignment-compatibleness is a point of difference between FPC and Delphi, though I'm not sure to what degree it's incompatible. I suppose that if you really wanted it to be alignment incompatible, you would need to wrap the type in its own record, even if it's the only member in that. (I think other languages do this for you in this case). I haven't tested this, however. For more background, do give this thread a read: https://fpc- devel.freepascal.narkive.com/ftvTumKs/bug-in-fpc-and-declaring- distinct-types ---------------------------------------------------------------------- MarkMLl · 2023-01-06 08:08 Quote from: Bogen85 on January 06, 2023, 04:19:47 amNo, it is the responsibility of the type system if I as the programmer clearly indicated the meters and seconds were different types. Just like the type system does not yet you assign a boolean to a real. And Wirth tightened this up- corrected it- in his later languages. No matter how much Object Pascal and its congeners have fudged things, there are numerous problems in the foundation language as defined in the early 1970s. MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-06 10:13 Quote from: lainz on January 06, 2023, 02:16:28 amAnd how it works in another languages to compare with fpc? For example in c or c++? In C/C++ the type system is much worse than Pascal's and relies on casting (Basically a no type system except for primives). OTOH reflective languages like Java and C# have a very strong type system, compared to Pascal. But why not RTTI to help the system? ---------------------------------------------------------------------- Joanna · 2023-01-06 16:05 Quote No, it is the responsibility of the type system if I as the programmer clearly indicated the meters and seconds were different types. You can’t declare something thing of real type to be different than something else of real type on a whim and this is a good thing. It would probably cause all sorts of problems to enforce things of same type being different types. I’m no expert on the inner workings of compilers but I’m sure the types as they are exist for a reason. Meters and seconds are in fact the same type. Using aliases does not change this fact. It’s rather naive to think that you can control what a computer does by assigning names of what you expect to things. Compilers have gotten easier and better but it’s still necessary to pay attention to what you are doing and not be tricked by names that mean nothing to the computer. Quote But as I said, I can work around this flaw and am willing to do so because of all the other positive things about the language. Yes this is what real programmers do , they get things to work.  I don’t know if ctk has ever created any substantial software at all He has never answered my question on what language he uses. Although I usually disregard the opinions of people who don’t use pascal I was curious about the reasons behind how types work and it all seems perfectly reasonable. I’m sure a lot of effort has been put into making types work consistently and even having numerical types be somewhat interchangeable for easier use.  It is really not that hard to properly put things You don’t ever want  mixing into separate record types instead of complaining. ---------------------------------------------------------------------- MarkMLl · 2023-01-06 16:10 Quote from: Joanna on January 06, 2023, 05:05:19 pmYou can’t declare something thing of real type to be different than something else of real type on a whim and this is a good thing. It would probably cause all sorts of problems to enforce things of same type being different types. I’m no expert on the inner workings of compilers but I’m sure the types as they are exist for a reason. Well, you can go argue that with Wirth since his post-Pascal compilers had much tighter type rules.. The rather sloppy Pascal rules are, as I've previously explained, because he was in a hurry, and didn't know any better. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-06 16:26 I’ve heard that ADA has very strong typing rules but I’ve never used it. It seemed they weren’t teaching it anymore in colleges by the 1990s. It has a similar appearance to pascal. I don’t know if it would do what ctk wants though. ---------------------------------------------------------------------- Thaddy · 2023-01-06 17:59 ADA is still widely used in the space, aircraft and military industry and also for these industrie's new products just because  of its rock- solid type safety. It is also very easy to learn for experienced programmers. There are experiments with C++ and that still does not do very well regarding overal robustness and recovery. I once had to train a couple (well, a company) to train from ADA to C++, and almost got shot when teaching them the loopholes to make the C++ right compared to ADA! And these were al scientists, contracted for ESA and NASA. Impossible job. They are still using ADA for critical jobs and only use C++ for less critical things. ---------------------------------------------------------------------- MarkMLl · 2023-01-06 18:05 Yes. But the reason that Ada- and it's a name, not an initialism- didn't take off was that it required a substantial set of additional utilities to be allowed to bear the name and the combination of all that lot was substantially more than late 80s PCs could handle. However, Wirth was just one of numerous contributors to the language. If one wants to see his own contributions one has to look elsewhere (come on Joanna, you can use Google better than that can't you >:-) MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-06 18:09 Yes Mark, it is named after Ada (Lovelace, daughter of Byron)  You knew I know that.. ---------------------------------------------------------------------- Thaddy · 2023-01-06 18:14 Also note Ada can be a firey woman, to the point you want a divorce. She hates pressing the compile button before you have written your code correctly. Not very surpising, if you are not given working hardware..in here lifetime: since the 21th century there's a working copy of Babbage's design. Most Pascal programmers would have worn the comparable F9 button out multiple times a week.... Ada is not easy on that range of the keyboard, think her good friend Mary Shelley (whom, however a bit older, belonged to her inner circle)....could have written the manual... ---------------------------------------------------------------------- Peter H · 2023-01-06 18:36 I don't think you want to do any form of RAD or Agile software development in ADA. This programming language, as far as I have seen, requires strict top down design and is used in military and aerospace projects where each programmer writes a few lines of code per day that must then be approved by a control authority. Major changes are not possible without starting from scratch. One problem with the "type" concept in programming languages is that "type" denotes at least 2 independent things at the same time: The meaning and purpose of a data structure and its contents and size and compatibility. For many practical problems this is too restrictive. ---------------------------------------------------------------------- Thaddy · 2023-01-06 18:45 Mostly correct. (except for the major changes remark, major changes are always a rewrite for the sourcecode) In my opinion both RAD and Agile are a curse in the wrong - well most - hands. But what I actually wrote in my appreciation of early Victorian history was the appreciation of a language written many moons later and honors Ada Lovelace with her name, because it is very hard to make mistakes in Ada. But it is also very hard to write for sloppy programmers, not versed in logic, hence Agile nor RAD will ever work in truly fail-safe programming. E.g, from 45+ years experience: RAD: "Hey, I have a nice user interface, let's make it work! I use components! No need to code classes or methods.! Agile: Customer hasn't explained wishes good enough, more work, more cost. Sane: write software based on initial whishes, write a functional document, write a technical document, write code and finish that. Some input from customer is welcome, but first let's finish what you required in the first place. ---------------------------------------------------------------------- MarkMLl · 2023-01-06 20:36 Quote from: Thaddy on January 06, 2023, 07:14:01 pmAlso note Ada can be a firey woman, to the point you want a divorce. She hates pressing the compile button before you have written your code correctly. Actually, I've been musing over the last few days about the extent to which the complexity of modern languages effectively requires mere mortals to rely heavily on compiler error reporting. I'm by no means innocent of premature compilation, but I find it slightly disturbing after having started off on FORTRAN with 12-hour turnaround and a five-runs-per-week limit. Times have changed... /$DEITY/ but how times have changed... but should we really be dependent on that? QuoteNot very surpising, if you are not given working hardware..in here lifetime: since the 21th century there's a working copy of Babbage's design. Of his design, yes. But I'm not at all happy with the assumptions they've made about the precision/accuracy of the machining required to achieve that. Let's not go there... QuoteAda is not easy on that range of the keyboard, think her good friend Mary Shelley (whom, however a bit older, belonged to her inner circle)....could have written the manual... We've learned a great deal about how to document languages over the last 50 years. But it must be admitted that Ada's documentation- at least in its mature form- is methodical and thorough. None of the "is that zero- or one-based?" that we have to tolerate when considering other languages. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-06 20:55 Quote from: Peter H on January 06, 2023, 07:36:13 pmI don't think you want to do any form of RAD or Agile software development in ADA. Stop /thinking/ and spell it properly to start with! I think you're mixing up a whole lot of things there. Ada might be /intended/ to have robust central control, but there again so were Modula-2 and -3. There's no reason what Ada- as a language- couldn't be divorced from its existing development environment and shoehorned into something more user-friendly. However at that point I think we need to split out the sort of RAD that Emacs and Eclipse are intended to do (i.e. making the edit- compile-debug cycle tolerable) and the UI-designers provided by VB, Delphi, Lazarus and... well, very little else. I think (Peter) that https://www.revk.uk/2017/11/ada.html is relevant. The writer owns (among other things) an ISP, and writes bare-metal firmware for a range of routers which are well-respected. Broadly- speaking, he liked Ada when he tried it Quotebut I am not re-working OpenSSL from scratch in Ada. That's the bottom line. There's a whole lot of utter crap that gets recycled on a regular basis: arbitrary Python and JavaScript that people use with minimal consideration of whether they can prove or even demonstrate that's it's "correct". But on occasion one comes across trusted code that it makes sense to want to use, and if the application language obstructs that then one has very real problems. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-06 22:37 Quote  (come on Joanna, you can use Google better than that can't you >:-)Sorry but I prefer chatting with live people over relying upon search engines with skewed search results. Everyone says Ada is so important and used for big things and to its credit it’s IRC channel seems ok but I’ve never seen any books, courses or job listings for it. I’ve heard stories that Ada was being replaced with C++ because of a shortage of programmers for it which seems deliberate since it’s not taught anywhere that I know of. I’ve looked at it and noticed that you have to say what the ends are for. That seems very sensible. Judging by the obscurity of Ada and the popularity of unsafe languages I’d say that the trend is going in the wrong direction especially with too many things being connected to the internet. Does anyone here know Ada well enough to answer the question if two distinct types can be created from real in the fashion that ctk would like? ---------------------------------------------------------------------- VisualLab · 2023-01-06 22:42 Quote from: MarkMLl on January 06, 2023, 09:55:17 pmHowever at that point I think we need to split out the sort of RAD that Emacs and Eclipse are intended to do (i.e. making the edit-compile-debug cycle tolerable) and the UI-designers provided by VB, Delphi, Lazarus and... well, very little else. As far as I remember, Emacs is just an extended (ancient) text editor and Eclipse is an IDE. Maybe instead of Eclipse you meant NetBeans? Only the last 3 are RAD. Quote from: MarkMLl on January 06, 2023, 09:55:17 pmThat's the bottom line. There's a whole lot of utter crap that gets recycled on a regular basis: arbitrary Python and JavaScript that people use with minimal consideration of whether they can prove or even demonstrate that's it's "correct". What era, what fashion. Perhaps nowadays more and more people suffer from excess free time. ---------------------------------------------------------------------- VisualLab · 2023-01-06 23:17 Quote from: ctk on January 05, 2023, 03:59:33 pmAnd a reason I don't see Pascal as a usable language, due to warts (such as this one) in its featureset. There are many languages that are not considered useful languages by different people. It's just that people have different expectations and preferences regarding tools. Everyone has their own personal opinion of a given language. For example, I find Python completely useless to me. And the C language is of very little use. Others think otherwise. And this is due to my needs and expectations. Simply. Quote from: ctk on January 05, 2023, 03:59:33 pmPascal will not be fixed anyway, as it is set in stone now... Maybe it doesn't need fixing. There's a sound rule that says, "Don't fix what ain't broke." So you think Pascal needs fixing and I think it's not broken so it doesn't need fixing. I suspect that when I say C is broken, you might (I speculate) say it doesn't need fixing because it's well designed. And it all comes from needs and expectations. Every older language is carved in stone. For example, C, C++ as well as Java or C#. They are only extended, but the same approach is applied to Pascal. A separate issue is the removal of existing and used language features. Is this a good solution? Well, it depends how you look at it. For example, the C++ committee believes not. The people responsible for the development of Object Pascal (Delphi) also think so. But Guido and his friends, for example, don't think so anymore. And what was the reaction of Python users? And there are probably several such languages, apparently: Scala, Swift (I don't use it, I'm just quoting rumors). Quote from: ctk on January 05, 2023, 03:59:33 pm...so the best I can hope is its users will move on to better-designed languages, after acquiring a sense for what good design is. (which my posting here might help with) And what does better designed mean? This is a rather vague and general statement. If you ask for clarification, everyone will list slightly different sets of features. Again: it all depends on your needs and expectations. For example, the build system. If someone values time and convenience, they use, for example, Delphi (lazarus) or Visual Studio, and then for some reason they have to use CMake, then they go to hell. So Pascal is better designed for me. And I hope that gradually people will switch from various "strange" languages to Pascal Quote from: ctk on January 05, 2023, 03:59:33 pmIt worked with some other type earlier, so this is inconsistent and arbitrary. Oh, there are many inconsistencies in different languages. After all, this is related to design decisions. It's impossible to please everyone. That's why everyone chooses the language that bothers him the least ---------------------------------------------------------------------- Bogen85 · 2023-01-06 23:27 Quote from: VisualLab on January 07, 2023, 12:17:06 amOh, there are many inconsistencies in different languages. After all, this is related to design decisions. It's impossible to please everyone. That's why everyone chooses the language that bothers him the least Exactly.... There are many things that bother me in Pascal. And currently the only Pascal I use is free pascal. And many of those things are done how I prefer in a many other popular languages... But the number of things that bother and annoy me in all the other popular languages I know far outweigh the things that I find irritating in Pascal... Pick your poison... ---------------------------------------------------------------------- ctk · 2023-01-06 23:56 Hello! I will answer your questions, and flat out (but tersely) disagree with the general sentiment of defeatist relativism you're pushing out of personal taste. Quote from: VisualLab on January 07, 2023, 12:17:06 amA separate issue is the removal of existing and used language features. Is this a good solution? An excellent one, that would gain from being planned from day one in any language that comes into existence. It's quite simple: you would add a note at the beginning of your file that e.g. you're not going to use any deprecated features, and this makes them forbidden from use *in the current file*. Simple. Elegant. Backwards-compatible: you can always use all the features that have been deprecated if you don't make a note in any given file that you don't. Quote from: VisualLab on January 07, 2023, 12:17:06 amAnd what does better designed mean I linked this, which is the first criterion I need here: https://en.wikipedia.org/wiki/Principle_of_least_astonishment Quote from: VisualLab on January 07, 2023, 12:17:06 amOh, there are many inconsistencies in different languages. Yes, let's fix the issues in other languages too. I'm serious. One feature at a time. Here it's a matter of who, of us two, lives longer than the other; try as you might, you can not dent my idealism, and I can not lift you up from the doldrums of defeatist relativism. ---------------------------------------------------------------------- Joanna · 2023-01-07 00:33 I just finished reading Quote I think (Peter) that https://www.revk.uk/2017/11/ada.html is relevant. He was enthusiastic about Ada until discovering that nobody had written the libraries he needed for him in Ada. So he just gave up on using Ada presumably until someone creates them.  The phenomenon of being so dependent upon existing libraries is a serious and pervasive problem. Occasionally there Is news of someone who wrote opensource libraries punishing freeloaders for not being more appreciative of his work. I think as a rule most people are just lazy and want to mooch. Existing libraries could be full of bugs and malware and probably could be greatly improved by being redone in Ada. Also translating existing code into Ada would provide an excellent learning opportunity. The result of his article does nothing but discourage people from using Ada I think. I sometimes hear similar arguments from people who know little about fpc claiming that oh it doesn’t have libraries for modern computing.. ---------------------------------------------------------------------- Joanna · 2023-01-07 00:46 Quote you can not dent my idealism, and I can not lift you up from the doldrums of defeatist relativism.Ctk can you please share which language you program with and what sort of programming you have done? ---------------------------------------------------------------------- Bogen85 · 2023-01-07 00:50 Quote from: Joanna on January 07, 2023, 01:33:16 amI just finished reading Quote I think (Peter) that https://www.revk.uk/2017/11/ada.html is relevant. He was enthusiastic about Ada until discovering that nobody had written the libraries he needed for him in Ada. So he just gave up on using Ada presumably until someone creates them. The phenomenon of being so dependent upon existing libraries is a serious and pervasive problem. Occasionally there Is news of someone who wrote opensource libraries punishing freeloaders for not being more appreciative of his work. I think as a rule most people are just lazy and want to mooch. Time. Not everyone has unlimited free time. Quote from: Joanna on January 07, 2023, 01:33:16 am Existing libraries could be full of bugs and malware and probably could be greatly improved by being redone in Ada. Also translating existing code into Ada would provide an excellent learning opportunity. The result of his article does nothing but discourage people from using Ada I think. Seriously? Malware? When have you heard in the news there was malware in Ada libraries? Show me a news report. Quote from: Joanna on January 07, 2023, 01:33:16 amI sometimes hear similar arguments from people who know little about fpc claiming that oh it doesn’t have libraries for modern computing.. Same. Time. They have what they need in other environments, but they do not have what they need with FPC. You need to spend a few years using something other then Pascal. And doing something productive in several other programming environments. They will get some understanding where they are coming from rather just just assuming they want to be hard on pascal unfairly. In general your programming world view is very myopic. You do to not seem to realize Pascal and Lazarus have many faults. And you go after anyone who points out those faults. ---------------------------------------------------------------------- Bogen85 · 2023-01-07 00:51 Quote from: Joanna on January 07, 2023, 01:46:30 amQuote you can not dent my idealism, and I can not lift you up from the doldrums of defeatist relativism.Ctk can you please share which language you program with and what sort of programming you have done? Why does Ctk need to answer to you on this? You brought up this subject. Ctk only came here after the fact. ---------------------------------------------------------------------- Joanna · 2023-01-07 01:13 Quote Seriously? Malware? When have you heard in the news there was malware in Ada libraries? Show me a news report.I think you mis read what I said. I didn’t accuse ada of having malware I hope ctk will answer my question about what language he uses because I want to find out what the “perfect language“ that we are missing out on is. If he has not written applications of any substance it’s easy to go around nitpicking how languages could be better whilst ignoring that fact that his proposed changes would probably break a lot of things. Yes I understand that some people don’t have time but in most cases they have plenty of time that they would rather spend watching tv, playing computer games or fooling around on the Internet. I’ve been guilty of some of these things myself. What it takes is dedication.  The developers of fpc and Lazarus managed to find the time to create and improve code despite most of them probably having full time jobs. I’m going to have to agree with ctk in this case Quote I can not lift you up from the doldrums of defeatist relativism. I want nothing to do with using junk code that could be better and employers cutting corners and encouraging “copy paste” programming or even worse blackbox libraries  is an irresponsible solution with no foresight or care about the future consequences. Code can and should be improved regularly. I’ve Lost count of how many times I’ve redone my code and I will do it again. ---------------------------------------------------------------------- Joanna · 2023-01-07 01:16 Quote Why does Ctk need to answer to you on this? You brought up this subject. Ctk only came here after the fact. I think you need to work on your reading comprehension skills and reread my and ctks first posts ---------------------------------------------------------------------- Bogen85 · 2023-01-07 01:25 Quote from: Joanna on January 07, 2023, 02:16:22 amQuote Why does Ctk need to answer to you on this? You brought up this subject. Ctk only came here after the fact. I think you need to work on your reading comprehension skills and reread my and ctks first posts Ctk only has two posts on this forum. They are both in this topic. I have read them both. I find what Ctk has said in both to be very reasonable, and I agree with much of what was said. ---------------------------------------------------------------------- MarkMLl · 2023-01-07 09:02 Quote from: VisualLab on January 06, 2023, 11:42:24 pmQuote from: MarkMLl on January 06, 2023, 09:55:17 pmHowever at that point I think we need to split out the sort of RAD that Emacs and Eclipse are intended to do (i.e. making the edit-compile-debug cycle tolerable) and the UI-designers provided by VB, Delphi, Lazarus and... well, very little else. As far as I remember, Emacs is just an extended (ancient) text editor and Eclipse is an IDE. Maybe instead of Eclipse you meant NetBeans? Only the last 3 are RAD. I meant what I wrote. I'm splitting out development environments which make at least some attempt to ease the edit-compile-debug cycle, which include in particular Emacs and Eclipse, and the form designer part. They're distinct. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-07 09:05 Quote from: Bogen85 on January 07, 2023, 01:50:49 amQuote from: Joanna on January 07, 2023, 01:33:16 am Existing libraries could be full of bugs and malware and probably could be greatly improved by being redone in Ada. Also translating existing code into Ada would provide an excellent learning opportunity. The result of his article does nothing but discourage people from using Ada I think. Seriously? Malware? When have you heard in the news there was malware in Ada libraries? Show me a news report. Give her a break: that's not what she said. However the risk is that there might be few (if any) reported vulnerabilities in Ada libraries for the same reason that there are few reported in IBM mainframes: a small attack surface due to limited use. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-07 09:19 Quote from: Joanna on January 06, 2023, 11:37:33 pmDoes anyone here know Ada well enough to answer the question if two distinct types can be created from real in the fashion that ctk would like? I believe AlanTheBeast is another practitioner. However with the relatively recent availability of https://en.wikipedia.org/wiki/GNAT it's relatively accessible, so one could always experiment. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-07 13:28 Ctk is a rather interesting person whom I know from irc under another name. I tried to interest him in fpc which probably was not such a good idea  QuoteCtk only has two posts on this forum. They are both in this topic. I have read them both.I find what Ctk has said in both to be very reasonable, and I agree with much of what was said. Seriously ?? You really shouldn’t be taking the side of the person who said that pascal is a horrible language and that we should all abandon immediately for a “better language which cannot be disclosed“  Additionally in response to your private message that you blocked me from returning.. I suggest that you Familiarize yourself with the Shakespeare play king Lear. I think that the choices of king Lear and the consequences thereof could provide some good insights for you. ---------------------------------------------------------------------- MarkMLl · 2023-01-07 14:19 Quote from: Joanna on January 07, 2023, 02:28:32 pmCtk is a rather interesting person whom I know from irc under another name. I tried to interest him in fpc which probably was not such a good idea  Why- because he disagrees with you and is able to argue his point? Quote from: Joanna on January 07, 2023, 02:28:32 pmQuoteCtk only has two posts on this forum. They are both in this topic. I have read them both.I find what Ctk has said in both to be very reasonable, and I agree with much of what was said. Seriously ?? You really shouldn’t be taking the side of the person who said that pascal is a horrible language and that we should all abandon immediately for a “better language which cannot be disclosed“  For completeness, you are quoting Bogen55 there. Now quoting /you/: Quote from: Joanna on January 06, 2023, 05:05:19 pmI’m no expert on the inner workings of compilers but I’m sure the types as they are exist for a reason. Doesn't it occur to you that people who do know a bit about the insides of compilers and the implications of how they behave- not to mention their history- might be worth listening to rather than being dismissed out of hand? MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-07 15:28 Note that although the most widely uses Ada compiler is GNU GCC GNAT, the really big shops in vital industries do not link to GNU supported other compiler generated code or their libraries, which are for the best part proprietary. Hence you will likely never see them. They write their libraries also in Ada. That is a requirement. Case in point and part of the Ada world is that once you choose Ada for critical solutions, it follows EVERYTHING needs to be Ada. Otherwise one would have lost the plot. Although GNAT can link to such code generated by other compilers, the big shops wil never ever do that. Also note many of them have their own Ada standards compliant compiler, again also proprietary. I have seen that in the above mentioned C++ course: an engineering firm that designs a.o. wing designs and their in-plane monitoring  for Airbus Industries. Part of the headaches I mentioned giving that course. ---------------------------------------------------------------------- VisualLab · 2023-01-07 15:58 Quote from: ctk on January 07, 2023, 12:56:44 amHello! I will answer your questions, and flat out (but tersely) disagree with the general sentiment of defeatist relativism you're pushing out of personal taste. Nice term But aren't there too many "keywords" in one statement? Excessive brevity causes satiety and becomes a cacophony of semantic abstruse As for pushing out - just like everyone else, I express my opinion. That's what the forum is for. Of course, I can be more spiteful and/or rude. Only that then, it would no longer be an exchange of opinions, but a brawl. I don't like brawling As for personal taste - everyone has a taste. I have a rational and pragmatic view of programming languages (and not only that). Yes, I agree that they need to be improved. But individual people differ in the details of improvement. Quote from: ctk on January 07, 2023, 12:56:44 amIt's quite simple: you would add a note at the beginning of your file that e.g. you're not going to use any deprecated features, and this makes them forbidden from use *in the current file*. Simple. Elegant. Backwards-compatible: you can always use all the features that have been deprecated if you don't make a note in any given file that you don't. The proposed solution is, perhaps, a way out. The question is: how many people will be satisfied and how many will not? For example, in libraries code. Quote from: ctk on January 07, 2023, 12:56:44 amI linked this, which is the first criterion I need here: https://en.wikipedia.org/wiki/Principle_of_least_astonishment I completely agree with what is described in the quoted Wikipedia article. The example of division in C++ comes to mind here, where we have 3 variables: the numerator and denominator as integers, the result of division as a floating point number. After compiling and running such a program, I enter: 5 / 2. The result value has the fractional part truncated. There is one problem with this: people's expectations can be slightly different and sometimes even contradictory. Very often people can be grouped according to their expectations. Then a dilemma arises: the expectations of which group should be taken into account? Perhaps it would be fairest to take into account the expectations of the largest group. In commercial software, this is often the case, because the motivation is usually the desire to make as much profit as possible. In open source software, this is rarely the case, because there is no financial incentive (usually). A good example: desktop Linux distributions. The developers of open source software say clearly: if you don't like it - don't use it. And if they don't get paid, I guess they have a right to say so. Quote from: ctk on January 07, 2023, 12:56:44 amHere it's a matter of who, of us two, lives longer than the other; try as you might, you can not dent my idealism, and I can not lift you up from the doldrums of defeatist relativism. First, age is irrelevant in this discussion. Secondly, I am not of the nature of an apostle or an activist obsessed with some idea. Excessive idealism is usually the cause of unnecessary conflicts. I'm not going to dent anyone, because I don't need it for anything ---------------------------------------------------------------------- ctk · 2023-01-08 00:05 I'm a tad sorry for my stiff tone previously; I might have the ideas to show for it though! Quote from: VisualLab on January 07, 2023, 04:58:57 pmQuote from: ctk on January 07, 2023, 12:56:44 amIt's quite simple: you would add a note at the beginning of your file that e.g. you're not going to use any deprecated features, and this makes them forbidden from use *in the current file*. Simple. Elegant. Backwards-compatible: you can always use all the features that have been deprecated if you don't make a note in any given file that you don't. The proposed solution is, perhaps, a way out. The question is: how many people will be satisfied and how many will not? For example, in libraries code. You can act as though the deprecation feature doesn't exist if you feel traditional. This is bound to satisfy everyone, especially opponents to it! All the while providing the ability for others to do away with features that have come to be considered dangerous to so much as keep available (fearing accidental use). Quote from: VisualLab on January 07, 2023, 04:58:57 pmQuote from: ctk on January 07, 2023, 12:56:44 amI linked this, which is the first criterion I need here: https://en.wikipedia.org/wiki/Principle_of_least_astonishment I completely agree with what is described in the quoted Wikipedia article. The example of division in C++ comes to mind here, where we have 3 variables: the numerator and denominator as integers, the result of division as a floating point number. After compiling and running such a program, I enter: 5 / 2. The result value has the fractional part truncated. The (/) function — operators are functions — chosen among several polymorphic variants of itself here, has the signature (int, int) → int in this case; the C++ language is just sloppy in letting you then fit an integer value into a floating-point variable without making you request an explicit conversion. This is a defect inherited from C: your example program should not be able to compile to begin with, in a sane language (or indeed a language whose sanity has been restored by using deprecation directives). The fact that your program will refuse to compile will lead you to revise it, and convert your operands to floating point before using the polymorphic (/) operator-function, where the signature used will become (float, float) → float. This is how I propose to make it impossible of ever getting into the quagmire you were hinting at. Quote from: VisualLab on January 07, 2023, 04:58:57 pmThere is one problem with this: people's expectations can be slightly different and sometimes even contradictory. Very often people can be grouped according to their expectations. Then a dilemma arises: the expectations of which group should be taken into account? Perhaps it would be fairest to take into account the expectations of the largest group. In commercial software, this is often the case, because the motivation is usually the desire to make as much profit as possible. In open source software, this is rarely the case, because there is no financial incentive (usually). A good example: desktop Linux distributions. The developers of open source software say clearly: if you don't like it - don't use it. And if they don't get paid, I guess they have a right to say so. I will sidestep the issue of which feature or behaviour ends up being implemented (first. All interesting behaviours can even become available eventually.) To concentrate on the sole minimization of astonishment, I will only point out that consistency throughout, on any given feature, should reign supreme. Case in point, `type` did not work the same for ints and records (namely the starting point of this thread): this is an example of something where consistency was not present throughout. If you have other examples like the C++ division operator-function, I can resolve them for you like the one above. I invented nothing here; these solutions have been found for decades, and are in great need of being known to more people. Quote from: ctk on January 07, 2023, 12:56:44 amHere it's a matter of who, of us two, lives longer than the other; try as you might, you can not dent my idealism, and I can not lift you up from the doldrums of defeatist relativism. I meant to joke with a reference to the famous quote that goes something like: "for some we won't convince them; we'll survive them" (speaking of general relativity and such). Otherwise: glad to see my suggestions enlighten those who would also have settled for worse! ---------------------------------------------------------------------- Joanna · 2023-01-08 00:14 Quote Doesn't it occur to you that people who do know a bit about the insides of compilers and the implications of how they behave- not to mention their history- might be worth listening to rather than being dismissed out of hand?I know nothing about what if anything ctk does regarding programming I have never seen any code he wrote. As for Bogen85, yes he seems to know a lot about programming, but I’ve also seen him get tricked by people online who are up to no good on multiple occasions. Just because he is very knowledgeable about programming doesn’t make him perfect. He thinks that the guy who once shouted that “Lazarus is a piece of shit” into the #lazarus channel is an advocate for Lazarus. {Yes it is in the logs} He has taken threads started by trouble makers here on forums seriously. The reason he doesn’t like me anymore is because I dared to point out that the pascal congress thing was probably a prank. To be fair I even had someone email the real Sergio at The university asking about the event and there was no response at all. If we are going to have a pleasant cohesive community it’s really counterproductive to take the side of everyone who comes along trolling, criticizing pascal or playing jokes whilst attacking a person who is actually dedicated to pascal. I really should not have to defend how pascal is written. The types for pascal and aliases are perfectly fine. People who hate pascal and will never use it should not be taken seriously when they come up with silly excuses about what they perceive is “wrong “ with pascal. Also to answer your question I find ctk interesting because of the way he talks and he seems smart hence my thwarted effort to try to get him to try out fpc. ---------------------------------------------------------------------- ctk · 2023-01-08 01:05 Joanna: the present thread isn't about hating or defending. It is also possible to be factual with how things are. Quote from: VisualLab on January 07, 2023, 04:58:57 pmjust like everyone else, I express my opinion. That's what the forum is for. […] As for personal taste - everyone has a taste. I have a rational and pragmatic view of programming languages (and not only that). Yes, I agree that they need to be improved. But individual people differ in the details of improvement. I see a distinction to note: There is expressing an opinion, such as "between choices A and B that both work, I decide to pick B". And there is making a statement that goes against a well-founded mathematical reasoning (also known as a theorem). One should stay wary that going against a theorem can not, by nature, belong to the category "expressing an opinion". Let me know about more differring standpoints concerning the details of improvement! (setting aside "it's good to do it that way because it's been done that way") I'll see what I can propose to satisfy all at once. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-08 03:19 There could be a {$MODESWITCH AbsoluteTypeStrict} that would enable the following things: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i type  minutes = type real;  seconds = type real;var  a: minutes;  b: seconds;begin  a := b; // it wouldn't work  a := minutes(b); // it would workend; ---------------------------------------------------------------------- 440bx · 2023-01-08 04:15 Quote from: denis.totoliciu on January 08, 2023, 04:19:35 amThere could be a {$MODESWITCH AbsoluteTypeStrict} that would enable the following things: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i type  minutes = type real;  seconds = type real;var  a: minutes;  b: seconds;begin  a := b; // it wouldn't work  a := minutes(b); // it would workend;What you just proposed sounds quite reasonable but, the question is, why is a modeswitch required at all to have it behave that way ?... isn't that what the "= type" is supposed to be for ?  IOW, it should behave as you pointed out because of the presence of "= type " not the setting of some modeswitch. ---------------------------------------------------------------------- MarkMLl · 2023-01-08 08:58 Quote from: ctk on January 08, 2023, 01:05:12 amThis is a defect inherited from C: your example program should not be able to compile to begin with, in a sane language (or indeed a language whose sanity has been restored by using deprecation directives). I think that it's something that was quite simply not identified as a problem when Pascal was defined, being later C has less excuse :-) I don't know where ALGOL-W and Algol-68 stood on this as Pascal's immediate predecessors. ALGOL-60 had minimal awareness of types. From discussion here and on the mailing lists with Sven et al., Object Pascal (as distinct from Pascal-as-designed) has sloppy numeric compatibility: the result of an expression can be silently converted to the type required by an lvalue. However the types of the one or two operands applied to a function or operator are handled somewhat more strictly, and that's particularly the case where the assignment operator- which is redefinable- is concerned. At least Pascal doesn't have ALGOL-60s chained assignments. No doubt they seemed like a good idea at the time, but IMO the combination of chained assignment, automatic type conversion, and the polymorphic operators introduced later makes the ALGOL/C family a nightmare. MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-08 09:34 Not to mention someone (ctk) mentioning initial Pascal inheriting from C..... Impossible time line. ---------------------------------------------------------------------- MarkMLl · 2023-01-08 09:43 Quote from: Thaddy on January 08, 2023, 10:34:37 amNot to mention someone (ctk) mentioning initial Pascal inheriting from C..... Impossible time line. At least in terms of publication dates. It's far murkier if one starts trying to trace the lineage of ALGOL-60 -> BCPL -> B -> C. Broadly speaking though, C is closer to ALGOL-60 than Pascal is. Bottom line: Pascal circa 1967/8 was rushed, and the enhancements introduced by Turbo Pascal in the mid-80s were in several cases ill- considered. And we're stuck with them. MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-08 12:15 Quote from: ctk on January 08, 2023, 01:05:12 amOtherwise: glad to see my suggestions enlighten those who would also have settled for worse! OK. Only, it's like convincing a convinced person who, on the other hand, is aware that he can't change much on his own. And you have to live somehow. How to put it differently? Maybe so (a bit exaggerated): you should strive for perfection but not over the dead ---------------------------------------------------------------------- VisualLab · 2023-01-08 12:38 Quote from: 440bx on January 08, 2023, 05:15:28 amQuote from: denis.totoliciu on January 08, 2023, 04:19:35 amThere could be a {$MODESWITCH AbsoluteTypeStrict} that would enable the following things: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i type  minutes = type real;  seconds = type real;var  a: minutes;  b: seconds;begin  a := b; // it wouldn't work  a := minutes(b); // it would workend;What you just proposed sounds quite reasonable but, the question is, why is a modeswitch required at all to have it behave that way ?... isn't that what the "= type" is supposed to be for ?  IOW, it should behave as you pointed out because of the presence of "= type " not the setting of some modeswitch. Any chance this would be straightened out in the compiler? Personally, I'd be very happy about that. Quote from: MarkMLl on January 08, 2023, 09:58:49 amQuote from: ctk on January 08, 2023, 01:05:12 amThis is a defect inherited from C: your example program should not be able to compile to begin with, in a sane language (or indeed a language whose sanity has been restored by using deprecation directives). I think that it's something that was quite simply not identified as a problem when Pascal was defined, being later C has less excuse :-) I don't know where ALGOL-W and Algol-68 stood on this as Pascal's immediate predecessors. ALGOL-60 had minimal awareness of types. Quote from: MarkMLl on January 08, 2023, 09:58:49 amFrom discussion here and on the mailing lists with Sven et al., Object Pascal (as distinct from Pascal-as-designed) has sloppy numeric compatibility: the result of an expression can be silently converted to the type required by an lvalue. However the types of the one or two operands applied to a function or operator are handled somewhat more strictly, and that's particularly the case where the assignment operator- which is redefinable- is concerned. One can speculate (one of two) that certain details: they were omitted because the developers overlooked them when designing the language (and the first compiler) and then it stayed that way,were deliberately designed in the language (and the first compiler), because the creators considered such solutions appropriate (on the principle: "I think it's good, and if you don't like it, don't use it"), so specific (personal) kind of pragmatism. And then every subsequent compiler implemented them for backwards compatibility. Either way: inconsistencies and quirks should be straightened out. The question is how much will this affect existing libraries and software? Some people tend to take advantage of (compiler) language shortcomings or ambiguities to use them as hacks in the source code. ---------------------------------------------------------------------- Joanna · 2023-01-08 13:21 Quote from: denis.totoliciu on January 08, 2023, 04:19:35 amThere could be a {$MODESWITCH AbsoluteTypeStrict} that would enable the following things: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i type  minutes = type real;  seconds = type real;var  a: minutes;  b: seconds;begin  a := b; // it wouldn't work  a := minutes(b); // it would workend; I think it would be a better approach to use property’s for this sort of thing. Here is a simple example Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i Var Seconds_var:integer;Property seconds:integer read get_seconds write set_seconds;property Minutes:integer read get_minutes write_set_minutes; Function get_seconds:integer;Begin Result:= seconds_var;End; Procedure set_seconds (avalue:integer);Seconds_var:= avalue;End Function get_minutes:integer;BeginResult:= seconds Div 60;End Procedure set_minutes (avalue:integer);Seconds:= avalue * 60;End ---------------------------------------------------------------------- MarkMLl · 2023-01-08 13:29 Quote from: VisualLab on January 08, 2023, 01:38:40 pmthey were omitted because the developers overlooked them when designing the language (and the first compiler) and then it stayed that way, There was a single developer: Wirth. I believe (the early history is extremely murky) that he started with his original ALGOL-W compiler as a basis, and since that used recursive ascent (with internal precedence tables etc.) it was extremely difficult to modify. He started in May 1967, and the way I interpret things he believed that he had to get something working before the ALGOL-68 committee published its standard: i.e. first cut by that Autumn so that he could turn postgrads loose on it to help. One of his major objectives was to make Pascal incompatible with ALGOL-60. That mandated a number of changes to the compiler: moving declarations outside the block that used them, moving the name in a declaration to be before the type, and so on. Subsidiary to that and to the reorganisation of parameter passing etc., if he couldn't implement something by the Autumn it got chopped out. In practice, ALGOL-68 turned out to be such a mess, and even after the standard was re-published had such low uptake, that he could easily have spent eighteen months on the job rather than six. At some point he rewrote the compiler to use recursive descent (see papers by Blau, Waychoff, Schorre and many others), laying the foundation for the P series of compilers which is still extant: I think we're up at P6 e.g. https://bernd-oppolzer.de/job9.htm In the relatively early days (1970/80s) there were four attempts to improve the language: ISO, UCSD, Borland and Wirth's own Modula-2. But we are, basically, stuck with the flaws of the foundation language that Wirth mackled together in about '67. And that is not going to change (hence e.g. my https://forum.lazarus.freepascal.org/index.php/t opic,60239.msg450644.html). MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-08 13:32 Quote from: Joanna on January 08, 2023, 02:21:29 pmI think it would be a better approach to use property’s for this sort of thing. Here is a simple example Properties (other than in classes) are inherently broken since they can't be forward-defined: the setter and getter both have the same visibility as the property so are unprotected from casual abuse. MarkMLl ---------------------------------------------------------------------- denis.totoliciu · 2023-01-08 13:37 Quote from: 440bx on January 08, 2023, 05:15:28 amWhat you just proposed sounds quite reasonable but, the question is, why is a modeswitch required at all to have it behave that way ?... isn't that what the "= type" is supposed to be for ?  IOW, it should behave as you pointed out because of the presence of "= type " not the setting of some modeswitch. There might be instances where a looser type compatibility would be useful, i.e. when using Windows API functions. Programs in Pascal tend to use Integer when dealing with everyday tasks and less DWORD, the latter being useful when interacting directly with the function call. Having very strict typing would require a lot of type-casting when "converting" the Integer variables to DWORD. While this would make the source code very clear and this can be very useful for critical programs, in other applications it can become very tedious. I thought that having the {$MODESWITCH} would be a middle ground and it would also ensure compatibility with source code already written and with Delphi source code. What I like about the FPC compiler is its versatility, which in my opinion is one of its hallmarks, {$MODE} and {$MODESWITCH} contributing to that along many other features. ---------------------------------------------------------------------- Joanna · 2023-01-08 13:57 Quote Joanna: the present thread isn't about hating or defending. It is also possible to be factual with how things are. Ctk the perceived faults that you find with pascal have never caused me any trouble at all in all the years that I’ve used pascal. I’ve always been able to control what my variables are doing and not add the wrong variables together  Being an actual user of fpc and Lazarus I do have some complaints of my own one of which greatly interferes with the operation of my program. 1. Why does the color property of tbutton not do anything? I have to use custom drawn controls. 2. Why does tpagecontrol not let me control the background color of the tabs? There is a tcdpagecontrol which looks good with the colors but doesn’t have a multiline property. So the tabs are sometimes truncated because they can’t wrap. Can anyone tell me why the color property doesn’t work For tbutton or tpagecontrol or how to make it work? ---------------------------------------------------------------------- denis.totoliciu · 2023-01-08 13:58 Quote from: VisualLab on January 08, 2023, 01:38:40 pmAny chance this would be straightened out in the compiler? Personally, I'd be very happy about that. I really don't know. It depends whether the compiler programmers like the idea or not. ---------------------------------------------------------------------- Joanna · 2023-01-08 14:03 Quote from: MarkMLl on January 08, 2023, 02:32:55 pmQuote from: Joanna on January 08, 2023, 02:21:29 pmI think it would be a better approach to use property’s for this sort of thing. Here is a simple example Properties (other than in classes) are inherently broken since they can't be forward-defined: the setter and getter both have the same visibility as the property so are unprotected from casual abuse. MarkMLlk I’ve never tried to use properties outside of classes where I make their access methods private. Object oriented programming definitely solves a lot of these types of problems. ---------------------------------------------------------------------- 440bx · 2023-01-08 18:19 Quote from: VisualLab on January 08, 2023, 01:38:40 pmAny chance this would be straightened out in the compiler? Personally, I'd be very happy about that. Not likely because that change would almost certainly require existing code to be altered to account for the change. Quote from: denis.totoliciu on January 08, 2023, 02:37:20 pmHaving very strict typing would require a lot of type-casting when "converting" the Integer variables to DWORD. While this would make the source code very clear and this can be very useful for critical programs, in other applications it can become very tedious. Yes, that is part of the "problem(s)" very strong type checking can create. Quote from: denis.totoliciu on January 08, 2023, 02:37:20 pmI thought that having the {$MODESWITCH} would be a middle ground and it would also ensure compatibility with source code already written and with Delphi source code. if you think about it, it's difficult to see why FPC allows the keyword "type" inside a type definition.  It doesn't seem to make any functional difference.  In Delphi, it apparently does make a functional difference but, if it makes one in FPC, it has escaped me so far. ---------------------------------------------------------------------- MarkMLl · 2023-01-08 19:43 Quote from: 440bx on January 08, 2023, 07:19:02 pmQuote from: denis.totoliciu on January 08, 2023, 02:37:20 pmHaving very strict typing would require a lot of type-casting when "converting" the Integer variables to DWORD. While this would make the source code very clear and this can be very useful for critical programs, in other applications it can become very tedious. Yes, that is part of the "problem(s)" very strong type checking can create. In my own long-term R&D, I'm thinking of some sort of trait system to relax compatibility. So for example, a uint8 could have the trait that it could be assigned to a uint16, or could be used as a constant parameter where a uint16 was expected. Another possibility is that a variable could be given an r/o trait on entry to a nested block. Some might see where I'm going with that... MarkMLl ---------------------------------------------------------------------- ctk · 2023-01-09 01:11 Quote from: Joanna on January 08, 2023, 02:57:10 pmCtk the perceived faults that you find with pascal have never caused me any trouble at all in all the years that I’ve used pascal. I’ve always been able to control what my variables are doing and not add the wrong variables together  No matter your personal experience, better safe (and consistent, and regular) than sorry (and exception-ridden, and quirky). « some programmers will invoke the old thought-terminating cliche: “only a bad craftsman blames his tools!” » matches what you are doing by rejecting the responsibility on the programmer. This quote was taken from this description of what appears to be a fine language (answering your earlier request to see one): https://borretti.me/article/introducing-austral ---------------------------------------------------------------------- Joanna · 2023-01-09 01:59 Quote No matter your personal experience, better safe (and consistent, and regular) than sorry (and exception-ridden, and quirky). « some programmers will invoke the old thought-terminating cliche: “only a bad craftsman blames his tools!” » matches what you are doing by rejecting the responsibility on the programmer. Ctk the blaming tools concept is very familiar to me from someone I know Personally who uses it as an excuse for doing poorly at things but even when he gets what he said he needs he still doesn’t do well. To be a craftsman I’m sorry to say you must do a lot of crafting. A craftsman doesn’t sit on the sidelines waiting for the perfect tools to be created. A craftsman does the best he can with what he has and this enables him to create better tools to do the tasks. This is how tools can and should evolve. Fancier tools do not compensate for poor craftsmanship. If anything fancier tools are a finishing touch that improve what was already good. I don’t use the so called modern computer languages but I’ve heard that the quality of computer programming skills is declining because of the tolerance of sloppy programming practices. In any case I’d rather have art from a good artist who only has a pencil and paper than a bad artist with the best tools money can buy. Quote This quote was taken from this description of what appears to be a fine language (answering your earlier request to see one): https://borretti.me/article/introducing-austral That’s great that you have found a language that you like but have you actually written anything using it? It would be good to write a substantial application with it and see if you still like it as I’ve done with pascal. ---------------------------------------------------------------------- MarkMLl · 2023-01-09 08:14 Quote from: Joanna on January 09, 2023, 02:59:14 amFancier tools do not compensate for poor craftsmanship. If anything fancier tools are a finishing touch that improve what was already good. Even the finest cabinet maker cannot do adequate work with a badly- tempered chisel, or a poorly-set saw blade. QuoteI don’t use the so called modern computer languages but I’ve heard that the quality of computer programming skills is declining because of the tolerance of sloppy programming practices. Well, perhaps you ought so that you can speak from experience rather than hearsay. Unfortunately Object Pascal is intent on tacking on as many features of newer languages as possible, without fixing the flaws in the underlying framework. MarkMLl ---------------------------------------------------------------------- ctk · 2023-01-09 12:18 Quote from: Joanna on January 09, 2023, 02:59:14 amTo be a craftsman I’m sorry to say you must do a lot of crafting. A craftsman doesn’t sit on the sidelines waiting for the perfect tools to be created. And outright makes them instead of waiting, as soon as it becomes known (or suspected) what would be good to do (or experiment with). Quote from: Joanna on January 09, 2023, 02:59:14 amA craftsman does the best he can with what he has and this enables him to create better tools to do the tasks. This is how tools can and should evolve. Can, yes; should, no (not necessarily). There are other ways, that involve formal reasoning around algebraic properties of languages; and tada, you get a language that suspiciously has no warts. Coincidence? No! Efficient method. Quote from: Joanna on January 09, 2023, 02:59:14 amFancier tools do not compensate for poor craftsmanship. If anything fancier tools are a finishing touch that improve what was already good. Actually, given that most "good practices" in coding are intended to make up for deficiencies in the programming language used, what you say here is not applicable. We end up with specialists in working around the flaws of their tools, rather than good craftsmen. This is why a combination of proper tools and proper training is necessary. It has to be both. Quote from: Joanna on January 09, 2023, 02:59:14 amI don’t use the so called modern computer languages but I’ve heard that the quality of computer programming skills is declining because of the tolerance of sloppy programming practices. Sloppiness is 'encouraged' by tools that make it so hard to get it right, that most people just give up on investing this effort that should not have been necessary with better tools. This phenomenon has spread widely, as computers have become less expensive. I used the term "encouraged" in quotes, but what I mean is actually that while they *are* an excuse, inadequate tools are a *valid reason* to explain sloppy work. Not an acceptable excuse; but a valid reason. Which should be dealt with (fixing the tools), not coped with (managing the prowess of producing acceptable work with crooked tools), resources permitting (but short-term financial profit not permitting and trying to route these resources elsewhere when they exist). Quote from: Joanna on January 09, 2023, 02:59:14 amIn any case I’d rather have art from a good artist who only has a pencil and paper than a bad artist with the best tools money can buy. Now figure yourself a pen with spikes in inconvenient places, that make it so you can't hold it naturally lest it prick your hand; and think again. To get back to the original point of this thread, I'm asking Pascal remove a spike around `type` on reals and integers. This won't happen and my hand will become crooked to work around this if I use it. ---------------------------------------------------------------------- MarkMLl · 2023-01-09 12:54 Quote from: ctk on January 09, 2023, 01:18:53 pmTo get back to the original point of this thread, I'm asking Pascal remove a spike around `type` on reals and integers. This won't happen and my hand will become crooked to work around this if I use it. Pascal /can't/: there is no central authority for it. And this forum only applies to a single implementation: FPC (Free/Florian's Pascal Compiler) rather than all the freely-available Pascal-oriented tools. I for one agree that the suggested modeswitch would be useful. But who am I to have an opinion? :-) MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-09 13:34 Quote from: ctk on January 09, 2023, 02:11:26 amThis quote was taken from this description of what appears to be a fine language (answering your earlier request to see one): https://borretti.me/article/introducing-austral Not bad at all. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-09 15:19 Quote Even the finest cabinet maker cannot do adequate work with a badly-tempered chisel, or a poorly-set saw blade. A cabinet maker may have to also be a tool maker. In fact a cabinet maker should be the tool maker. To use this analogy it is easy for someone sitting on the sidelines who has never crafted a cabinet to come up with all sorts of ideas about how the tools for this task should be and even be so bold to give unqualified advice about it. I think this is called the Dunning Kruger effect? Speaking from actual experience I’ve dealt with some tools that looked great at the store but were very disappointing when used. It takes actual experience to find out what really is important. Many People have been using pascal for a long time and if the type system was as much of a problem as ctk claims, pascal would have been either abandoned or changed by now. Quote Unfortunately Object Pascal is intent on tacking on as many features of newer languages as possible, without fixing the flaws in the underlying framework. I know someone who loves the Oberon language because he thinks fpc has too many features.  I find more features to be a double edged sword. On one hand they can really improve things but how to implement them can sometimes be hard to agree upon. For example I can probably never update the Code for tcheckcombobox because someone wanted all the checked items displayed at top which will wreck my layout. Modern programmers have it a lot easier than the programmers that had to get things perfect using punch cards with limited opportunities to compile. There are many causes of sloppy programming Including cheap memory and faster computers along with the treadmill of new languages with people who don’t really have time to get good at them writing software in a hurry. I’ve also heard “modern” languages are not that robust especially javascript. ---------------------------------------------------------------------- MarkMLl · 2023-01-09 16:59 Quote from: Joanna on January 09, 2023, 04:19:56 pmTo use this analogy it is easy for someone sitting on the sidelines who has never crafted a cabinet to come up with all sorts of ideas about how the tools for this task should be and even be so bold to give unqualified advice about it. I think this is called the Dunning Kruger effect? Yes, that is the popular name for it. I admit that I'm always hesitant about hardening and tempering steel, but that doesn't mean that I'm a total ignoramus in it. QuoteMany People have been using pascal for a long time and if the type system was as much of a problem as ctk claims, pascal would have been either abandoned or changed by now. The reason it's survived is the "added value" that it accrued from the Delphi and Lazarus development environments. In reality though a very high proportion of the "golden age" developers have moved on. Now about your invocation of Dunning-Kruger, your admission that you don't know very much about compilers and have limited experience of newer languages, and your uncritical defence of Pascal: I suggest that you'd be far more convincing if you did have that broader experience. I'm doing my best to not be offensive here, but I've been promoting Pascal, then Modula-2, then Object Pascal for around 40 years. During that time I've had to put up with just about everything from teenagers who sounded off about how great BASIC was with the specific intention of being offensive, through an academic boss who picked up some of the points I was making and used them to carve out a niche and write a couple of books, through to people who insisted that the only language usable under UNIX was C since that was what it was written in. I continue to use Object Pascal despite my misgivings about its shaky foundations, and despite what my research has turned up about Pascal's origins. And I continue to defend it, within limits, when confronted by people who only know Python and think that a 100Mb overhead for a "Hello, World!" is acceptable. But I'm not blind to its faults, and I refuse to pretend that I'm blind to them even at the expense of upsetting the core developers. And I also refuse to be one of those people who latch onto some obsolete technology and insist that sooner of latter the World will see the error of its ways and start using it again. You might have encountered them: fans of IBM mainframes with a 24-bit address limit, or people who are still trying to wring every last bit of performance out of the Apple-II or Sinclair QL. Sad. MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-09 17:42 Quote from: ctk on January 09, 2023, 02:11:26 am« some programmers will invoke the old thought-terminating cliche: “only a bad craftsman blames his tools!” » matches what you are doing by rejecting the responsibility on the programmer. That's true. You can find this statement on many blogs and in many discussions. Even in a more extreme form like the one (in the middle of the 4th paragraph) often attributed to Bjarne Stroustrup: Quotethere are only two kinds of languages: the ones people complain about and the ones nobody uses. There are other silly statements similar to the above, for example about students and teachers. Quote from: MarkMLl on January 09, 2023, 09:14:53 amEven the finest cabinet maker cannot do adequate work with a badly-tempered chisel, or a poorly-set saw blade. It is obvious that tools are better and worse. So are the people using these tools. Everyone also knows that only one combination out of these 4 gives the best results. But "the devil is in the details". People evaluate the quality of the tool and their own skills differently. The tool is assessed not only according to the needs and expectations, but also according to how the user has mastered the use of this tool (knowledge, experience, etc.). Except that often users with little experience blame the tool. And sometimes it's the other way around, users are blamed for lack of knowledge and experience, even though they are forced to use poor tools. So it's very different. Hence the different evaluations of individual programming languages. Quote from: ctk on January 09, 2023, 02:11:26 amThis quote was taken from this description of what appears to be a fine language (answering your earlier request to see one): https://borretti.me/article/introducing-austral Yes. However, if the language starts to be used more widely, people start to have higher expectations. So the creators are expanding it more and more. After many years, such a language is no longer a small, neat, simple language, but a powerful and, unfortunately, also complicated and convoluted (C++, Java, Object Pascal). This is because (usually) developers don't want to break what already works, and they don't want to break backward compatibility either, so new features have to match existing ones. This process is stretched over time. So it was with C. So it was with Pascal. So it was with Java. This has been (and will continue to be) the case with Python. And that's what will happen to Rust someday. A separate issue are the features that were controversial at the stage of the original design. Later warts only exacerbate these problems. Even worse, those programmers who "grow with the language" learned it painlessly, because the process was slow. Newbies have no choice. Either they master the basics in a fairly short time, or they choose something else. And their bases of language to learn are much broader than those where older programmers started learning (learning at a slower pace). For this reason, many young people choose what seems easier to them. Others, more ambitious, who already have some experience but have a disgust for old languages, try to create new languages (compilers or interpreters). Many of them think that the old compiler writers did a bad job. But they, the new creators, will surely create a better language. And this is an illusion. They will end up just like those earlier language makers. Their language after many years (if it survives) will also be "bloated" and full of quirks. ---------------------------------------------------------------------- 440bx · 2023-01-09 18:22 Quote from: VisualLab on January 09, 2023, 06:42:32 pmThis is because (usually) developers don't want to break what already works, That's probably one of the worst characteristics of human nature, the tendency of being "stuck" with what already works, it is very damaging to making progress.  It's great that it works but, it doesn't mean it cannot be made better or that there aren't better, completely different solutions. Quote from: VisualLab on January 09, 2023, 06:42:32 pmand they don't want to break backward compatibility either, The other scorpion on the frog's back. Quote from: VisualLab on January 09, 2023, 06:42:32 pmSo it was with C. So it was with Pascal. I think one of the most admirable traits of N. Wirth is that, he basically never stopped his quest of creating a better programming language and, every time he didn't fall in the trap of "improving" a previous design, instead he created a new, better design,  unlike C++ which is just C with a few improvements and "features" tacked on right and left to make it ++.  Of course, add things such as templates and metaprogramming to make it sound really "kewl" (and different of course - something that is very important to some C++ programmers.)  (to be fair, C++ is a much better language than C but, its foundation leaves much to be desired.) I maintain that the most difficult task in computer science is designing a _good_ computer language. ---------------------------------------------------------------------- MarkMLl · 2023-01-09 18:36 Quote from: 440bx on January 09, 2023, 07:22:56 pmI maintain that the most difficult task in computer science is designing a _good_ computer language. Even more difficult is persuading people that they want to use it. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-10 00:38 Quote I also refuse to be one of those people who latch onto some obsolete technology and insist that sooner of latter the World will see the error of its ways and start using it again.This is what people who don’t know pascal say everytime I try to talk to them about pascal  Tools can limit what you can do but what you want to do causes tools to be created. Even people without access to steel tools have been able to do some amazing things with wood because they were talented with sharpened stones. Quote I continue to use Object Pascal despite my misgivings about its shaky foundations, and despite what my research has turned up about Pascal's origins. And I continue to defend it, within limits, when confronted by people who only know Python and think that a 100Mb overhead for a "Hello, World!" is acceptable. But I'm not blind to its faults, and I refuse to pretend that I'm blind to them even at the expense of upsetting the core developers. 100mb sounds a bit bloated.... I’m definitely not blind to things in pascal that are hurdles to what I’m trying to do such as the color property not working for tpagecontrol Tabs and tbutton. However I don’t put myself in the same category as a non pascal user complaining that the compiler won’t prevent him from adding meters to seconds. Even though I’m responsible for the critique from ctk, one thing that I’ve encountered a lot is that of people who do not use fpc and will suffer no bad consequences offering unsolicited and often bad advice about how fpc and Lazarus should be changed in a manner which is quite analogous to this story. https://etc.usf.edu/lit2go/35/aesops-fables/648/the-man-the-boy-and- the-donkey/ It really doesn’t matter if their intentions are malicious or not they have no business criticizing something that is not their business and they most certainly should not be heeded. ---------------------------------------------------------------------- Scoops · 2023-01-10 00:56 Im old and think back to when 64k was enormous. tools help but eventually you need to know how to optimise  and speed up your code. no way a hello world that needs 100megs is getting near my computer. i love gettting every extra byte saved. probabably not normal but i like it. ---------------------------------------------------------------------- lainz · 2023-01-10 01:02 How many GB is your lazarus folder? Mine is 5GB so where is the 100mb is too much comes? 5 GB to get a hello world ---------------------------------------------------------------------- Scoops · 2023-01-10 01:08 totally correct cant fault it. im maybe missed some posts but when i write little apps its often toooooooo many mega for nothing. ide on the other hand needs that. to develop but shouldnt be excuse to be sloppy and not try to optimise. ---------------------------------------------------------------------- Scoops · 2023-01-10 01:13 often i dowload apps and seriously am dissapointed with the size for the results. still need ide but i ts better optimiser for people who dont have cable and fibre optic internet. i must be the only man who says smaller is better. ---------------------------------------------------------------------- 440bx · 2023-01-10 01:51 Quote from: Scoops on January 10, 2023, 02:13:47 ami must be the only man who says smaller is better. You're not.  In this forum, I have often made it a point that executable size is important.  That's one of the (many) characteristics I use to evaluate how good a compiler is.  The larger the executable, the greater the number of "inefficiencies" in the compiler. Unfortunately, it seems the number of programmers who consider executable size an important characteristic is dwindling... oh well. ---------------------------------------------------------------------- lainz · 2023-01-10 02:00 Don't get me wrong size matters. But get real as well 100mb is nothing. How many GB for AAA modern game, even for mobile? ---------------------------------------------------------------------- lainz · 2023-01-10 02:06 The game Cold War sizes 250gb. Genshin impact for Android is 4 gb. ---------------------------------------------------------------------- Scoops · 2023-01-10 02:15 Do i really need to say size doesnt matter, thankyou gents. Yes cold war, half thé size, when its cold is very good, half the size twice tne speed ---------------------------------------------------------------------- Scoops · 2023-01-10 02:30 do compressed 7~zip programs run better, or just expense of Ram and drive space, im off topic i need to sleep. Sorry ---------------------------------------------------------------------- 440bx · 2023-01-10 02:48 Quote from: lainz on January 10, 2023, 03:00:54 amBut get real as well 100mb is nothing. How many GB for AAA modern game, even for mobile? But is that code or data ?... 100mb of code is a LOT of code (at least from a decent compiler, it should be) For anything that requires a lot of "scenery", 100mb+ of data can be justified. I remember when a hard drive was 5mb and it wasn't very long ago that 80MB was considered large too (WinXP days.) Quote from: Scoops on January 10, 2023, 03:30:00 amdo compressed 7~zip programs run better, or just expense of Ram and drive space, im off topic i need to sleep. Sorry Compressing an executable makes little sense.  Today's hard drives are huge (multi-terabyte), it's difficult to see a case where compressing an executable can be reasonably justified. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-10 02:56 Quote from: Scoops on January 10, 2023, 02:13:47 amoften i dowload apps and seriously am dissapointed with the size for the results. still need ide but i ts better optimiser for people who dont have cable and fibre optic internet. i must be the only man who says smaller is better. There are more of us, just not in plain sight. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-10 03:10 Older computers are of good use to test out a program. If it runs fast on on old computer, it will run very fast on a fast computer. With the new hardware that runs so fast nowadays, it is hard to get a good feeling of how efficient is a piece of source code. It is possible that the programmers who haven't had the chance to work on older computers lack the perceptivity of how efficient their programs are when actually run. ---------------------------------------------------------------------- 440bx · 2023-01-10 03:50 Quote from: denis.totoliciu on January 10, 2023, 04:10:52 amOlder computers are of good use to test out a program. If it runs fast on on old computer, it will run very fast on a fast computer. With the new hardware that runs so fast nowadays, it is hard to get a good feeling of how efficient is a piece of source code. It is possible that the programmers who haven't had the chance to work on older computers lack the perceptivity of how efficient their programs are when actually run. I couldn't agree anymore. Personally, I develop on a 2.8ghz i860 which is about 1/2 the speed of today's average computer.  I actually recommend developing on a slower machine (like the one I use) because that way the programmer notices immediately when the program is getting a bit "too slow" instead of whenever the testing phase occurs.  Same reason why I also use older video cards. ---------------------------------------------------------------------- MarkMLl · 2023-01-10 08:46 Quote from: Joanna on January 10, 2023, 01:38:38 amQuote I also refuse to be one of those people who latch onto some obsolete technology and insist that sooner of latter the World will see the error of its ways and start using it again.This is what people who don’t know pascal say everytime I try to talk to them about pascal  It sounds suspiciously as though you're saying I don't know what I'm talking about... Quote Quote I continue to use Object Pascal despite my misgivings about its shaky foundations, and despite what my research has turned up about Pascal's origins. And I continue to defend it, within limits, when confronted by people who only know Python and think that a 100Mb overhead for a "Hello, World!" is acceptable. 100mb sounds a bit bloated.... This from Liam Proven: Quote> You remind me of something I looked at a while ago. > > I noted some things that might be quite doable in the browser, or as a > browser add-on. I had been looking for a reason to play with Python. I > don't really want to learn Javascript. So I discovered someone had > created a way to write Firefox plugins in Python. > > That sounds good, I thought. Just the ticket. > > I had a look. > > Yes, it was a tiny Javascript plugin that embedded an entire Python > interpreter and then another, bigger Javascript program that translated > Python calls to Firefox calls, and it would have to be embedded into > your addon. So your 2 kB Python addin would need a 300MB wrapper to > work, and would thus end up considerably larger than the browser itself. > > I am not sure now but they might have ported Python to Javascript in > order to do it. > > "Perhaps not, eh?" I thought as I metaphorically backed away. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-10 08:48 Quote from: lainz on January 10, 2023, 03:06:12 amThe game Cold War sizes 250gb. I didn't realise that any computers of that era had that much address space... MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-10 08:55 Quote from: 440bx on January 10, 2023, 03:48:45 amCompressing an executable makes little sense.  Today's hard drives are huge (multi- terabyte), it's difficult to see a case where compressing an executable can be reasonably justified. Actually, it's not as daft as it sounds. If the binary can actually be compressed to any significant extent, it can turn out significantly more efficient to load a comparatively small image into memory and then expand it since modern OSes rely heavily on caching and read- ahead buffering. On Linux some distreaux actually compress their swapspace for this reason, I've seen it used on a RaspberryPi-like board. https://www.linux-magazine.com/Online/Features/Swapping-with-zRAM MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-10 10:11 Actually, some older FPC versions came with executable compression (UPX) as a standard option in the distribution. I think it was 2.0.0- 2.4.0, about that era. Of course UPX will still work, but it is no longer provided by FPC. (Mea culpa: I was one of the few that suggested to drop it to Florian and for very good reasons: too many false positives, cheap memory and storage, you know the list). The underlying compression libraries used by UPX and written by the same team have very good FPC support, btw. So if you want to compress your executable simply download UPX. It is an old friend. But be prepared to accept that your malware protection may not like it, although the current UPX website states that most malware solutions nowadays accept UPX packed executables and dynamic libraries as not being a threat persé and simply decompress to check. (See QR code) ---------------------------------------------------------------------- Joanna · 2023-01-10 23:26 Quote It sounds suspiciously as though you're saying I don't know what I'm talking aboutI didn’t say anything of the sort. Why are you are putting words in my mouth ? On the topic of using resources I’ve found that it takes quite a bit of effort to design things that aren’t inefficient. In the case of code for accessing an sql database, I made some code that worked great for a small test database and then I tried it with a real large database and the program locked up and it took months to redo it so it would work again. If I had it to do over again I would have started with a large database to begin with. ---------------------------------------------------------------------- VisualLab · 2023-01-11 15:04 Quote from: 440bx on January 09, 2023, 07:22:56 pmQuote from: VisualLab on January 09, 2023, 06:42:32 pmThis is because (usually) developers don't want to break what already works, That's probably one of the worst characteristics of human nature, the tendency of being "stuck" with what already works, it is very damaging to making progress.  It's great that it works but, it doesn't mean it cannot be made better or that there aren't better, completely different solutions. But can it always be improved? Will there never be difficulties such that it is very difficult/expensive or even impossible to overcome or work around them? Quote from: 440bx on January 09, 2023, 07:22:56 pmQuote from: VisualLab on January 09, 2023, 06:42:32 pmand they don't want to break backward compatibility either, The other scorpion on the frog's back. Hmmm. It all depends on what backward compatibility is about. And for how long will it be supported? After 50 years, probably some features/rules/elements of the language can be skipped. I am in favor of straightening out some very old quirks of Pascal. But with C, I don't imagine these quirks will ever be straightened out. What could that mean in practice? For example, that C will be removed: header files, preprocessor (or at least: define), way of writing pointers, crappy build systems (e.g. CMake) that require manual sculpting of scripts, etc. If that were to happen, then it wouldn't be C any more. Anyway, people around Rust make it clear that improving C has hit a wall. Not only is there no will to improve C, on the contrary, the overwhelming majority of C users categorically do not wish this. They believe that C is close to perfect (e.g. the one that showed "fuck you" to the board of nVidia at one conference ---------------------------------------------------------------------- marcov · 2023-01-11 15:29 Quote from: MarkMLl on January 10, 2023, 09:55:55 amQuote from: 440bx on January 10, 2023, 03:48:45 amCompressing an executable makes little sense.  Today's hard drives are huge (multi-terabyte), it's difficult to see a case where compressing an executable can be reasonably justified. Actually, it's not as daft as it sounds. If the binary can actually be compressed to any significant extent, it can turn out significantly more efficient to load a comparatively small image into memory and then expand it since modern OSes rely heavily on caching and read- ahead buffering. If you believe that, then simply turn on compression on your filesystem. No need to modify the binary, and risk shoddy programming in the packers and their depack code. (as most are). So while your point is true, it practically only for when the storage is very slow or high latency, like computers that run from an (old) SD card, or off-site network drives or cdrom drives (UNIONFS!).  Most modern storage types read large buffers directly into DMA in one go.  Exe packers are simply an old solution to the problem, not necessary the right one. ---------------------------------------------------------------------- VisualLab · 2023-01-11 15:31 Quote from: MarkMLl on January 09, 2023, 07:36:31 pmQuote from: 440bx on January 09, 2023, 07:22:56 pmI maintain that the most difficult task in computer science is designing a _good_ computer language. Even more difficult is persuading people that they want to use it. MarkMLl It varies sometimes. Just trace the history. Take a language whose descendants dominate and is itself still intensively used. That is: C. It was created a few years after Pascal, with which it competed. Could its creator have proposed to improve it? He could. Because there were those who tried to improve Pascal. But he didn't want to do that. Instead, he preferred to create his own language. Not because Pascal was flawed, because he could have joined those who tried to improve Pascal. For one thing, he wanted to shine, to become known. And joining did not give about such an opportunity. Secondly, he had his own vision of the language. And was that language so great? Average at best. But the umbrella of corporations helped a lot in promoting C. Without it, probably few people would be using C today. But the technological debt created over the years guarantees this monstrosity a long life yet. And, as is well known, he who has power or money (or both - that is, a rich company, "having the OS in its hands") is best at convincing. And the history of computing shows that there have been at least a few such "persuasions" over these 50 years. The truth is that people are not persuaded. People are forced (not necessarily by violence). For corporations, technology is very often secondary. What is important is getting back the money invested and mastering as much of their industry as possible. That's why companies promote various, sometimes crappy solutions. Hardly, it's not just companies that do this, other groups do too. But I don't want to start a war and come off as an "open source heretic"... ---------------------------------------------------------------------- VisualLab · 2023-01-11 15:39 Quote from: lainz on January 10, 2023, 02:02:08 am5 GB to get a hello world  Really? And that's all "Hello world" allows you to get? The "creation machine" can be extensive. Worse than the product of this machine is bloated ---------------------------------------------------------------------- VisualLab · 2023-01-11 15:46 Quote from: lainz on January 10, 2023, 03:00:54 amDon't get me wrong size matters. But get real as well 100mb is nothing. How many GB for AAA modern game, even for mobile? Holy truth. But above all, it is the data that takes up so much space (3D models, textures, audio, music, text, scripts that control bots, etc.). The nicer the game looks, the more such data it must contain. And if we look at engineering programs (e.g. Autosdesk Inventor, Altium Designer), they also contain a lot of data (material libraries, specifications of integrated circuits, etc.). This data is often stored in a database. And from such a database, the program extracts the necessary data during operation. ---------------------------------------------------------------------- 440bx · 2023-01-11 16:16 Quote from: VisualLab on January 11, 2023, 04:04:43 pmBut can it always be improved? I will qualify the answer to that question, it is: currently _yes_, because we are really quite far from what could be legitimately considered all-around good. As far as getting people to use a good, well designed language, it looks like, currently, a language being good and well designed isn't the reason most programmers use a language. ---------------------------------------------------------------------- WooBean · 2023-01-11 16:31 Quote from: 440bx on January 11, 2023, 05:16:41 pm... a language being good and well designed isn't the reason most programmers use a language. Rarely expressed TRUTH! Enyway, why are types sometimes interchangeable? Because it is a matter of choice. At the begining (of Pascal) it was much important to evaluate math expressions entered in a 'natural/common' way and it is not easy to change this approach just now. ---------------------------------------------------------------------- Bogen85 · 2023-01-11 17:39 Quote from: Joanna on January 11, 2023, 12:26:32 amQuote It sounds suspiciously as though you're saying I don't know what I'm talking aboutI didn’t say anything of the sort. Why are you are putting words in my mouth ? Joanna, please look at the context in which Mark said that. Quote from: MarkMLl on January 10, 2023, 09:46:15 am Quote from: Joanna on January 10, 2023, 01:38:38 am Quote I also refuse to be one of those people who latch onto some obsolete technology and insist that sooner of latter the World will see the error of its ways and start using it again. This is what people who don’t know pascal say everytime I try to talk to them about pascal  It sounds suspiciously as though you're saying I don't know what I'm talking about... So the argument Mark is making (that he is refusing also refuse to be one of those people who latch onto some obsolete technology and insist that sooner of latter the World will see the error of its ways and start using it again) is also an argument I've consistently been trying to make. So when you are confronted by others who say that, you don't seem to understand where they are coming from, and the numerous completely valid reasons they have for not using Pascal. Please correct me if what you don't seem to sufficiently understand is actually not the case. Quote from: MarkMLl on January 10, 2023, 09:46:15 amI continue to use Object Pascal despite my misgivings about its shaky foundations, and despite what my research has turned up about Pascal's origins. And I continue to defend it, within limits, when confronted by people who only know Python... I fall into the category as well, and do defend Pascal. The current form of Pascal (in the context of this discussion, specifically free Pascal) in today's computing environments has some extreme flaws (extreme is relative, it depends on the individual and what their programming needs are) and both Mark and I have often tried to point out those flaws. But in the context of modern computing Free Pascal has numerous good qualities. It is more suitable in some situations to be used in cloud containers over languages like Python and especially Java. It has other reasons why it can be favored over Python specifically, and I created a whole topic thread recently going into that in depth. But back to the flaws, they exist for a variety of reasons, and Mark has discussed those numerous times. Some are due to original design flaws in the language, others are due to resistance to evolve Free Pascal in some areas where it could be evolved in a clean manner. As I said, Mark has gone over this many times. I understand those flaws and know that when I use Free Pascal I must work around them, or find ways of doing things that mitigate those flaws, or do things in a way to make those flaws a non-issue. Not everyone is willing, able, or has the time/ambition/desire to work around those flaws, for a variety of valid reasons. I will advocate for the usage of Pascal, specifically Free Pascal, for a variety of reasons. But I understand when other programmers have reservations or will not be convinced they should be using Pascal. I have used and continue to use many other programming languages. Some have features I would really like Free Pascal to have. However, they usually have many anti-features that Pascal does not possess, which is why I use Free Pascal when I can instead of those languages. I'm not faulting the Free Pascal developers here. They are doing a great job. It is not easy  to determine how the free pascal implementation of pascal should evolve, and they have evolved in it some areas. The current development branch has features that the stable branch does not have, and I use and appreciate those features. One thing I can definitely count on from the developers is that it is extremely unlikely they will introduce any of the undesirable anti- features I encounter in other programming languages. And in the extreme case where they might, from their track record, those anti- features would likely be optional and not forced upon me. Being able to count on this is one of the reasons I choose to use Free Pascal. Given the choices of programming tools and environments I have, my choice to use Pascal is because I consider it be the best of a bad bunch of programming languages. And I mean that in a good way. It could be better, but as I said, I have to work with its current limitations. But "best" is a relative term. Not everyone learned Pascal early in their programming career, or when they first got into programming. I learned Pascal within the first 2-3 years of learning to program, I'd already learned Basic, 8085 Assembler, and C before I learned Pascal. So when others are confronted with being persuaded to use Pascal, it can be a very tough sell for many. They have their valid reasons. And Quote I also refuse to be one of those people who latch onto some obsolete technology and insist that sooner of latter the World will see the error of its ways and start using it again. is a completely valid and justifiable sentiment to possess, whether it is coming from a Pascal advocate, or from someone who is likely not going to be convinced to use Pascal. ---------------------------------------------------------------------- MarkMLl · 2023-01-11 18:27 Quote from: Bogen85 on January 11, 2023, 06:39:03 pmplease look at the context in which Mark said that. I don't like saying it, but an inability or refusal to go back through a discussion might be symptomatic of an unquestioning devotion to modes of communication which lack the concept of threaded messages and sacrifice context on the altar of immediacy. Like many other people, I've been reading a bit about Mastodon recently. I note from that that it /does/ support threaded messages: something which my 30+ years of using this type of medium (CIX, Usenet, mailing lists and so on) suggests is incredibly useful for coherent discussion. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-11 19:54 Quote from: Bogen85 on January 11, 2023, 06:39:03 pm Quote I also refuse to be one of those people who latch onto some obsolete technology and insist that sooner of latter the World will see the error of its ways and start using it again. is a completely valid and justifiable sentiment to possess, whether it is coming from a Pascal advocate, or from someone who is likely not going to be convinced to use Pascal. Actually, there are certain areas of obsolete technology which I am very happy to argue are, in some way, still relevant. For example, I find the APL operator set and the number of mathematical transforms it can encode interesting. But because of its unconventional right-to-left evaluation order (and to a much smaller extent its unconventional character set) I'm sympathetic with people who denigrate it. But I came across a letter recently which argued that if it had used sufficiently-strong typing the evaluation order issue would have been largely irrelevant... And even though it also has an unconventional evaluation order (strict left-to-right) I admire Smalltalk, which is often cited as important for the wrong reasons. I use one of Schorre's metacompilers (Meta-2, somewhat modified), and seem to be putting myself in a position where I need to put time into its successors. That should xref a discussion recently of whether there was a formal description of FPC buried in its implementation (there isn't, but if there were it would make consideration of a preprocessor to handle things like += far more simple). And I admire a couple of antique mainframes and their OSes (Burroughs B5500 and IBM VM/370) on account of what they were able to do with limited resources. But I am under no illusion at all that any of these are suddenly going to supplant existing practice. MarkMLl ---------------------------------------------------------------------- denis.totoliciu · 2023-01-11 22:43 {$MODESWITCH} and {$MODE} can be very useful for promoting new language features and also for demoting and, at some point, removing problematic ones. Basic guidelines for attracting people to programming using FPC: you have to listen to what people have to say and avoid shutting them off, be it that you like what they are saying or not; and especially if they are people with a lot of programming experience in any programming language;every programming language has its ups and downs and you have to be fair and admit them both, not only the ups;stating out a (potential) problem of FPC with decent sincerity will: create some unpleasantry, which is a great start for debate and real discussion;give a better sense and grasp of where FPC stands out in the world in real life usage scenarios;long and decent discussions on a particular problem that FPC might have are worthwhile: let's learn from programming history what was interesting, what worked, what not, what is time-tested, regardless whether we like it or not;let's learn from how Borland and Embarcadero failed to listen to their user-base so many times;everyone who writes about FPC can be counted as being interested in the language, even though they might right rubbish at times or have a harsher approach to describing the situation as they see it;some FPC programmers are more trendy, others more old-school, but the common thing to all of them FPC programmers is FPC itself; and I think each of them, in their own mind, wants their tool to be better and to have it working nice and why not to consider it cool in their own right; ---------------------------------------------------------------------- Joanna · 2023-01-11 23:42 Quote it looks like, currently, a language being good and well designed isn't the reason most programmers use a language. It often seems that way Quote And was that language so great? Average at best. But the umbrella of corporations helped a lot in promoting C. Without it, probably few people would be using C today. But the technological debt created over the years guarantees this monstrosity a long life yet. And, as is well known, he who has power or money (or both - that is, a rich company, "having the OS in its hands") is best at convincing. And the history of computing shows that there have been at least a few such "persuasions" over these 50 years. The truth is that people are not persuaded. People are forced (not necessarily by violence). For corporations, technology is very often secondary. What is important is getting back the money invested and mastering as much of their industry as possible. That's why companies promote various, sometimes crappy solutions. The sad thing is that there are so many people who are clueless about this and just assume that c is a superior language just because corporations are sponsoring it. It’s ultimately corporations who decide what language their projects will be written in and thus Proficiency in which programming languages will provide paying jobs. Corporations also have far too much influence over many other things in addition to programming languages. Most people don’t care to think about possible long term consequences and just do what seems like the easiest most popular thing at the moment. ---------------------------------------------------------------------- 440bx · 2023-01-12 00:34 By any measure, C is a rather sorry programming language but, there are two things about it that (on occasion, more than ?) compensate for all its flaws. The first thing is, it proved, very early, that in spite of being a lousy language, it was possible to use it to write a flexible and powerful operating system.  That was crucial. The second thing, which is intimately related to the first one, is that while the design of the language is downright atrocious, the language has a very good mix of features (note: that doesn't mean their implementation was good, more often than not, it wasn't and still isn't.) It's also worth noting that most everyone is aware that C is "less than ideal" when it comes to application development, which is the reason why many other languages have been created.  This is particularly true for any programmer who isn't interested in writing very low level code (which is the area where C does reasonably well.) ---------------------------------------------------------------------- sketch · 2023-01-12 00:59 While C might be considered a poor language today and have design problems, that wasn't the case in 1972. C was faster than ALGOL and was able to do low-level things better than ALGOL. It is still very flexible and widely used for embedded devices and IOT. C will probably be the last programming language still standing. ---------------------------------------------------------------------- VisualLab · 2023-01-12 01:15 Quote from: denis.totoliciu on January 11, 2023, 11:43:46 pm{$MODESWITCH} and {$MODE} can be very useful for promoting new language features and also for demoting and, at some point, removing problematic ones. The idea is good. Currently, maybe the only sensible one to implement. But how to convince programmers of compiler? Quote from: denis.totoliciu on January 11, 2023, 11:43:46 pmyou have to listen to what people have to say and avoid shutting them off, be it that you like what they are saying or not; and especially if they are people with a lot of programming experience in any programming language This is quite controversial. An Aesop fable immediately comes to mind. Listening to everyone is a complicated and controversial issue. It requires a really good analysis (sifting) of what people say/write. People have very different opinions, caused by various motives (sometimes stupid, sometimes malicious, much less well thought-out and impartial). And some improvement ideas or critical thoughts may be driven by personal expectations and desires, not necessarily good for the general public. Either way, you can't please everyone. You have to stick to a certain set of features and implement it. It seems to me that the first thing to consider is the introduction of those proposals that come from the current Pascal community, and careful and balanced introduction of new elements to the compiler. Quote from: denis.totoliciu on January 11, 2023, 11:43:46 pmlet's learn from programming history what was interesting, what worked, what not, what is time-tested, regardless whether we like it or not Well, yes. But it is not always easy to distinguish what is proven from what is defective. In addition, divergent expectations and needs of people are a problem. Finally, what is good for one is not always so good for another. Quote from: denis.totoliciu on January 11, 2023, 11:43:46 pmlet's learn from how Borland and Embarcadero failed to listen to their user- base so many times This is what most companies (let's be precise: company management) do. That's what Microsoft and Sun Microsystems did. Only M$ is big and very rich. Meanwhile, Sun Microsystems overdid it and ended up like Borland. In fact, Borland ended up worse off because it had less money and "family silver" to "sell" than Sun. Besides, the "sins" of Borland's management were probably greater than those of Sun's management, i.e. more greedy and stupider (Borland of course). And is Embarcadero's leadership more forward-thinking than Borland's leadership of the past? I have doubts. Maybe ecological* concerns could drive people to reuse languages compiled to machine code. And since C and C++ don't have very ergonomic build tools, that leaves Pascal. But that's a pretty vague hope. I mean trying to push the snake out of its convenient socket. *) CPU load, RAM consumption, computer power consumption - someone on this forum once quoted an article that described these issues. ---------------------------------------------------------------------- Joanna · 2023-01-12 01:19 Quote The first thing is, it proved, very early, that in spite of being a lousy language, it was possible to use it to write a flexible and powerful operating system.  That was crucial. Is there any way to to add low level programming capabilities to pascal to make it easier to create operating systems as well as c? ---------------------------------------------------------------------- Bogen85 · 2023-01-12 01:28 Quote from: Joanna on January 12, 2023, 02:19:22 amQuote The first thing is, it proved, very early, that in spite of being a lousy language, it was possible to use it to write a flexible and powerful operating system.  That was crucial. Is there any way to to add low level programming capabilities to pascal to make it easier to create operating systems as well as c? From what I know of Pascal's history, those things are were added already to Pascal in the 80s and 90s, after Unix had become a success using C. ---------------------------------------------------------------------- sketch · 2023-01-12 01:34 Most of Apple's classic Mac OS and Lisa OS was written in Pascal. Lilith was fully written in Modula-2. The Oberon OS was entirely written in Oberon the language. https://wiki.freepascal.org/Operating_Systems_written_in_FPC ---------------------------------------------------------------------- ctk · 2023-01-12 02:00 Quote from: denis.totoliciu on January 10, 2023, 04:10:52 amOlder computers are of good use to test out a program. If it runs fast on on old computer, it will run very fast on a fast computer. I often test my software on old hardware. But be warned that your idea is actually not correct: for example, xterm runs faster on an AMD K6-333 than urxvt, but it's urxvt that runs faster than xterm on a 900MHz PIII. Quote from: Joanna on January 09, 2023, 04:19:56 pmIt takes actual experience to find out what really is important. Though you will never believe it in this life, experience is not the only way to reach that. Quote from: VisualLab on January 12, 2023, 02:15:57 amListening to everyone is a complicated and controversial issue. Complex, not complicated. If you deal with it like it is complicated, you will never extricate yourself out of it. Quote from: VisualLab on January 12, 2023, 02:15:57 amPeople have very different opinions, caused by various motives (sometimes stupid, sometimes malicious, much less well thought-out and impartial). Everything that is arbitrary and clashes with some form of regularity has to be dismissed for sure. Otherwise, you will fall head first into complication, raising the complexity to levels that, forget humanly, are not even mathematically manageable. Quote from: VisualLab on January 12, 2023, 02:15:57 amEither way, you can't please everyone. This blanket claim comes with no evidence whatsoever. Hitchen's razor applies: "what can be asserted without evidence can also be dismissed without evidence." Quote from: VisualLab on January 12, 2023, 02:15:57 amIt seems to me that the first thing to consider is the introduction of those proposals that come from the current Pascal community, and careful and balanced introduction of new elements to the compiler. Could it be that you are amalgamating a community and a technology? Perhaps by Conway's law. Which can be completely sidestepped by using orthogonal abstractions in language design, maximizing the number of abstract symmetries at each occasion. Quote from: VisualLab on January 12, 2023, 02:15:57 amWell, yes. But it is not always easy to distinguish what is proven from what is defective. Sorry to be blunt, but that means you're doing it wrong. Leslie Lamport will tell you that mathematical elegance is the ultimate key to this. Quote from: VisualLab on January 12, 2023, 02:15:57 amIn addition, divergent expectations and needs of people are a problem. Finally, what is good for one is not always so good for another. Again, this comes with no backing or evidence. I can most likely refute any example you will produce, by providing a solution that pleases all. Quote from: VisualLab on January 09, 2023, 06:42:32 pmQuote from: ctk on January 09, 2023, 02:11:26 amThis quote was taken from this description of what appears to be a fine language (answering your earlier request to see one): https://borretti.me/article/introducing-austral Yes. However, if the language starts to be used more widely, people start to have higher expectations. So the creators are expanding it more and more. After many years, such a language is no longer a small, neat, simple language, but a powerful and, unfortunately, also complicated and convoluted (C++, Java, Object Pascal). This is because (usually) developers don't want to break what already works, and they don't want to break backward compatibility either, so new features have to match existing ones. This process is stretched over time. So it was with C. So it was with Pascal. So it was with Java. This has been (and will continue to be) the case with Python. And that's what will happen to Rust someday. A separate issue are the features that were controversial at the stage of the original design. Later warts only exacerbate these problems. This happens when growth is not engineered through abstract symmmetry. Quote from: VisualLab on January 09, 2023, 06:42:32 pmBut they, the new creators, will surely create a better language. And this is an illusion. They will end up just like those earlier language makers. Their language after many years (if it survives) will also be "bloated" and full of quirks. Your fallacy is that because others failed at X before, X is impossible. For instance, a language that allows escaping into an alternate syntax for the duration of an expression does not suffer from these issues. Though you said you didn't want to dent anything or anyone, you're actively, though perhaps accidentally, working towards that. If someone's way of life, at the most fundamental level, puts obstacles in my way, tough involuntarily, should I consider this person my enemy? ---------------------------------------------------------------------- 440bx · 2023-01-12 03:21 Quote from: sketch on January 12, 2023, 01:59:27 amWhile C might be considered a poor language today and have design problems, that wasn't the case in 1972. Whether 1972 or 3072, things like having "=" for assignment and "==" for comparison is extremely poor design in a language that allows assignments within expressions and, that's one of _many_, very _many_ design flaws in the language. To be fair, I believe the main reason for the absurdly poor design of the C language is that it had to fit in less than 8K of memory.  I believe (at least hope) that the authors could have done (and would have done) a better job had they had more memory available. Quote from: Joanna on January 12, 2023, 02:19:22 amIs there any way to to add low level programming capabilities to pascal to make it easier to create operating systems as well as c? FPC in particular comes maddeningly close to having them.  It so close that even without them it is possible to write an O/S with it (but with more work because of the missing features.) ---------------------------------------------------------------------- sketch · 2023-01-12 03:56 Quote from: 440bx on January 12, 2023, 04:21:01 amTo be fair, I believe the main reason for the absurdly poor design of the C language is that it had to fit in less than 8K of memory.  I believe (at least hope) that the authors could have done (and would have done) a better job had they had more memory available. Ken Thompson along with Dennis Ritchie created C. Thompson is also one of the creators of Go. Do you think that Thompson, Robert Griesemer, and Rob Pike have learned from mistakes in C and C++? ---------------------------------------------------------------------- 440bx · 2023-01-12 04:16 Quote from: sketch on January 12, 2023, 04:56:21 amDo you think that Thompson, Robert Griesemer, and Rob Pike have learned from mistakes in C and C++? Yes, I think they have. (NOTE: my knowledge of Go is extremely basic.) I also think they could have learned even more than they did but, I do want to give them credit for making progress in the right direction.  Another few hundred miles in that direction and we'll have to add one to the number of well designed programming languages. ---------------------------------------------------------------------- MarkMLl · 2023-01-12 08:45 Quote from: sketch on January 12, 2023, 01:59:27 amWhile C might be considered a poor language today and have design problems, that wasn't the case in 1972. C was faster than ALGOL and was able to do low-level things better than ALGOL. It is still very flexible and widely used for embedded devices and IOT. That is not true. /Some/ implementations of C might be faster than /some/ implementations of ALGOL, and C usefully defined some things as "implementation-specific but we expect them to behave like this" that ALGOL- at least ALGOL-60- ignored. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-12 09:00 Quote from: Joanna on January 12, 2023, 02:19:22 amIs there any way to to add low level programming capabilities to pascal to make it easier to create operating systems as well as c? In part, that's part of the points that I'm trying to make. Object Pascal can be used to write a kernel with probably no more assembler than UNIX had when first written in C, but the language as defined by Wirth isn't really suitable. I've /done/ this stuff, and I'd prefer it if you listened rather than simply saying that I disagree therefore can be disregarded or denigrated (can I even use that word these days?). When writing a protected-mode x86 kernel for bare metal I used Modula-2. Leaving aside the improved syntax and stronger static type checking, I was able to map coroutines straight onto thread switching (learning from my earlier experiments with OS/2) and relatively easily (no more than a man-year's work) get to the point where it could report the cause of errors without external hardware support (logic analyser). I did, however, find a major problem with dynamic types: the language had no way of defining at a low-level that a block of data (e.g. representing a network message) now contained N valid bytes and an attempt to overrun that was a severe error. Object Pascal obviously has dynamic strings/arrays, but as things stand they grossly over-use the heap. Oh, and even in Modula-2 which was designed as a systems-programming language Wirth left loose ends, for example he forgot to define whether bit zero of a bitset was LSB or MSB. Perhaps he was more thorough in Oberon which was again intended for systems programming. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-12 09:04 Quote from: sketch on January 12, 2023, 02:34:39 amMost of Apple's classic Mac OS and Lisa OS was written in Pascal. Lilith was fully written in Modula-2. The Oberon OS was entirely written in Oberon the language. https://wiki.freepascal.org/Operating_Systems_written_in_FPC And for that matter the UCSD operating system was written in UCSD Pascal (underpinned by a relatively small interpreter... "virtual machine" was the term commonly used in those days. Oh, and Cray used it as a systems language. /However/, none of these are Pascal "as defined", and the necessity of tacking stuff onto Pascal to make it usable at a low level has very much detracted from its "small-language" roots. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-12 09:21 Quote from: ctk on January 12, 2023, 03:00:08 amThis happens when growth is not engineered through abstract symmmetry. However, when one hits the Real World things can be problematic. As an example, consider the ALGOL-60/Pascal predilection to the "dangling else" problem, which I will illustrate for Joanna's benefit: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i if condition1 then    if condition2 then        action2Telse    action1F;  Absolutely everybody, from 1958 onwards, has fallen into that trap. So ALGOL-68 and later Modula-2 changed the syntax: Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i if condition1 then    if condition2 then        action2T    else        action1F    endend  You can now see trivially that action1F is in the wrong place. The reason for this problem is that ALGOL-60 syntax defines  if...then [ else ]  while ALGOL-68 defines  if...then [ else ] end  in all cases. However the ALGOL-60 syntax is symmetric when it comes to using an expression rather than a statement, hence  := if...then else ... and when looking at that it's patently obvious that requiring a terminating end is ludicrous. QuoteFor instance, a language that allows escaping into an alternate syntax for the duration of an expression does not suffer from these issues. I agree, and I believe that multiline literal strings (e.g. to contain SQL) are at least being considered by the core team. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-12 09:24 Quote from: sketch on January 12, 2023, 04:56:21 amKen Thompson along with Dennis Ritchie created C. Thompson is also one of the creators of Go. Do you think that Thompson, Robert Griesemer, and Rob Pike have learned from mistakes in C and C++? Yes, but to some extent they're still constrained by the expectations of the broader programming community. I'd also note that Thompson has been publicly critical of Python's use of significant indentation rather than explicit block markers. MarkMLl ---------------------------------------------------------------------- winni · 2023-01-12 09:42 Quote from: MarkMLl on January 12, 2023, 10:04:11 am And for that matter the UCSD operating system was written in UCSD Pascal (underpinned by a relatively small interpreter... "virtual machine" was the term commonly used in those days. Oh, and Cray used it as a systems language. Hi! Yes, the interpreter for the p-machine ("System.interp") was written in Asssembler. You only had to addapt that for a different system. All other parts of the UCSD OS stayed unchanged. That fact made the UCSD system available on more than 80  systems including Apple ][, PC DOS, DEC PDP 11 and VAX, Atari ST, Berkley Unix,  Stride 400 and 600 (Multi-User!) and much more. Later Derek Jones rewrote the interpreter in C which made the port to other machines more easier. Winni ---------------------------------------------------------------------- Joanna · 2023-01-12 13:22 Quote As an example, consider the ALGOL-60/Pascal predilection to the "dangling else" problem, which I will illustrate for Joanna's benefit: Code: Pascal  [Select] if condition1 then     if condition2 then         action2T else     action1F; [/code] Absolutely everybody, from 1958 onwards, has fallen into that trap I don’t see a dangling else problem I see a bad formatting problem which is visually misleading. It it was my code it would look like this Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i  if condition1    then if condition2              then action2T           else action1F; Else is only used if condition1 is True and condition2 is false else is only paired with previous then Code: Pascal  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i  Your formatting implies that you wanted to do this[code=pascal] if condition1    then begin          if condition2 then action2T;        End    else action1F;  So a few operating systems have been made in pascal How do they differ than those made in c? Quote Listening to everyone is a complicated and controversial issue. It requires a really good analysis (sifting) of what people say/write. People have very different opinions, caused by various motives (sometimes stupid, sometimes malicious, much less well thought-out and impartial). And some improvement ideas or critical thoughts may be driven by personal expectations and desires, not necessarily good for the general public. Either way, you can't please everyone. You have to stick to a certain set of features and implement it.Well the good thing about fpc being open source is that we really don’t need to fight over features. We can all modify and use our code as we see fit . From a personal standpoint I pretty much disregard gripes from people who don’t like pascal enough to use it for serious pascal programs and this cuts Down on the noise considerably. After that there will still be people demanding things that aren’t a good idea or even possible these can just be ignored. The most common thing people probably want after this is new features like other languages have or things to improve performance. This is where sensible people steering the project comes into play. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-13 00:08 My point was that you have to listen to the community in the following sense: it is the main channel of feedback for FPC usage, hence this forum does a great job as a platform for it;you don't have to do what everyone says;there is no obligation to respond to everyone;you don't have to implement what everyone says;through listening you can get the pulse of the community, which is very important, Joanna, since you are mainly the one who is complaining massively that at least the FPC IRC community is too small and you desire it to be very large;after listening, programmers can discuss and filter out the things that are good from the ones that are not that good;it helps in realizing consciously, in time, for each of us, what are some of the really important traits of FPC that make programmers stick to it and hence to form/keep the community together; You are all right about the problems that might arise with the process of listening and it is for sure not an easy thing to do. At the same time, it will make us all: better programmers;have more patience with ourselves and with the development of FPC;more compasionate about how FPC works, where it should go further;stick together in a community with less harsher and hyper-sensitive feelings; ---------------------------------------------------------------------- Joanna · 2023-01-13 00:51 Quote through listening you can get the pulse of the community, which is very important, Joanna, since you are mainly the one who is complaining massively that at least the FPC IRC community is too small and you desire it to be very large; When it comes to irc it’s not really size of channel that makes it good it’s the quality of the chat in the channel. There are plenty of large channels that are full of very poor quality off topic chatter because they have incompetent/absent moderators. Channels with hundreds of people who never talk are even worse. When it comes to who should be in #fpc Channel, the description is quite simple. We need friendly helpful people who enjoy writing applications in pascal. Maybe it’s time for you to stop boycotting Libera and rejoin us on IRC there are some new members for you to meet. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-13 01:20 Quote from: Joanna on January 13, 2023, 01:51:34 amMaybe it’s time for you to stop boycotting Libera and rejoin us on IRC there are some new members for you to meet. I do not feel any need to join The Fobidden Network. Stop flaming programmers, Joanna. It is a good way to get a chance to gain more respect from the people around here and on IRC. The Pascal community is not only in the places where you want it to be. Please remember that Free in the Free Pascal Compiler name. ---------------------------------------------------------------------- VisualLab · 2023-01-13 22:35 Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: Joanna on January 09, 2023, 04:19:56 pmIt takes actual experience to find out what really is important. Though you will never believe it in this life, experience is not the only way to reach that. You say so (but I don't know if it's true). Share your unfathomable knowledge and enlighten us little ones: what are these other ways. I'm really curious about it. If you tell us what the other way is, I'm sure I'll believe it. I also want to achieve IT nirvana Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amListening to everyone is a complicated and controversial issue. Complex, not complicated. If you deal with it like it is complicated, you will never extricate yourself out of it. "This blanket claim comes with no evidence whatsoever." (as one very perspicacious philosopher said). I still stand by my view on listening to everyone: it's complicated (and often controversial). That doesn't mean you don't have to untangle it Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amPeople have very different opinions, caused by various motives (sometimes stupid, sometimes malicious, much less well thought-out and impartial). Everything that is arbitrary and clashes with some form of regularity has to be dismissed for sure. Otherwise, you will fall head first into complication, raising the complexity to levels that, forget humanly, are not even mathematically manageable. Wait a minute? And who ever said, "If you deal with it like it is complicated, you will never extricate yourself out of it"? Hmm? Own goal during a match? Oh, one more thing: "complications, ... that, ... are not even mathematically manageable." Can I ask for some evidence? Or maybe two razors should be used here: Hitchens and Ockham? Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amEither way, you can't please everyone. This blanket claim comes with no evidence whatsoever. Hitchen's razor applies: "what can be asserted without evidence can also be dismissed without evidence." I personally prefer Hitchens’s razor (Christopher Besides, I still believe that you can't please everyone. This is not based on academic research. life experience (everyone has one). And I have proof: I do not agree with your statements. Ergo: it's impossible to please everyone Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amIt seems to me that the first thing to consider is the introduction of those proposals that come from the current Pascal community, and careful and balanced introduction of new elements to the compiler. Could it be that you are amalgamating a community and a technology? Perhaps by Conway's law. Which can be completely sidestepped by using orthogonal abstractions in language design, maximizing the number of abstract symmetries at each occasion. Beautiful, poetic, baroque... sophisms. I have nothing against Conway's right. More than that, I rather agree with him. Examples: Windows and Linux. Both perfectly confirm this law. However, I am an IT heretic and I prefer Windows Also because I see no reason to identify a company product with company management. Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amWell, yes. But it is not always easy to distinguish what is proven from what is defective. Sorry to be blunt, but that means you're doing it wrong. "This blanket claim comes with no evidence whatsoever." (again quoting the famous philosopher I still stand by my view on the issue of distinguishing what is really proven from what someone thinks is proven. So once again (simpler): there are cases that are easy to find, there are average cases, but there are also difficult ones. I didn't say you don't need to analyze it. Quote from: ctk on January 12, 2023, 03:00:08 amLeslie Lamport will tell you that mathematical elegance is the ultimate key to this. Reveal the veil of secrecy. Share your knowledge with your neighbor (even if that neighbor has not achieved mathematical nirvana Besides, Leslie Lamport is a cool guy because he made LaTeX He's so non-hipster in the picture He doesn't have a strange beard like a lumberjack-assassin from the Alamut area I mean, he has a beard, but it's plain, without mathematical complication Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amIn addition, divergent expectations and needs of people are a problem. Finally, what is good for one is not always so good for another. Again, this comes with no backing or evidence. I can most likely refute any example you will produce, by providing a solution that pleases all. Well, do it instead of writing hollow phrases. I have no hesitation to: (a) admit that someone is right and (b) admit to my own lack of knowledge (but after giving specific arguments). If you don't give them, I give you a loyal warning: I've already sharpened both Hitchens and Ockhcam razors Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 09, 2023, 06:42:32 pmQuote from: ctk on January 09, 2023, 02:11:26 amThis quote was taken from this description of what appears to be a fine language (answering your earlier request to see one): https://borretti.me/article/introducing-austral Yes. However, if the language starts to be used more widely, people start to have higher expectations. So the creators are expanding it more and more. After many years, such a language is no longer a small, neat, simple language, but a powerful and, unfortunately, also complicated and convoluted (C++, Java, Object Pascal). This is because (usually) developers don't want to break what already works, and they don't want to break backward compatibility either, so new features have to match existing ones. This process is stretched over time. So it was with C. So it was with Pascal. So it was with Java. This has been (and will continue to be) the case with Python. And that's what will happen to Rust someday. A separate issue are the features that were controversial at the stage of the original design. Later warts only exacerbate these problems. This happens when growth is not engineered through abstract symmmetry. Wonderful. Even prettier than the previous one. It's not baroque anymore, it's rococo, this graceful choice of poetic message - a straight verbal fractal. One more verse in this style and it would be a beautiful mathematic-sophismatic haiku Quote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 09, 2023, 06:42:32 pmBut they, the new creators, will surely create a better language. And this is an illusion. They will end up just like those earlier language makers. Their language after many years (if it survives) will also be "bloated" and full of quirks. Your fallacy is that because others failed at X before, X is impossible. Proof, proof please. Razors are waiting Quote from: ctk on January 12, 2023, 03:00:08 amFor instance, a language that allows escaping into an alternate syntax for the duration of an expression does not suffer from these issues. And in more detail? Will you expand the thought? I am anti-talented in math. The capabilities of my arithmometer are at the level of 6502, but I think you have a talent for explaining, so at least I can understand every second word. It can be written as a haiku. Just don't rhyme, because it's bad to read Quote from: ctk on January 12, 2023, 03:00:08 amThough you said you didn't want to dent anything or anyone, you're actively, though perhaps accidentally, working towards that. If someone's way of life, at the most fundamental level, puts obstacles in my way, tough involuntarily, should I consider this person my enemy? God forbid. Me, I'm more pacifist than the clover field behind the barn ---------------------------------------------------------------------- VisualLab · 2023-01-13 22:44 Quote from: sketch on January 12, 2023, 04:56:21 amQuote from: 440bx on January 12, 2023, 04:21:01 amTo be fair, I believe the main reason for the absurdly poor design of the C language is that it had to fit in less than 8K of memory.  I believe (at least hope) that the authors could have done (and would have done) a better job had they had more memory available. Ken Thompson along with Dennis Ritchie created C. Thompson is also one of the creators of Go. Do you think that Thompson, Robert Griesemer, and Rob Pike have learned from mistakes in C and C++? According to the language descriptions, yes (but I don't use it). Have they learned from Java's mistakes? Because in the descriptions of this language there is a statement that it uses VM. I'm not saying that VM is bad, but its use is a bit controversial (meaning: it has advantages but also disadvantages, i.e. a compromise solution). ---------------------------------------------------------------------- VisualLab · 2023-01-13 23:01 Quote from: MarkMLl on January 12, 2023, 10:04:11 am/However/, none of these are Pascal "as defined", and the necessity of tacking stuff onto Pascal to make it usable at a low level has very much detracted from its "small-language" roots. Yes, "small is beautiful". But is small useful enough? Or is it that small is of little use? The scooter is "small, sleek and simple in design" compared to a car which is "big, complex, and more likely to break down". But people prefer cars because they are more powerful (and more comfortable). The user's point of view will always be slightly (or often quite) different from that of the creator. Art (beautiful, simple) is good for an exhibition or gallery. Engineering products are designed for daily frequent use. People look at the utilitarian side of engineering products. Ergonomics is more important than simplicity. Somehow it's so strange that if something is supposed to simplify life, it is usually complicated in itself. Unless you mean: don't complicate things more than necessary, that's totally agree. But the devil is in the details and people define simplicity differently. ---------------------------------------------------------------------- VisualLab · 2023-01-13 23:13 Quote from: MarkMLl on January 12, 2023, 10:24:10 amI'd also note that Thompson has been publicly critical of Python's use of significant indentation rather than explicit block markers. Rightly. But Python has more bugs. This would be a litany. Unlike Rob Pike and his colleagues, Guido has learned nothing. Or in other words - maybe it was a project: "my private ". But what's most irritating is Python being pimped out by huge numbers of computer pimps. And no, my term is not exaggerated. This is not popularization, because in recent years it has taken the size of a pandemic ---------------------------------------------------------------------- Joanna · 2023-01-13 23:15 Quote Quote from: ctk on January 12, 2023, 03:00:08 am Quote from: Joanna on January 09, 2023, 04:19:56 pm It takes actual experience to find out what really is important. Though you will never believe it in this life, experience is not the only way to reach that. You say so (but I don't know if it's true). Share your unfathomable knowledge and enlighten us little ones: what are these other ways. I'm really curious about it. If you tell us what the other way is, Whilst you wait for an answer from ctk I think I can help answer this question. People are highly dependent upon gaining knowledge from other people who have had experiences. For an example it is unnecessary to get bitten by a poisonous snake in order to know that it will not be fun. People often gain knowledge and pass it along for the benefit of others. This tendency towards automatically believing others is not always a good thing because there are people who exist with less than altruistic intentions. It’s good to be suspicious of strangers offering advice as well as exercising common sense. Actual experiences can often be extrapolated to make good decisions about unforeseen situations. ---------------------------------------------------------------------- VisualLab · 2023-01-13 23:18 Quote from: denis.totoliciu on January 13, 2023, 01:08:11 amMy point was that you have to listen to the community in the following sense: it is the main channel of feedback for FPC usage, hence this forum does a great job as a platform for it;you don't have to do what everyone says;there is no obligation to respond to everyone;you don't have to implement what everyone says;through listening you can get the pulse of the community, ;after listening, programmers can discuss and filter out the things that are good from the ones that are not that good;it helps in realizing consciously, in time, for each of us, what are some of the really important traits of FPC that make programmers stick to it and hence to form/keep the community together; You are all right about the problems that might arise with the process of listening and it is for sure not an easy thing to do. At the same time, it will make us all: better programmers;have more patience with ourselves and with the development of FPC;more compasionate about how FPC works, where it should go further;stick together in a community with less harsher and hyper-sensitive feelings; Yes, I agree with that. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-13 23:30 Quote from: VisualLab on January 14, 2023, 12:01:58 amArt (beautiful, simple) is good for an exhibition or gallery. Engineering products are designed for daily frequent use. People look at the utilitarian side of engineering products. Ergonomics is more important than simplicity. Well said! I think the trick is to refine the balance between the art component and the engineering one, like sculpting for a long time a large piece of clay up to the point where it is not perfect, nor it is a kitsch, but a great work of art. Quote from: VisualLab on January 14, 2023, 12:13:27 amPython being pimped out by huge numbers of computer pimps Great expression and very suggestive! ---------------------------------------------------------------------- denis.totoliciu · 2023-01-13 23:36 Quote from: VisualLab on January 14, 2023, 12:13:27 amThis is not popularization, because in recent years it has taken the size of a pandemic Speaking of that, I wonder if anyone around here would like for that to happen to FPC. In my view, a more manageable piece of software, marketing and community would be prefferable. Usually, when the big pimps come around pumping money into the project, things tend to become nuanced by some corporate specific traits, which I prefer to avoid in favor of open source ideas. ---------------------------------------------------------------------- Joanna · 2023-01-13 23:54 Quote In my view, a more manageable piece of software, marketing and community would be prefferable. Usually, when the big pimps come around pumping money into the project, things tend to become nuanced by some corporate specific traits,The frustrating thing is how few people are interested in pursuing intellectual projects or even non revenue generating activities  for fun and instead gravitate towards things with corporate funding. I blame the school system but I think it goes deeper than this to a primitive human trait of wanting to join what they think is the winning side. Quote I do not feel any need to join The Fobidden Network.Our community has been splintered because of some rich tool bought and destroyed freenode? It’s embarrassing. ---------------------------------------------------------------------- VisualLab · 2023-01-13 23:58 Quote from: Joanna on January 14, 2023, 12:15:09 amQuote Quote from: ctk on January 12, 2023, 03:00:08 am Quote from: Joanna on January 09, 2023, 04:19:56 pm It takes actual experience to find out what really is important. Though you will never believe it in this life, experience is not the only way to reach that. You say so (but I don't know if it's true). Share your unfathomable knowledge and enlighten us little ones: what are these other ways. I'm really curious about it. If you tell us what the other way is, Whilst you wait for an answer from ctk I think I can help answer this question. People are highly dependent upon gaining knowledge from other people who have had experiences. For an example it is unnecessary to get bitten by a poisonous snake in order to know that it will not be fun. People often gain knowledge and pass it along for the benefit of others. This tendency towards automatically believing others is not always a good thing because there are people who exist with less than altruistic intentions. It’s good to be suspicious of strangers offering advice as well as exercising common sense. Actual experiences can often be extrapolated to make good decisions about unforeseen situations. I totally agree. I counter the statements of ctk because I disagree with them for the most part. I get the impression that he is an idealist, a utopian computer scientist. Yes, you have to have a goal to pursue (such a general outline). But you can't overdo it. Pragmatism is really important. When a person learns at the beginning of a field of knowledge in primary or secondary school, everything looks perfect in textbooks. And it is best seen in textbooks of mathematics, natural science and technology. And then, when someone graduates from college, they already know that "reality squawks". In fact, textbooks teach models that contain some simplifications (for various reasons). Real objects and phenomena are more complex and often have many exceptions compared to models. So it's not surprising that programming languages, being technical products, get more and more complex after the incubation period, that compiler (or VM or interpreter) developers compromise and (usually) try to be backwards compatible. This is pragmatism. You can ignore it, but it's not always a good solution. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-14 00:20 Quote from: Joanna on January 14, 2023, 12:54:18 amThe frustrating thing is how few people are interested in pursuing intellectual projects or even non revenue generating activities  for fun and instead gravitate towards things with corporate funding. I blame the school system but I think it goes deeper than this to a primitive human trait of wanting to join what they think is the winning side. The feeling of safety, or better said giving the impression of safety is something that corporates have a lot of experience with and know how to handle. Quote from: Joanna on January 14, 2023, 12:54:18 amOur community has been splintered because of some rich tool bought and destroyed freenode? It’s embarrassing. That is only one true part of the story. The other one is usually avoided in discussions and I would leave it like that because then again politics does a bad thing to programming. To add more: nothing has been destroyed. To me it looks more like scattered, which is not necessarily a bad thing. ---------------------------------------------------------------------- VisualLab · 2023-01-14 00:52 Quote from: denis.totoliciu on January 14, 2023, 12:36:39 amQuote from: VisualLab on January 14, 2023, 12:13:27 amThis is not popularization, because in recent years it has taken the size of a pandemic Speaking of that, I wonder if anyone around here would like for that to happen to FPC. In my view, a more manageable piece of software, marketing and community would be prefferable. Usually, when the big pimps come around pumping money into the project, things tend to become nuanced by some corporate specific traits, which I prefer to avoid in favor of open source ideas. Indeed. I think a certain balance is needed. Large companies become less innovative (or not at all) over time. This can be seen when one traces the history of the giants (e.g. AT&T, Compaq, DEC, IBM, Microsoft, Oracle, Sun). All of them are long past the period of their technical heyday (there is only a bureaucratic heyday) or they are gone. Those that exist absorb small and medium-sized companies like a shark devours smaller fish. Medium-sized companies either take care of the product (develop it) and exist, or they are starting to "freak out" as a result of which they perish (Borland). Unfortunately, too, many of the open source movement's projects are ossified. Development is rachitic and in some cases even a travesty of development (e.g. Wayland). The best example is Linux on the desktop. This system has such an architecture that it is only suitable for servers and machines in data centers. And no wonder, because it is modeled on Unix, which was designed for such machines. The system, which was a symbol of corporate hubris and complacency, is now regarded as a symbol of freedom for computer users. It was not such a marvelous design again. The UNIX- HATERS Handbook did not come out of nowhere. But it is Windows that is regarded as evil incarnate. But in fact, it's "for a hunchback, he's quite handsome" (well, recently Microsoft has considerably "humped" him It seems that companies can help, but if they dominate certain solutions, it is often bad. That's why it's good that there is FPC. Because Embarcadero will certainly not develop its compilers to support what is being developed at FPC (in particular: embeded and SBC). Besides, Embarcadero is a medium-sized company at best. If they start to venture out like Borland, it will be the nail in Delphi's coffin. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-14 02:51 Quote from: VisualLab on January 14, 2023, 01:52:25 amMedium-sized companies either take care of the product (develop it) and exist, or they are starting to "freak out" as a result of which they perish (Borland). Very true! Borland had great programmers, but the top managers didn't know what to do further with Delphi. I wonder what was going throught their minds when they released Delphi 8 (for .NET) and then trying to develop better compilers than M$ for .NET, i.e. C#. The Delphi programmers told them not to do this, but they still did it. I suspect they made quite some money, considering that Delphi 7 was a cool version and that got to their heads. Quote from: VisualLab on January 14, 2023, 01:52:25 amBecause Embarcadero will certainly not develop its compilers to support what is being developed at FPC (in particular: embeded and SBC). Besides, Embarcadero is a medium-sized company at best. If they start to venture out like Borland, it will be the nail in Delphi's coffin. One of the things that Embarcadero is really nasty about is their bug- fixing strategy. They have always said that they don't have enough programmers employed to fix all the bugs for the many versions of Delphi that people use; and they even make a profit on that, made a "marketing strategy" with it: "If you want your bugs fixed, buy the new versions and maybe some of them will be fixed." I don't know why they have always been so desperate about money, when they brag that they have 3,000,000 clients out there. They don't have a continous hotfix line, which is a big downside. FPC and Lazarus has that solved by the nature of open source itself, which is really cool. Maybe not in full, like having packages delivered with hotfixes, but there is the option to pull the source code and recompile the IDE or the compiler itself. ---------------------------------------------------------------------- Joanna · 2023-01-14 03:05 Quote I totally agree. I counter the statements of ctk because I disagree with them for the most part. I get the impression that he is an idealist, a utopian computer scientist. Yes, you have to have a goal to pursue (such a general outline). But you can't overdo it. Pragmatism is really important.I was listening to a podcast recently regarding logic and how useless it is in many cases. For the benefit of ctk and fanatical believers in the infallibility of logic I will provide this link. https://www.corbettreport.com/episode-239-logic-is-not-enough/ The gist of it is without good starting premises the best logic in the world will be a failure. There was also a mention of people who had lost their emotions due to brain injuries and could not function logically because they had no feelings about anything and could not make good decisions. It’s kind of like artificial intelligence deciding that crashing is the fastest most fuel efficient way to land an airplane  Projects can definitely end in failure for various reasons. Like if certain key people die of old age and no sensible replacements are around. Infighting is often a problem as well and I’ve seen plenty of trouble makers that aren’t even pascal programmers come along and cause people to go off topic and start arguing and then no longer be on speaking terms. It’s amazingly easy to cause this sort of disruption and very difficult to repair it. Quote To me it looks more like scattered, which is not necessarily a bad thing.Scattered is not a good thing for a community of people that need to share info and work together. FYI it is also called divide and conquer  Sorry for yelling but this is important.. ---------------------------------------------------------------------- ctk · 2023-01-14 05:30 Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amIf someone's way of life, at the most fundamental level, puts obstacles in my way, tough involuntarily, should I consider this person my enemy? God forbid. Me, I'm more pacifist than the clover field behind the barn I'll take that with a pinch of salt, seeing as it comes after no shortage of sarcasm, calling out alleged "sophisms" without specifying, making fun of the one typo I made… Still, I thank you for offering me the benefit of the doubt; I was awaiting some actual interest in any of them before expanding on each point. I note that, more than interest (e.g. "how can I do this?"), you demand evidence with sarcasm, providing evidence that this discussion, as I said from the beginning, was an overt war (by proxy) between our ways of life. After all, if what I said isn't just vaguely scientific-sounding garbage ("rococo"), it is indeed a serious blow to your world view of "experience" and "complication". I do need to address this frontally to alleviate your worries: these simple and powerful ideas I'm so happy about weren't discovered with ease. However, once they were discovered, they did suddenly make a whole range of things go from hard to easy. That sort of suddenness is not observed when going through the path of [i}experience[/i]! This takes me to my first point: Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: Joanna on January 09, 2023, 04:19:56 pmIt takes actual experience to find out what really is important. Though you will never believe it in this life, experience is not the only way to reach that. You say so (but I don't know if it's true). Share your unfathomable knowledge and enlighten us little ones: what are these other ways. I'm really curious about it. If you tell us what the other way is, I'm sure I'll believe it. I also want to achieve IT nirvana Reasoning. Through reasoning, you can reach a lot of conclusions that you could also have reached through experience, except you can achieve that in seconds instead of years, should you come to know of a reasoning that does it. (I see that Joanna suggested that it could have also been 'the experience of others', but that's not what I had in mind) I'll use the devil's advocate form for illustration: For example, at school you do not learn all the multiplications by heart: if you have a good teacher, you get what amounts to an algorithm. But then, to the observer it looks like you have memorized an infinite multiplication table! Preposterous! Okay, your memory is astounding, but surely if we ask you the product of two large enough numbers, you haven't learned that. We'll find a couple of numbers you don't remember the product of. We're bound to. As for the abundant sarcasm, I'll respond to it with: Sorry if that isn't breaking news to you; in fact, I strongly suspect that you knew this. The rest of my answers will not be any more earth- shattering than this triteness. This, I say without any sarcasm: just because you feel like you knew full well what I just pointed out, do not underestimate its power; it is real, and it is tremendous. Gnarly also: it is indeed advanced reasonings and reckonings that made nukes possible, to my abysmal dismay. Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amListening to everyone is a complicated and controversial issue. Complex, not complicated. If you deal with it like it is complicated, you will never extricate yourself out of it. "This blanket claim comes with no evidence whatsoever." (as one very perspicacious philosopher said). I still stand by my view on listening to everyone: it's complicated (and often controversial). That doesn't mean you don't have to untangle it It will help if I first say that opinions which are self-contradicting will have to be rejected, assuming a practical result is to be attained. This may seem obvious, but is a caveat for some mentalities out there, who will leave frustrated that the impossible is not possible. The word "complicated" you used is not adequate to describe outright impossibility. We always take the macroscopic model of reality as an axiom in language design, and with that, something cannot both exist and satisfy a self-contradicting requirement. The proof (proof is better than mere evidence), is simply that whenever you have two people who demand incompatible things for a language feature, you can always include an option for both, and the option to retract the language feature (as previously mentioned). The most interesting example (because it is intimately tied to the original topic of this post) is nominal VS structural typing. https://en.wikipedia.org/wiki/Structural_type_system and https://en.wikipedia.org/wiki/Nominal_type_system even contrast themselves to one another and can easily be both built into a language, with the option to use either or both. Additionally, I suggest (though this is never necessary, it just makes things easier) to refuse adding complexity with no reason besides the purely aesthetic. This anticipates on our next point: Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amPeople have very different opinions, caused by various motives (sometimes stupid, sometimes malicious, much less well thought-out and impartial). Everything that is arbitrary and clashes with some form of regularity has to be dismissed for sure. Otherwise, you will fall head first into complication, raising the complexity to levels that, forget humanly, are not even mathematically manageable. Wait a minute? And who ever said, "If you deal with it like it is complicated, you will never extricate yourself out of it"? Hmm? Own goal during a match? What is the problem you are trying to express, exactly? I was saying that if you intentionally make the situation unmanageable, it will be unmanageable. Things are hard enough as they stand to not make them worse on purpose as a preamble. Quote from: VisualLab on January 13, 2023, 11:35:52 pmOh, one more thing: "complications, ... that, ... are not even mathematically manageable." Can I ask for some evidence? Or maybe two razors should be used here: Hitchens and Ockham? Yes. Not only you can, but I will even helpfully go ahead and act as though you had asked for evidence. In passing, the way you put this makes me suspect that your curiosity is more outraged than genuinely piqued with interest, though. I would feel more at ease if you waited for the examples and proofs you requested BEFORE mentioning the open possibility that what I say could be hot air, also known under the much clearer name of "pretty, yet empty bullshit". So, I believe that the evidence you request is constructive proof, aka examples. Good examples of mathematically unmanageable situations include the halting problem and incompleteness. Don't make the language you are designing undecidable without a reason. If someone insists on making it so, it is likely that this is not necessary for their practical purposes. And remember: you can always add a switch that permits it, at the cost of e.g. the compiler not guaranteeing that it won't get stuck on a fixpoint combinator (for readers who don't know this: think infinite loop). Lean (the prover) allows the programmer to provide a proof, so you can eat your cake and have it, for instance when you have a proof of termination (or other predicate) at hand. The distinction between complicated and complex is that with complexity, you know what you're doing, therefore you can provide certain (absolute!!!) guarantees. (Yes, I included "absolute" for the outrage value to people who swear by "there will always be exceptions" ­— my intent is to make them reconsider that outrage. Some things are absolute, even in practice (oh yes!) whether we like it or not.) It's easy to make things complicated, and things can only be made simple by breaking them down in terms of their inherent complexity. Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amEither way, you can't please everyone. This blanket claim comes with no evidence whatsoever. Hitchen's razor applies: "what can be asserted without evidence can also be dismissed without evidence." I personally prefer Hitchens’s razor (Christopher I typo'd one S in my entire post, and it was in the last name of Christopher Hitchens. You could have let this pass, but you're taking every opportunity to bicker against me. This comes as further confirmation that is a war we're having, after all. I'll just say that I'm a little disappointed that you would stoop to rhetorics. What I'm saying, is that it could have used less sarcasm. Let's not get too side-tracked in bickering and return to your claim. Quote from: VisualLab on January 13, 2023, 11:35:52 pmBesides, I still believe that you can't please everyone. This is not based on academic research. life experience (everyone has one). And I have proof: I do not agree with your statements. Ergo: it's impossible to please everyone Your reasoning is interesting, as it employs a form of strange loop. Before you attack me with "rococo" and other sarcasm that will eventually tire me, no, I'm not making that up: https://en.wikipedia.org/wiki/Strange_loop I believe that it does not work, because I hope that you will no longer be in a capacity to state formally what you do not agree with, after I have given evidence in the present message. In this case, it would be that you are begging the question, that it to say, this would be a form of circular reasoning. I am indeed assuming that you have to be coherent with yourself and not using a malformed argument, in order to validly disagree with something. By challenging this assumption, one can derive a proof: if you cannot be contented (that is to say, if you have self-contradicting requirements) then you cannot be contented. So indeed, interestingly enough, there are people who cannot be pleased because they have decided it is so. However, the statement is "you can't please everyone", which I justified earlier to be wrong, if we include the premise every single person can be pleased individually. I believe that this is the spirit of this statement: "you can please every person individually, but you cannot please everyone simultaneously". So by stating that you cannot be pleased, and therefore a fortiori everyone, which includes you, cannot be pleased, you are probably not in line with that. You are however correct that a person who cannot be pleased, cannot be pleased. This is a perfect tautology. Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amIt seems to me that the first thing to consider is the introduction of those proposals that come from the current Pascal community, and careful and balanced introduction of new elements to the compiler. Could it be that you are amalgamating a community and a technology? Perhaps by Conway's law. Which can be completely sidestepped by using orthogonal abstractions in language design, maximizing the number of abstract symmetries at each occasion. Beautiful, poetic, baroque... sophisms. I said that Conway's law was a possible way I could come up, to nod to your idea of associating a programming language community's ways of thought, with the structure that can be derived from the language constructs themselves. Don't fight me when I help with making your point! Here, you find yourself making the  unsubstantiated claim that I am in error. (Hitchens isn't far away) Can you substantiate the claim that I produced a sophism? Pointing the error in a little more detail will be sufficient, I am not very demanding and will help along fixing whatever error I might have made, if only it is specified what the error is. To be precise, if you want to challenge what I said, I think that your quip has to be exactly ONE of: - You judge that there is no way to look at the words I wrote that fully makes sense, and explain where my formalism lacks; - you understand the meaning of the sentences I wrote, but there are missing steps and you cannot see how the conclusion derives from the premises; - you need evidence to believe a claim I made (this does not seem to be the case, otherwise you would have requested it). It would seem that we are in the second case, so I will develop some more: For orthogonality, a specific instance of it in the field of software engineering is decoupling. To give a very specific and interesting example of decoupling in programming language design, one can ask: what would be a syntax where semantics are decoupled by being orthogonal? A possible (and quite simplistic) answer here is to assign each character to a single meaning, giving rise to a pretty interesting family of syntaxes. For example, we could say that [] is an ordered collection; that {} is an unordered one; and if () is assigned to priority in expressions, then it cannot be used for tuples… but we are using fully orthogonal concepts here: tuples can now be declined as either ordered or unordered collections. I am very fond of this manner of designing languages, and have already produced one such language syntax for fun. We can see it in more detail if you are interested, perhaps once you are satisfied with the other points so as not to be all over the place at one given time. I mean, this conversation has to stay manageable, and for that, the level of (conceptual) hostility has to drop. At the point of this writing, you have adopted a position that I am emitting word salad, and I feel the need to see if my reply will change any of that before proceeding any further. If you judge that something I said so far does not make sense, then a mis-understanding needs resolving, or perhaps a mistake in an argument by either of us needs to be corrected first. Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amWell, yes. But it is not always easy to distinguish what is proven from what is defective. Sorry to be blunt, but that means you're doing it wrong. "This blanket claim comes with no evidence whatsoever." (again quoting the famous philosopher I tentatively interpret this as implying you wish to see evidence, though it is not requested. You can opt to be explicit in your expectations next time, to prevent me from guessing them wrong. I franky hate this toxic way of doing conversation, and will not respond next time your request is sneakily implied like this, if however it is, operating by Grice's maxims of conversation. Please refrain from sneakiness; that clouds our exchange. So. When something emerges from a language designed with full decoupling of every one of its features, and that leverages each of these features to the fullest, anything that emerges from that is sane and needs no screening or "the proof of time", mathematically speaking. In this sentence, "leverages each of these features to the fullest" referred to abstract symmetry. This is not fancy bullshit buzzwords, despite your doubts and, apparently, beliefs. To counter these, I illustrate: For example, if you already have a language syntax for manipulating values, then you could be using the same syntax for your types. A lot of languages (e.g. TypeScript) have a different syntax for type expressions than they do for value expressions; when the two syntaxes are one and the same (with the consequence that types become values), this is an abstract symmetry within the language. Additionally, allow me to bring this back from the original quote: Quote from: VisualLab on January 12, 2023, 02:15:57 amIn addition, divergent expectations and needs of people are a problem. Finally, what is good for one is not always so good for another. I have proposed above that divergent expectations can be met with complementary, even when mutually exclusive, features. Within a fully decoupled design, that is, where every feature is defined orthogonally to the others, which means that they can be combined in any way — and the language designer does not need to anticipate, no, needs to have no need to anticipate, how users will combine them. Quote from: VisualLab on January 13, 2023, 11:35:52 pmI still stand by my view on the issue of distinguishing what is really proven from what someone thinks is proven. So once again (simpler): there are cases that are easy to find, there are average cases, but there are also difficult ones. I didn't say you don't need to analyze it. Proofs consider all cases; I believe the vision you express there is more applicable to testing, which is most often incomplete ­— by nature. Are you using a different definition of "proven" than "there exists a mathematically well-formed deductive path from our premises to this predicate"? Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amLeslie Lamport will tell you that mathematical elegance is the ultimate key to this. Reveal the veil of secrecy. Share your knowledge with your neighbor (even if that neighbor has not achieved mathematical nirvana I shall yield the floor to the man directly if you wish to know about it: https://invidious.snopyta.org/watch?v=Fq5EQBFLEC8 Quote from: VisualLab on January 13, 2023, 11:35:52 pmBesides, Leslie Lamport is a cool guy because he made LaTeX He's so non-hipster in the picture He doesn't have a strange beard like a lumberjack- assassin from the Alamut area I mean, he has a beard, but it's plain, without mathematical complication I do not think that this babble about beards is relevant, given how dismissive you have already allowed yourself to be. Troll vibes here from you. Maybe you're just enjoying yourself innocently, but with all the sarcasm (that comes with plausible deniability as jokes) and accusations of sophisms (that do not come with plausible deniability), the troll vibes are undeniable. I have reached the message size limit, my answer will be continued below. ---------------------------------------------------------------------- ctk · 2023-01-14 05:33 Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amIn addition, divergent expectations and needs of people are a problem. Finally, what is good for one is not always so good for another. Again, this comes with no backing or evidence. I can most likely refute any example you will produce, by providing a solution that pleases all. Well, do it instead of writing hollow phrases. Send your examples. I have already provided solutions for all the examples you produced. Please produce more so I can oblige. You can go say things like "hollow phrases" elsewhere: I was sending out a challenge to give me problems to solve, and you respond "solve it!" without giving me a problem to crack. I'll just say I'm now giving you a chance to respond that you misread what I was saying. Quote from: VisualLab on January 13, 2023, 11:35:52 pmI have no hesitation to: (a) admit that someone is right and (b) admit to my own lack of knowledge (but after giving specific arguments). If you don't give them, I give you a loyal warning: I've already sharpened both Hitchens and Ockhcam razors Very good, but in parallel I'd appreciate if you toned it down with the not-even-that-veiled mockery. I might not respond further if you keep it up with the unsufferable derision. Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 09, 2023, 06:42:32 pmQuote from: ctk on January 09, 2023, 02:11:26 amThis quote was taken from this description of what appears to be a fine language (answering your earlier request to see one): https://borretti.me/article/introducing-austral Yes. However, if the language starts to be used more widely, people start to have higher expectations. So the creators are expanding it more and more. After many years, such a language is no longer a small, neat, simple language, but a powerful and, unfortunately, also complicated and convoluted (C++, Java, Object Pascal). This is because (usually) developers don't want to break what already works, and they don't want to break backward compatibility either, so new features have to match existing ones. This process is stretched over time. So it was with C. So it was with Pascal. So it was with Java. This has been (and will continue to be) the case with Python. And that's what will happen to Rust someday. A separate issue are the features that were controversial at the stage of the original design. Later warts only exacerbate these problems. This happens when growth is not engineered through abstract symmmetry. Wonderful. Even prettier than the previous one. It's not baroque anymore, it's rococo, this graceful choice of poetic message - a straight verbal fractal. One more verse in this style and it would be a beautiful mathematic-sophismatic haiku Your sweetened words are nevertheless outright rude and offensive. Perhaps you don't see what I'm talking about, but you don't need to look down on me for that reason: you can just ask and wait for clarification. I hope to see you become more respectful in the future. If you continue pretending that I am emitting word salad, you cannot count on further answers from me. In that case, I'll leave you to your own little world of honeyed sarcasm. I am not forgiving you for your despicable attitude until it changes, but I provide (below) rational elements to pursue the conversation productively. I am admittedly doing this effort in part because you are not the sole recipient of my answer. For your information, besides the abstract symmetry mentioned earlier where the syntax for value expressions is the same as for type expressions, there is : - the abstract symmetry where collections and types are one and the same (think: a type is a set, but a set is also a data structure) - the abstract symmetry where functions and maps are one and the same (think: a function maps a value to another value) More on the subject if you are actually interested, rather than wishing I was wrong, surfing on the sarcasm of insinuating I'm spouting garbage. Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 09, 2023, 06:42:32 pmBut they, the new creators, will surely create a better language. And this is an illusion. They will end up just like those earlier language makers. Their language after many years (if it survives) will also be "bloated" and full of quirks. Your fallacy is that because others failed at X before, X is impossible. Proof, proof please. Razors are waiting Are you sure you read correctly? I will give you the benefit of the doubt. For this time only. You claim that "They will end up just like those earlier language makers", and I remarked, why should this be true? You provided no reason why this should happen over and over again without ever an exception to this principle you uphold. Upholding a claim that has no reason to be true is a fallacy, and I made a note of that. If you cannot see this, I believe we do not have a working conversation any more. Quote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amFor instance, a language that allows escaping into an alternate syntax for the duration of an expression does not suffer from these issues. And in more detail? Will you expand the thought? I am anti-talented in math. Worry not, no advanced math is required. This refers to language features such as the ubiquitous but little known https://en.wikipedia.org/wiki/Lisp_reader Or unquoted blocks of XML inside Javascript, aka https://en.wikipedia.org/wiki/ECMAScript_for_XML And you could imagine a syntax such that this is one single program: Code: [Select]\C function square(int a) { return a*a; } \python def hello(): return \xml hello world Quote from: VisualLab on January 13, 2023, 11:35:52 pmThe capabilities of my arithmometer are at the level of 6502, but I think you have a talent for explaining, so at least I can understand every second word. It can be written as a haiku. Just don't rhyme, because it's bad to read Is this supposed to be amusing for me, or just for you at my expense? I will let you comment on that. ---------------------------------------------------------------------- ctk · 2023-01-14 06:21 Quote from: MarkMLl on January 12, 2023, 10:21:37 amQuote from: ctk on January 12, 2023, 03:00:08 amThis happens when growth is not engineered through abstract symmmetry. However, when one hits the Real World things can be problematic. As an example, consider the ALGOL-60/Pascal predilection to the "dangling else" problem Ah, this isn't actually related to abstract symmetry, you can see some details on what it is about in my previous (two) post(s). Interestingly, the 'dangling else problem' cannot exist when the syntax uses exclusively expressions as its core concept, because every branch has to have a value (all of the same type). That implies you cannot omit any `else` branch whatsoever. Quote from: MarkMLl on January 12, 2023, 10:21:37 amQuote from: ctk on January 12, 2023, 03:00:08 amFor instance, a language that allows escaping into an alternate syntax for the duration of an expression does not suffer from these issues. I agree, and I believe that multiline literal strings (e.g. to contain SQL) are at least being considered by the core team. It's even better when the syntax within the string (which might as well be bare/unquoted) is verified to be valid SQL! ---------------------------------------------------------------------- circular · 2023-01-14 07:08 About the units of measure, they are handled natively in F#. So there is at least one language that does. https://learn.microsoft.com/en-us/dotnet/fsharp/language- reference/units-of-measure Code: [Select]// Mass, grams. [] type g // Mass, kilograms. [] type kg // Weight, pounds. [] type lb // Distance, meters. [] type m // Distance, cm [] type cm // Distance, inches. [] type inch // Distance, feet [] type ft // Time, seconds. [] type s // Force, Newtons. [] type N = kg m / s^2 // Pressure, bar. [] type bar // Pressure, Pascals [] type Pa = N / m^2 // Volume, milliliters. [] type ml // Volume, liters. [] type L // Define conversion constants. let gramsPerKilogram : float = 1000.0 let cmPerMeter : float = 100.0 let cmPerInch : float = 2.54 let mlPerCubicCentimeter : float = 1.0 let mlPerLiter : float = 1000.0 // Define conversion functions. let convertGramsToKilograms (x : float) = x / gramsPerKilogram let convertCentimetersToInches (x : float) = x / cmPerInch This is checked at compile time only so there is no overhead and it can be applied to any numeric type. It cannot guess though when to convert from grams to kilograms etc. you need to specify such conversion. ---------------------------------------------------------------------- MarkMLl · 2023-01-14 07:40 Quote from: VisualLab on January 14, 2023, 12:01:58 amYes, "small is beautiful". But is small useful enough? Or is it that small is of little use? Go back through what I've written. Pascal was rushed and flawed. (C wasn't particularly rushed, but was intentionally a simple language easy to compile). To paraphrase Brooks' paraphrase of Ovid, however much you stack on top of a foundation like that is nothing more than a big pile. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-14 07:42 Quote from: VisualLab on January 14, 2023, 12:13:27 amRightly. But Python has more bugs. This would be a litany. Unlike Rob Pike and his colleagues, Guido has learned nothing. It's not that he's learned nothing, but that Python- and I'm tempted to say the same about Pascal- is driven by a community intent on preserving its shaky foundation. MarkMLl ---------------------------------------------------------------------- ctk · 2023-01-14 11:40 Quote from: circular on January 14, 2023, 08:08:13 amAbout the units of measure, they are handled natively in F#. So there is at least one language that does. https://learn.microsoft.com/en-us/dotnet/fsharp/language- reference/units-of-measure This is checked at compile time only so there is no overhead and it can be applied to any numeric type. It cannot guess though when to convert from grams to kilograms etc. you need to specify such conversion. Speaking of which, here's an article on how this is done— it uses 'refinement types', which are introduced very neatly here: https://yoric.github.io/post/uom.rs/ I was hesitating whether to mention this or not when I used incompatible units as an example, because indeed, without refinement types they don't shine as much. ---------------------------------------------------------------------- MarkMLl · 2023-01-14 12:04 Quote from: ctk on January 14, 2023, 12:40:17 pmSpeaking of which, here's an article on how this is done— it uses 'refinement types', which are introduced very neatly here: https://yoric.github.io/post/uom.rs/ Interesting. I've used something vaguely comparable when writing a reduce function for FPC: define "reduce" as a rubbish type, and then overlay the maths operators with this on the LHS and an array on the RHS allowing Code: Text  [Select][+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i   := reduce +   Predating generics, that needed a lot of boilerplate which could possibly now be avoided. But it /did/ have the advantage of keeping the compiler a bit further away from the application logic itself: I'm currently reading an article which emphasises that much of the difficulty of adopting Rust for the Linux kernel is due to the extra tools that exist and are rebuilt every time the kernel is recompiled (which is something I admit I've done relatively rarely over the last 20 years). MarkMLl ---------------------------------------------------------------------- ctk · 2023-01-14 12:23 Quote from: VisualLab on January 14, 2023, 12:58:26 amI counter the statements of ctk because I disagree with them for the most part. Would you still disagree with them in the instance where they would happen to be correct? If indeed the case, that is of concern to me. Quote from: VisualLab on January 14, 2023, 12:58:26 amI get the impression that he is an idealist, a utopian computer scientist. I think that "impression" is a funny way to phrase that I outright said it to your face in my first reply to you: Quote from: ctk on January 07, 2023, 12:56:44 amtry as you might, you can not dent my idealism, and I can not lift you up from the doldrums of defeatist relativism. So yeah, having said that, you "getting an impression" that I am an idealist is actually a lot less than what I thought I could legitimately expect. Quote from: VisualLab on January 14, 2023, 12:58:26 amYes, you have to have a goal to pursue (such a general outline). But you can't overdo it. Pragmatism is really important. Does "pragmatism" in your book mean "giving up when 80% of the result is achieved through a model too simple to fully handle what it's modeling"? Quote from: VisualLab on January 14, 2023, 12:58:26 amWhen a person learns at the beginning of a field of knowledge in primary or secondary school, everything looks perfect in textbooks. And it is best seen in textbooks of mathematics… Yes, because mathematics are perfect truth in the very specific sense that everything is implacably proven from arbitrary axioms. What is "perfectly true" in mathematics is that the conclusions do derive from the axioms. Theorems are "relations of ideas" that are true and suffer zero exception. If you're battling this fact, you will look like Don Quixote against the windmills. Quote from: VisualLab on January 14, 2023, 12:58:26 am…natural science and technology. Respectively: Natural science uses approximative models and teaches students to fit models and measure the imprecision of the fitting; Technology uses physics, which have turned out to be as exact as our handicraft implementing it in reality. I hope there's something more behind quantum physics, but so far we're not finding phenomena that cannot be derived from them, so that's pretty solid evidence. Quote from: VisualLab on January 14, 2023, 12:58:26 amAnd then, when someone graduates from college, they already know that "reality squawks". In fact, textbooks teach models that contain some simplifications (for various reasons). Actually I noticed this when I was 8 years old, and the teacher said it was impossible to subtract a larger number to a smaller number. These were ℕaturals, of course. When, the next year, the same teacher told us that in fact we could do it and it yielded a negative number, I acquired a suspicion that has never left me since, and asked "what else have you lied to us about?". From there on, I always dug deeper to find information that no longer "squawked". For example, when the Bohr model of the atom, with gravitating electrons, was presented to us, I already knew that its ability to represent reality had been disproven by experiment and was on my way to the pilot wave theory (look it up, it's really neat) — which so far has not "squawked": QM fits our results in reality. Quote from: VisualLab on January 14, 2023, 12:58:26 amReal objects and phenomena are more complex and often have many exceptions compared to models. This is the case  if your model is too simple to cover the complexity of what you are modeling. Which has never been suspected (by real world experience) to be the case for QM, for example. To see those as exceptions means you are indeed thinking the reality in the terms of an approximative model, which is dangerous; but it takes a lot of effort to extract oneself from that. Quote from: VisualLab on January 14, 2023, 12:58:26 amSo it's not surprising that programming languages, being technical products, get more and more complex after the incubation period, that compiler (or VM or interpreter) developers compromise and (usually) try to be backwards compatible. This is pragmatism. You can ignore it, but it's not always a good solution. As it turns out, Lisp's s-expressions remain, to this day, a fierce and ubiquitous counter-example to this. What you say applies to "conventional languages", such as Java. In his 1977 ACM Turing award lecture, John Backus, recipient of the award, said: Quote from: https://web.archive.org/web/20161229225241/http://www.thoc p.net/biographies/papers/backus_turingaward_lecture.pdfConventional programming languages are growing ever more enormous, but not stronger. Inherent defects at the most basic level cause them to be both fat and weak: their primitive word-at-a-time style of programming inherited from their common ancestor, the Von Neumann computer, their close coupling of semantics to state transitions, their division of programming  into a world of expressions and a world of statements, their inability to effectively use powerful combining forms for building new programs from existing ones, and their lack of useful mathematical properties for reasoning about programs. He then proceeds to explain how he thinks things should be done instead. Yes, the answers have been out there for about 50 years now. Praised by prestigious awards even. Just because the makers of the technology you know did not listen to this, doesn't mean it's not here. It is. It's there, waiting to be used, while you keep yelling that it cannot possibly exist — and quite possibly get people around you to even believe that, actively perpetuating this mediocrity. This is why I said from the get-go we are enemies: I had immediately detected what you were up to, perhaps against your better judgement. ---------------------------------------------------------------------- ctk · 2023-01-14 12:34 Quote from: MarkMLl on January 14, 2023, 08:40:23 amQuote from: VisualLab on January 14, 2023, 12:01:58 amYes, "small is beautiful". But is small useful enough? Or is it that small is of little use? Go back through what I've written. Pascal was rushed and flawed. (C wasn't particularly rushed, but was intentionally a simple language easy to compile). To paraphrase Brooks' paraphrase of Ovid, however much you stack on top of a foundation like that is nothing more than a big pile. I commend your accuracy in wording this. This makes me want to stress how important it is that you indeed said easy, and not for example 'simple'. Indeed, going the easy way instead of the simple (therefore small*) way is a recipe for steaming piles. So, VisualLab asks, "But is small useful enough?". Yes. Yes it is. Unless stockholm syndrome has kicked in and you cannot part with the defects of your tools (speaking of programming languages here). (*) if anyone wants a measure of 'smallness', it can be expressed in terms of things like Kolmogorov complexity or informational entropy (the number of bits required to express our information — in this case, a programming language's definition). ---------------------------------------------------------------------- denis.totoliciu · 2023-01-14 13:51 Quote from: Joanna on January 14, 2023, 04:05:34 amI’ve seen plenty of trouble makers that aren’t even pascal programmers come along and cause people to go off topic and start arguing and then no longer be on speaking terms. Joanna your biggest problem is that you want people to talk only what you like, similar to a sort of dictator. Even though you might have good intentions to keep the community together, from practical proof demonstrated in time, you forget about the freedom and the nature of open source; and try to impose along the way stricter constraints by day that in the end proved to be a way heavier burden and censorship mechanism for the programmers that really wanted to say something. Do you remember when you were alright with saying everything you wanted that didn't have anything to do with programming, but when other people working in other programming languages started talking a bit and you didn't like, immediately you requested that they are either trolls, either them to be banned from the channel? It has been going like that for years and you still keep pushing the same thing to what outcome? Certainly to the one that you have proved already: everybody can talk only what you say is right, otherwise they are considered to be the greatest damage to FPC itself. Please stop being a hypocrite. ---------------------------------------------------------------------- ctk · 2023-01-14 14:06 denis.totoliciu: Unfortunately, I don't think exhortations will work on the memeplex(*) that drives Joanna against her better judgement. (*) a memeplex is a set of conditioned reactions in an individual's translation of the world to their consciousness. These reactions preempt any rational thought that would endanger the memeplex. This means these individuals can reason all right, but just cannot finish thoughts that would resolve issues like the one you mention: any time you bring someone who's under the influence of a memeplex to a conclusion that could alter the memeplex, their thought process will "reboot", losing any progress made in an argumented discussion. A memeplex is evidenced when someone is unable to focus on a formal reasoning you are exposing. ---------------------------------------------------------------------- lainz · 2023-01-14 14:12 hey fine insults are insults anyway. this thread should be stopped, theres no real discussion anymore... ---------------------------------------------------------------------- denis.totoliciu · 2023-01-14 15:19 ctk there are several issues that are related to the ideas coming from the academia and the possiblity to have them implemented in real world scenarios. usually, they emit ideas and theories, but skip the implementation part, which in itself is very hard to be honest. I don't dismiss that the theoretical part would be any easier, but usually implementation comes with some real life/world constraints that you just can't forsee all the time, even though you might have the best intentions to do it. For example, ask mechanical or electrical engineers, especially researchers in these areas about it.there is no 100% complete domain of activity to say that they know it all and thus they can encompass everything with their theories. That in itself is a proof that we can always expect unforseen consequences to arise.there are many things that you said that are very interesting and could be applied, desiring the best for FPC in this way. At the same time, you have to see that the way academic people think is not necessarily the way most of the people think, even when it is about programming. And history really proves it. If you want a community, you have to ask yourself what sort of community you want to have: an accademic one? a elitist one? one that is inviting or one that is repeling people?what a mathematician academician might see as the right way for expressing things, trying to use the best, shortest, most optimized form, a person with an artistic inclination might see it as to rigid, lacking a certain feeling of expression, less understandable. Without mathematical proofs and academic research, we wouldn't have been programming at the moment. At the same time, the few lines stated above can give the idea of having a second thought about mathematics and academia being the bulletproof weapon that we all have dreamt of. Ask people in physics how hard it is to model reality in its most precise form. As you said, the models we have depend on the best tools we have. Scientists in the 19th century thought then again that "Everything has already been discovered. There is nothing else to prove." up until Maxwell showed things otherwise and a whole new era opened up. While Quantum Physics might seem the ultimate thing at the moment, the history of science is full of examples where new theories and paradigms almost completely changed the view of the world. My point is that we should have a small reserve towards saying that perfection is in the hands of a few. And I think it also applies to programming. ---------------------------------------------------------------------- ctk · 2023-01-14 16:22 Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pmctk there are several issues that are related to the ideas coming from the academia and the possiblity to have them implemented in real world scenarios. 1. usually, they emit ideas and theories, but skip the implementation part, which in itself is very hard to be honest. I don't dismiss that the theoretical part would be any easier, but usually implementation comes with some real life/world constraints that you just can't forsee all the time, even though you might have the best intentions to do it. For example, ask mechanical or electrical engineers, especially researchers in these areas about it. Actually, this is not a problem when we're interested in the other cases, that you call less usual. The papers I use and the articles I link come with actual implementations when they have a proposal. Other than that, this is very abstract. I could answer abstractly, but it would be more interesting to ask: what "unforeseeable real world constraints" apply to program language design, can you cite examples to add some flesh to the discussion? Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pm2. there is no 100% complete domain of activity to say that they know it all and thus they can encompass everything with their theories. Actually, it is not necessary to know everything when you formulate a theoretical framework to express constraints about a system. For example, physicists don't need to know the location of every particle in the universe to formulate a theory of everything that works for the purposes of space travel. Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pmThat in itself is a proof that we can always expect unforseen consequences to arise. In formal methods, what does exist and correspond to what you are saying is called "accidental features": the seL4 team coined that term. Accidental features are things that we don't care whether they exist in our system or not, because we have no proof requirements regarding them. Even if they were unforeseen, this is absolutely not a problem. If it was a problem, we'd put them in the requirements and they would remain properly under control. Eventually, this boils down to having surprises when we attempt something before we know what we're trying to do. You are correct that this is a fundamental difficulty: a lot of projects are not well defined. And the seL4 people know what they want, enough at least that the surprises they get are funny, but that's all: nothing to fix! This is a counter-example to at least the fact that there will always be undesirable unexpected circumstances that arise. Neutral and happy surprises don't seem like a problem (I think?) Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pmthere are many things that you said that are very interesting and could be applied, desiring the best for FPC in this way. At the same time, you have to see that the way academic people think is not necessarily the way most of the people think, even when it is about programming. And history really proves it. If you want a community, you have to ask yourself what sort of community you want to have: an accademic one? a elitist one? one that is inviting or one that is repeling people? I need to nod to this, and this conversation comes as a perfect example of it. Should the community reject people who make claims that are provably invalid? Should a language incorporate inconsistent parts (knowing full well that they are a source of issues) to please certain people? Here's what I suggest: let's reject broken nonsense; the people who push it forward hardly ever implement anything (or it fails). But this doesn't mean everything needs to be covered in academic jargon, which I despise — this is why I have never touched Haskell (an VERY good language nevertheless): on the job, I cannot possibly have to deal with a documentation that presumes I'm fine with reading about monoids in the category of endofunctors. Out of the question. I join you in thinking that it's really unfortunate to have communities that don't mix, and are chiefly either in the culture of 80s hackers clinging to crooked tools in the industry, or academics whose parlance is impenetrable to the former. Not that the most advanced academics don't produce software, this is a misconception: see what's going on at Inria. Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pm3.what a mathematician academician might see as the right way for expressing things, trying to use the best, shortest, most optimized form, a person with an artistic inclination might see it as to rigid, lacking a certain feeling of expression, less understandable. And yet, all artists I've seen design languages either didn't go far at all in their endeavour, or simply rediscovered mathematics. Mathematicians don't do mathematics out of taste: they discover them from the void like everyone else. On the other hand and perhaps agreeing with you, I reject the mathematicians' jargon, single-letter names, algorithms named after their inventor (instead of saying what the algorithm is about). Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pmWithout mathematical proofs and academic research, we wouldn't have been programming at the moment. At the same time, the few lines stated above can give the idea of having a second thought about mathematics and academia being the bulletproof weapon that we all have dreamt of. I'm sorry, but even the artists are doing mathematics, so I can't see how to serve your point with this. Perhaps you mean that we need to not say things even when they are correct, so that certain people can have their illusions undisturbed? Academia is something I see as much of a human power structure, which is completely defective. Mathematics however, are (by their very nature and definition) perfect. Not sure about bulletproof (I mean, you can't literally fire a bullet at math), but figuratively what do you mean? What you could build an argument on, is that mathematics might not be relevant for something that you can be trying to achieve. This is different from them being wrong/incorrect. Then again, programming is only relevant to some contexts, all of which are related only mathematically  to the programming that is applied to them. (otherwise, the programming was in fact irrelevant to that context to begin with) Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pmWhile Quantum Physics might seem the ultimate thing at the moment, the history of science is full of examples where new theories and paradigms almost completely changed the view of the world. Yes, I said exactly this in a previous message: I hope there is something beyond it, but I'm aware that this hope has high chances of being let down. Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pmMy point is that we should have a small reserve towards saying that perfection is in the hands of a few. And I think it also applies to programming. I think it is (already) in the hands of the public : as evidence, I could give public URLs to everything that was of interest in the present thread. Accessibility remains an issue, and part of it is the obscure jargon used. I'm in this forum exclusively to give a hand at introducing concepts to people who want to obtain them. This is why I asked VisualLab to provide me with "impossible" problems, so I can use the case study to show known ways of handling that issue. If it's only a gut feeling that tells you I can't possibly be right, I'm going to suggest that we might just be both saying compatible things that need some refining to make it evident that they are indeed not clashing.[/list] ---------------------------------------------------------------------- MarkMLl · 2023-01-14 16:25 Quote from: denis.totoliciu on January 14, 2023, 04:19:16 pmWithout mathematical proofs and academic research, we wouldn't have been programming at the moment. Hmm. Ada Lovelace didn't have a theoretical framework. Neither did Grace Hopper. Neither, arguably did Wirth, and neither did McCarthy when he started his investigation of S-expressions as a vehicle towards M-expressions. Arguably, a great many ancient buildings and engineering achievements didn't have a theoretical framework. And where there was, it was more likely to be based on the occult rather than on provable or at least demonstrable mathematical concepts ("if we position the gargoyles like /this/ relative to the angels, the cathedral gutters will run clear"). And we're barely any further forwards in our software engineering. MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-14 16:58 well Mark, A frog can look like a wet stone and a wet stone can look like a frog, whereas a dry stone is unlikely to look like a frog? If that is what you mean... ---------------------------------------------------------------------- ctk · 2023-01-14 17:03 MarkMLI: I did notice that in research, theoretical frameworks are built as we go! An interesting point is to think of: does my theoretical framework cover what I expect to deliver, with this research I am about to put in production? (I do have language design in mind) ---------------------------------------------------------------------- Thaddy · 2023-01-14 17:41 Quote from: ctk on January 14, 2023, 06:03:32 pmMarkMLI: I did notice that in research, theoretical frameworks are built as we go! True to some extend. Two counter examples: 1. Ada lovelace wrote her work for Babbage's  machine without working hardware. 2. Edsger Dijkstra wrote much of his work on genuine paper without touching hardware. Both were proven right once working hardware was available. (or in the case of E.D. his Ph.D students implemented it) So maybe the theory was developed "as we go", but was rounded before implementation, which is usually developed "as we go". Your statement is a complete misunderstanding of logic, which is part of philosophy, not computer science. Philosophy is about the advancement of idea's. Computer science is merely about implementing those idea's. Architect vs a mere builder. Of course, "as we go", but I suspect you touch hardware during development, which to me seems a sign of weakness. ---------------------------------------------------------------------- MarkMLl · 2023-01-14 17:53 Quote from: ctk on January 14, 2023, 06:03:32 pmAn interesting point is to think of: does my theoretical framework cover what I expect to deliver, with this research I am about to put in production? (I do have language design in mind) Hmm. "Is my theory falsifiable?" Without wanting to get into computersciencecrap, I think that's related to the question of whether a language is finite, i.e. can be generated (or analysed?) by a finite automaton. MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-14 18:33 No, your sticking nicely to philosopy, Mark. Karl Popper rules.... ( but I am both political scientist and a computer scientist ) ---------------------------------------------------------------------- lainz · 2023-01-14 19:23 Quote from: VisualLab on January 11, 2023, 04:39:50 pmQuote from: lainz on January 10, 2023, 02:02:08 am5 GB to get a hello world  Really? And that's all "Hello world" allows you to get? The "creation machine" can be extensive. Worse than the product of this machine is bloated I forget to reply this... Same with python, you need to install it, I don't know how many MB or GB it costs, but is the same with Lazarus, to produce software actually you need a big download, so again 100 mb is nothing. Of course you can do more than a Hello World with Lazarus, same with Python. About the size of the produced executable, you can ship only the bare scripts and let the user install python. Same with Java, C#, all bigger languages than pascal do that way. Smaller size than Lazarus executables, just need a library to install first. Remember you don't need to download 100 mb for a hello world app in pascal because you've already downloaded a lot of GB in the operating system. The size is always there, it depends only how it's distributed between the OS, libraries and third party downloads. ---------------------------------------------------------------------- MarkMLl · 2023-01-14 19:52 Quote from: lainz on January 14, 2023, 08:23:09 pmThe size is always there, it depends only how it's distributed between the OS, libraries and third party downloads. Arguable. Please note Liam's quote earlier in the thread. https://forum.lazarus.freepascal.org/index.php/topic,61781.msg466351.h tml#msg466351 I've been bitten by a Python-written plugin for InkScape which was so bloated that it took 70 seconds for each operation... and none of the developers knew how to install it for debugging. I've just checked, and an FPC program with Python embedded in it is around 1Mb of binary. OK, so that uses dynamic linkage to the Python runtimes, but at that point there's the potential of a fairly "lean and mean" set of callbacks into an LCL-based UI, which should be immediately debuggable using Lazarus and wouldn't be carrying Electron etc. around with it. MarkMLl ---------------------------------------------------------------------- Fred vS · 2023-01-14 20:58 Quote from: lainz on January 14, 2023, 08:23:09 pmSame with python, you need to install it, I don't know how many MB or GB it costs, but is the same with Lazarus, to produce software actually you need a big download, so again 100 mb is nothing. Of course you can do more than a Hello World with Lazarus, same with Python. Hello. It depends highly of the IDE and GUI widget-set you use. For example on Linux: The compiler: fpc-3.2.2.x86_64-linux.tar = 87.0 MB The IDE and the GUI widgetset: with MSEide+MSEgui = 8.1 MB Total: < 100 MB for a complete GUI system. ---------------------------------------------------------------------- ctk · 2023-01-14 21:10 Quote from: Thaddy on January 14, 2023, 06:41:54 pmQuote from: ctk on January 14, 2023, 06:03:32 pmMarkMLI: I did notice that in research, theoretical frameworks are built as we go! True to some extend. Two counter examples: 1. Ada lovelace wrote her work for Babbage's  machine without working hardware. 2. Edsger Dijkstra wrote much of his work on genuine paper without touching hardware. Both were proven right once working hardware was available. (or in the case of E.D. his Ph.D students implemented it) Ah, I didn't mean any practice by "as we go", it was "in research": I meant "the theoretical framework is built along with the theoretical research". Sorry for the confusion. When it works on the hardware it's called "experimental confirmation" I believe. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-14 21:24 Quote from: ctk on January 14, 2023, 05:22:58 pmI'm sorry, but even the artists are doing mathematics, so I can't see how to serve your point with this. Perhaps you mean that we need to not say things even when they are correct, so that certain people can have their illusions undisturbed? You are right about saying what needs to be said in order to dismiss any illusions that will for certain make life harder for a computer programmer in the long run. Please let me refine my statement. I was trying to state that some things are really hard to represent mathematically in their entirety; i.e. human emotions. Where I am trying to go with this is that in the world, probably even in the domain of computer science, more specifically in programming, there might always be at almost any moment something that slips through the fingers of the best and brightest people with the best intentions in mind. For me at least, this is an idea that helps me keep an open mind towards appreciation and amazement for what other people do or did, and even more, for the great ideas that make the world better and of which I would have never thought. Quote from: ctk on January 14, 2023, 05:22:58 pmIf it's only a gut feeling that tells you I can't possibly be right, I'm going to suggest that we might just be both saying compatible things that need some refining to make it evident that they are indeed not clashing. That is the cool part of the discussion! The different perspectives that may arise from such discussions when everybody is putting their heads and hearts to work can bring more interesting information about the subject at hand; such information that one single individual couldn't have thought of alone. This is why I really believe that programmers should be encouraged to state what they believe in and what they think, even though their ideas might not get implemented right away or stated as the best ideas around. In the long run, FPC and Lazarus and the entire community would gain tremendous insight and benefits on so many areas of programming and human interaction, be it online or in real life, that I can't even describe here in a few words. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-14 21:30 Quote from: MarkMLl on January 14, 2023, 05:25:53 pmHmm. Ada Lovelace didn't have a theoretical framework. Neither did Grace Hopper. Neither, arguably did Wirth, and neither did McCarthy when he started his investigation of S-expressions as a vehicle towards M-expressions. You are right and this is another very good proof that we have to live with both worlds at the same time: the one that doesn't have theoretical frameworks and the one that does. In my opinion the trick would be to know how to use the two, even though they apparently don't mix. Maybe that is the whole idea: not to try to mix oil and water, but instead to use them to cook a good meal. ---------------------------------------------------------------------- Joanna · 2023-01-14 23:12 Quote Joanna your biggest problem is that you want people to talk only what you like, similar to a sort of dictator. Even though you might have good intentions to keep the community together, from practical proof demonstrated in time, you forget about the freedom and the nature of open source; and try to impose along the way stricter constraints by day that in the end proved to be a way heavier burden and censorship mechanism for the programmers that really wanted to say something.That is a ridiculous accusation made against a channel which you have completely abandoned because you are “scared of Libera“ for whatever reason. If I recall correctly you and gpf talked quite a lot about very Off topic political Things in channel back on freenode with no censorship. You are welcome to create your own channel and moderate it any way you like. The #fpc channel is NOT a free speech zone for people who hate pascal to come to and harass us, it is a support channel for pascal programmers using the fpc compiler. There is no Legitimate reason for people who don’t use pascal to even be there. If someone is new to pascal language and wants to learn more about it it is expected that they will download the Lazarus /fpc compiler and start trying to do some programs. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-15 01:06 Quote from: Joanna on January 15, 2023, 12:12:07 amThat is a ridiculous accusation made against a channel What I wrote is about you and your actions. Joanna look out on the internet, ask programmers how many languages they use. Ask them if they dare discuss about other programming languages than the one the use daily. You really made a brand out of the "trolls" and the "harrassment" thing, pushing it to the next level and you figured that the louder you talk about it, the more intimidation you will create around. I thought that at some point this thing will just pass, after years of doing it, but it is your brand and main activity on chats and forum. Quote from: Joanna on January 15, 2023, 12:12:07 amThe #fpc channel is NOT a free speech zone for people who hate pascal If you are deciding who is the one not liking Pascal and who does, man, that is a very untrustworthy measure. Just look on this thread how you immediately categorized some experienced programmers as a danger to Pascal because they dared saying what they consider to be drawbacks in the language. Whenever you see that your thing doesn't work and can't work against people who have tens of years of experience in programming, you just quiet out because you can't really face their arguments with technical arguments. Please check out the answers of some people that you deemed to be "very dangerous" for FPC. What would have happened if these people had fallen for your discours and left the forum because "they don't like Pascal" and "they dare criticize Pascal"? The single thing that would have happened is that the discussion would have been muted, just as you succeeded doing it on IRC, too. Quote from: Joanna on January 15, 2023, 12:12:07 amThere is no Legitimate reason for people who don’t use pascal to even be there. The dictator has spoken. ---------------------------------------------------------------------- PierceNg · 2023-01-15 01:43 Quote from: denis.totoliciu on January 15, 2023, 02:06:33 amWhat I wrote is about you and your actions. With friends like this, Pascal doesn't need enemies. Quote from: lainz on January 14, 2023, 03:12:34 pmhey fine insults are insults anyway. this thread should be stopped, theres no real discussion anymore... People won't go to IRC, so IRC has come to the people! This thread should be merged with https://forum.lazarus.freepascal.org/index.php/topic,61328.0.html ---------------------------------------------------------------------- 440bx · 2023-01-15 02:07 Quote from: PierceNg on January 15, 2023, 02:43:46 amPeople won't go to IRC, so IRC has come to the people! This thread should be merged with https://forum.lazarus.freepascal.org/index.php/topic,61328.0.html I think that's a good idea.  Somewhere around page 6, this thread started going downhill and seriously off-topic. ---------------------------------------------------------------------- MarkMLl · 2023-01-15 07:53 Quote from: Joanna on January 15, 2023, 12:12:07 amYou are welcome to create your own channel and moderate it any way you like. The #fpc channel is NOT a free speech zone for people who hate pascal to come to and harass us, it is a support channel for pascal programmers using the fpc compiler. Please stop using this forum to push IRC. We aren't interested. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-15 08:09 Quote from: Thaddy on January 14, 2023, 06:41:54 pm2. Edsger Dijkstra wrote much of his work on genuine paper without touching hardware. Both were proven right once working hardware was available. (or in the case of E.D. his Ph.D students implemented it) Dijkstra /planned/ his work on paper, but if you read the EWD reports you will see that he was very much not just a "paper warrior" and dealt with very practical things like what hardware would be needed at a programmer's workstation in a computing facility. He was, however, somewhat wedded to pre-interactive computing, i.e. you either have full control of the machine or you have control cards at the start of your program that allows jobs to be "batched" with control transferring from each to the next in good order. I don't believe that he had any first-hand exposure to the major "at your desk" facilities (BASIC and APL), he was a consultant to Burroughs and while they did, during the latter part of his active career, have an interactive facility (CANDE) he didn't have direct access to one of their mainframes. And he had a /real/ chip on his shoulder about IBM, so it's unlikely that he'd have accepted an IBM terminal (VM/370 etc.) even if offered. MarkMLl ---------------------------------------------------------------------- Aruna · 2023-01-15 13:11 Quote from: Joanna on January 08, 2023, 02:57:10 pm1. Why does the color property of tbutton not do anything? I have to use custom drawn controls. Can anyone tell me why the color property doesn’t work For tbutton? In the Lazarus IDE top level menu please select:  View-> Restriction Browser then in the window that pops-up select TButton.Color. I have attached a screenshot. The reason you are unable to access the color property is because: Button color cannot be changed. It is impossible to implement without making them owner drawn. ---------------------------------------------------------------------- MarkMLl · 2023-01-15 13:49 Quote from: Aruna on January 15, 2023, 02:11:42 pmThe reason you are unable to access the color property is because: Button color cannot be changed. It is impossible to implement without making them owner drawn. In fairness, you don't know that zhe isn't aware of that. A more useful response might be that such-and-such a platform cannot make the colour persistent (without a great deal of extra code in the LCL) hence has to be redrawn every time. MarkMLl ---------------------------------------------------------------------- winni · 2023-01-15 13:52 Quote from: Joanna on January 08, 2023, 02:57:10 pm 1. Why does the color property of tbutton not do anything? I have to use custom drawn controls. Hi! Use Linux as OS to make the color of the TButton working Winni ---------------------------------------------------------------------- Thaddy · 2023-01-15 14:40 On windows Lazarus wraps the OS API button and that does not allow to set the color, except the font color. But TBitButton allows it, so use that. No need to use custom draw. Another option is to theme your application, in which case TButton will have the color of the theme. Has been answered umpty times btw. ---------------------------------------------------------------------- VisualLab · 2023-01-15 15:46 Quote from: ctk on January 14, 2023, 06:30:54 am... this discussion, as I said from the beginning, was an overt war (by proxy) between our ways of life. What war? I just don't agree with some of your statements. You write that something can be done differently, or that something cannot be done. But you don't provide arguments for it. And then you wonder why someone expects them. At the same time, when someone makes their statements, you yourself demand evidence. Quote from: ctk on January 14, 2023, 06:30:54 amAfter all, if what I said isn't just vaguely scientific-sounding garbage ("rococo")... And what can I do if you like writing lyrics in the "rococo" style? Personally, I have nothing against it. It's even funny Quote from: ctk on January 14, 2023, 06:30:54 am...it is indeed a serious blow to your world view of "experience" and "complication". My worldview and experience are fine Quote from: ctk on January 14, 2023, 06:30:54 am I do need to address this frontally to alleviate your worries: these simple and powerful ideas I'm so happy about weren't discovered with ease. Luckily it's from the front. If you wanted to work from behind, then I would definitely be worried Quote from: ctk on January 14, 2023, 06:30:54 amReasoning. Through reasoning, you can reach a lot of conclusions that you could also have reached through experience… Brilliant. Thanks for the explanation, I never would have thought of that Quote from: ctk on January 14, 2023, 06:30:54 amSorry if that isn't breaking news to you; in fact, I strongly suspect that you knew this. The rest of my answers will not be any more earth-shattering than this triteness. You are amazing… in your persistence in explaining the obvious Quote from: ctk on January 14, 2023, 06:30:54 am...it is indeed advanced reasonings and reckonings that made nukes possible, to my abysmal dismay. This is shocking. Until now I thought that the achievements of science are used by charities to feed hungry children and treat poor and sick people in hospitals. I think I'll throw away all my math books and move to a cave or a forest Quote from: ctk on January 14, 2023, 06:30:54 amIt will help if I first say that opinions which are self-contradicting will have to be rejected, assuming a practical result is to be attained. This may seem obvious, but is a caveat for some mentalities out there, who will leave frustrated that the impossible is not possible. The word "complicated" you used is not adequate to describe outright impossibility. This is a classic "waffle". There is no substance to it. Quote from: ctk on January 14, 2023, 06:30:54 amWe always take the macroscopic model of reality as an axiom in language design, and with that, something cannot both exist and satisfy a self-contradicting requirement. Macroscopic model of reality has nothing to do with programming language? Programming language design is an abstract. Quote from: ctk on January 14, 2023, 06:30:54 amI was saying that if you intentionally make the situation unmanageable, it will be unmanageable. It's a truism. Quote from: ctk on January 14, 2023, 06:30:54 amQuote from: VisualLab on January 13, 2023, 11:35:52 pmOh, one more thing: "complications, ... that, ... are not even mathematically manageable." Can I ask for some evidence? Or maybe two razors should be used here: Hitchens and Ockham? Yes. Not only you can, but I will even helpfully go ahead and act as though you had asked for evidence. In passing, the way you put this makes me suspect that your curiosity is more outraged than genuinely piqued with interest, though. I would feel more at ease if you waited for the examples and proofs you requested BEFORE mentioning the open possibility that what I say could be hot air, also known under the much clearer name of "pretty, yet empty bullshit". You made some claims, so it's obvious that I wanted to know your arguments for it (before that, you yourself accused me of making claims without evidence). Why should I wait? And why this secrecy? This resembles the so-called clickbait like "you won't believe how he did it, doctors (or: accountants, firemen, etc.) are furious with him." What's the wait for? („What are you waitin' for? Christmas? ”) And I will wait 20 years for an answer Quote from: ctk on January 14, 2023, 06:30:54 amQuote from: VisualLab on January 13, 2023, 11:35:52 pmThe distinction between complicated and complex is that with complexity, you know what you're doing, therefore you can provide certain (absolute!!!) guarantees. (Yes, I included "absolute" for the outrage value to people who swear by "there will always be exceptions" — my intent is to make them reconsider that outrage. Some things are absolute, even in practice (oh yes!) whether we like it or not.) It's easy to make things complicated, and things can only be made simple by breaking them down in terms of their inherent complexity. This is a classic "waffle". Quote from: ctk on January 14, 2023, 06:30:54 amQuote from: VisualLab on January 13, 2023, 11:35:52 pmBesides, I still believe that you can't please everyone. This is not based on academic research. life experience (everyone has one). And I have proof: I do not agree with your statements. Ergo: it's impossible to please everyone Your reasoning is interesting, as it employs a form of strange loop. Before you attack me with "rococo" and other sarcasm that will eventually tire me, no, I'm not making that up: https://en.wikipedia.org/wiki/Strange_loop I believe that it does not work, because I hope that you will no longer be in a capacity to state formally what you do not agree with, after I have given evidence in the present message. In this case, it would be that you are begging the question, that it to say, this would be a form of circular reasoning. I am indeed assuming that you have to be coherent with yourself and not using a malformed argument, in order to validly disagree with something. By challenging this assumption, one can derive a proof: if you cannot be contented (that is to say, if you have self-contradicting requirements) then you cannot be contented. So indeed, interestingly enough, there are people who cannot be pleased because they have decided it is so. However, the statement is "you can't please everyone", which I justified earlier to be wrong, if we include the premise every single person can be pleased individually. I believe that this is the spirit of this statement: "you can please every person individually, but you cannot please everyone simultaneously". So by stating that you cannot be pleased, and therefore a fortiori everyone, which includes you, cannot be pleased, you are probably not in line with that. You are however correct that a person who cannot be pleased, cannot be pleased. This is a perfect tautology. [/quote] You have made a philosophical argument, completely contentless. And at the end you accuse me of tautological thinking. My statement was simple and humorous, but without irony. Simple. Nor does it contain any requests. Do not attribute any additional additional content to my statement. Simply: "What I have written, I have written." Quote from: ctk on January 14, 2023, 06:30:54 amDon't fight me when I help with making your point! Thanks for the offer of help, but if I've been doing pretty well so far, there's hope I can still manage Quote from: ctk on January 14, 2023, 06:30:54 amHere, you find yourself making the  unsubstantiated claim that I am in error. (Hitchens isn't far away) And how can one treat the statement: „Which can be completely sidestepped by using orthogonal abstractions in language design, maximizing the number of abstract symmetries at each occasion.”? And who should apply Hitchens's razor here? Quote from: ctk on January 14, 2023, 06:30:54 amCan you substantiate the claim that I produced a sophism? Pointing the error in a little more detail will be sufficient, I am not very demanding and will help along fixing whatever error I might have made, if only it is specified what the error is. To be precise, if you want to challenge what I said, I think that your quip has to be exactly ONE of: - You judge that there is no way to look at the words I wrote that fully makes sense, and explain where my formalism lacks; - you understand the meaning of the sentences I wrote, but there are missing steps and you cannot see how the conclusion derives from the premises; - you need evidence to believe a claim I made (this does not seem to be the case, otherwise you would have requested it). It would seem that we are in the second case, so I will develop some more: For orthogonality, a specific instance of it in the field of software engineering is decoupling. To give a very specific and interesting example of decoupling in programming language design, one can ask: what would be a syntax where semantics are decoupled by being orthogonal? A possible (and quite simplistic) answer here is to assign each character to a single meaning, giving rise to a pretty interesting family of syntaxes. For example, we could say that [] is an ordered collection; that {} is an unordered one; and if () is assigned to priority in expressions, then it cannot be used for tuples… but we are using fully orthogonal concepts here: tuples can now be declined as either ordered or unordered collections. I am very fond of this manner of designing languages, and have already produced one such language syntax for fun. We can see it in more detail if you are interested, perhaps once you are satisfied with the other points so as not to be all over the place at one given time. But what was really the point of this lengthy argument? It seems quite disconnected from my original simple statement I gave (i.e. “It seems to me that the first thing to consider is the introduction of those proposals that come from the current Pascal community, and careful and balanced introduction of new elements to the compiler. ”. Quote from: ctk on January 14, 2023, 06:30:54 amI mean, this conversation has to stay manageable, and for that, the level of (conceptual) hostility has to drop. At the point of this writing, you have adopted a position that I am emitting word salad, and I feel the need to see if my reply will change any of that before proceeding any further. If you judge that something I said so far does not make sense, then a mis-understanding needs resolving, or perhaps a mistake in an argument by either of us needs to be corrected first. You use a strained, mentor-like style. In some statements you write out truisms. In others, exaggerated generalities. This causes chaos in your statements. Some of your statements give the impression that you think everything can be proven mathematically. You have a kind of utopian approach to computer science. No one here denies the usefulness of mathematics. It is quite the opposite. But practice is also important. Quote from: ctk on January 14, 2023, 06:30:54 amAre you using a different definition of "proven" than "there exists a mathematically well-formed deductive path from our premises to this predicate"? Do you think that always and everything can be proved mathematically? So, are physicists fools needlessly wasting taxpayer money on useless experiments? Because the same physical experiments are often repeated (I mean the verification of someone's research). People have different opinions on science and technology. Even the best experts can get it wrong sometimes. Just look at the history of science. Quote from: ctk on January 14, 2023, 06:30:54 amQuote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amLeslie Lamport will tell you that mathematical elegance is the ultimate key to this. Reveal the veil of secrecy. Share your knowledge with your neighbor (even if that neighbor has not achieved mathematical nirvana I shall yield the floor to the man directly if you wish to know about it: https://invidious.snopyta.org/watch?v=Fq5EQBFLEC8 Very interesting: „Leslie Lamport: "If You're Not Writing a Program, Don't Use a Programming Language" Algorithms are not programs. They can and should be written with math rather than programming languages or pseudo-languages. This applies to many more algorithms than the ones taught in algorithm courses. ” I disagree with this statement. Thought (information, content) can be communicated in many ways. People have different views on different issues, different needs and expectations. Some are ways of conveying information are more clear, others less so. Besides, it all depends on whether the sender and the receiver use the same way of conveying information (medium, language, etc.). So what if a certain group of people comes up with their own way of recording information. Another group may find this way lousy (for various reasons) or may not be in touch with the first group. And it will come up with its own notation. After all, we all know that this has happened with spoken languages, writing systems, systems for writing numbers and mathematical expressions. And we also know that only some of them have survived to this day but not because they were the best or mathematically proven, but because of economic and military dominance. The current mathematical notation is simply adopted as a historical legacy and is passed on in schools as such. It is not necessarily the best. Everyone is aware that another can be created, perhaps better, perhaps more readable. Mathematical expressions alone are not always the best way to convey information. Otherwise there would be no graphs, diagrams, charts. So: algorithms can be written using mathematical notations, but they don't have to. And certainly they should not be authoritatively enforced. Besides, this is a utopian demand. Who would supposedly enforce it? Some "mathematical Stalin"? And so there would be dissidents among scientists who would contest it. After all, it would be a complete negation of the development of science. Anyway, people need different ways. When writing down a complex algorithm, the "wall of stamps and worms" is completely unreadable. Even a person proficient in reading these hieroglyphs must lose a lot of time the first time when he first "deciphers" them. It is obvious to any reasonable person that this is why they were created: pseudo-code and diagrams (schematics). And that's why we have UML or SysML. And each of these has its uses. ---------------------------------------------------------------------- VisualLab · 2023-01-15 15:47 Quote from: ctk on January 14, 2023, 06:33:44 amQuote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 12, 2023, 02:15:57 amIn addition, divergent expectations and needs of people are a problem. Finally, what is good for one is not always so good for another. Again, this comes with no backing or evidence. I can most likely refute any example you will produce, by providing a solution that pleases all. Well, do it instead of writing hollow phrases. Send your examples. I have already provided solutions for all the examples you produced. Please produce more so I can oblige. You can go say things like "hollow phrases" elsewhere: I was sending out a challenge to give me problems to solve, and you respond "solve it!" without giving me a problem to crack. I'll just say I'm now giving you a chance to respond that you misread what I was saying. For goodness sake, after all, people are different. They are not clones. Quote from: ctk on January 14, 2023, 06:33:44 amQuote from: VisualLab on January 13, 2023, 11:35:52 pmQuote from: ctk on January 12, 2023, 03:00:08 amQuote from: VisualLab on January 09, 2023, 06:42:32 pmBut they, the new creators, will surely create a better language. And this is an illusion. They will end up just like those earlier language makers. Their language after many years (if it survives) will also be "bloated" and full of quirks. Your fallacy is that because others failed at X before, X is impossible. Proof, proof please. Razors are waiting Are you sure you read correctly? I will give you the benefit of the doubt. For this time only. You claim that "They will end up just like those earlier language makers", and I remarked, why should this be true? You provided no reason why this should happen over and over again without ever an exception to this principle you uphold. Upholding a claim that has no reason to be true is a fallacy, and I made a note of that. If you cannot see this, I believe we do not have a working conversation any more. Do you think that one day someone will create a programming language project that won't be affected by the development problems I mentioned? Such thinking is pure utopia. History shows that this has always been the case. Of course, you can certainly create a simple and clean programming language and then block its growth so that it doesn't become bloated and confusing. But then people can stop using it if they find it too primitive. And they will use another one that may be bloated and confusing but more useful to them. ---------------------------------------------------------------------- VisualLab · 2023-01-15 16:44 Quote from: MarkMLl on January 14, 2023, 08:42:56 amQuote from: VisualLab on January 14, 2023, 12:13:27 amRightly. But Python has more bugs. This would be a litany. Unlike Rob Pike and his colleagues, Guido has learned nothing. It's not that he's learned nothing, but that Python- and I'm tempted to say the same about Pascal- is driven by a community intent on preserving its shaky foundation. MarkMLl But consider that it depends on the expectations and needs of people who use these languages, and more precisely the compiler (Pascal) or interpreter (Python). For example, I need to develop software that has a GUI. I also want to be able to easily transfer and run the programs I create because other people use them on their computers. I think it has to be quite simple. Simpler programs are files: EXE and INI. And the more complex ones have their own installer and uninstaller. It is important to me that the users of my programs "do not have to do PhDs" in computer operation and software installation. These people are not interested in computer science, etc. issues. For them, it is simply a tool to simplify their work. That's why programming languages for which there is a compiler and decent libraries are useful to me. Hence such “inventions” as: JavaScript (node.js, Electron) or Python are out of the question. I also don't feel like using something that wastes my time just because some egghead nerd has invented a "take your pants off over your head" software development process. Hence, other "inventions" such as C and C++ fall off. I also do not use solutions that require the user to install additional layers such as VM and therefore I do not use Java and C#. I also don't feel like dealing with the twisted creations of a specific group of academic inventions: Haskell, Lisp, etc. So all I'm left with is Object Pascal. There are few features in Object Pascal that annoy me. One such example is platform-dependent types (table: „Platform-dependent integer types”). I don't use NativeInt and NativeUInt types. This is a risky solution. In the older version of the software, I used LongInt and LongWord, because once Windows was only available in 32-bit. And I had to face it. Of course, someone else can use this solution and it may be needed for them. But I have the comfort that I don't have to use these types. The problem with Python is that: it lacks a static typing,no possibility to declare variables,no constants,missing some instructions (case/switch),strange behavior of some statements (for),lack of some built-in data structures,no real class support (only has primitive emulation),the presence of those forced damn indentations,the code is interpreted (slow and single- threaded interpreter),what will be created is not an EXE file but a set of scripts, what will be created (let's call it an application) must be delivered as source code (so what if it can be packaged?),if the application is extensive, additional libraries must be installed in the system (which are often very bloated),people on the system may have different versions of python libraries, which can cause conflicts. These are only the most severe ones (and I'm sure I missed many others). Where's the pragmatism here? ---------------------------------------------------------------------- VisualLab · 2023-01-15 16:50 Quote from: ctk on January 14, 2023, 12:40:17 pmQuote from: circular on January 14, 2023, 08:08:13 amAbout the units of measure, they are handled natively in F#. So there is at least one language that does. https://learn.microsoft.com/en-us/dotnet/fsharp/language- reference/units-of-measure This is checked at compile time only so there is no overhead and it can be applied to any numeric type. It cannot guess though when to convert from grams to kilograms etc. you need to specify such conversion. Speaking of which, here's an article on how this is done— it uses 'refinement types', which are introduced very neatly here: https://yoric.github.io/post/uom.rs/ I was hesitating whether to mention this or not when I used incompatible units as an example, because indeed, without refinement types they don't shine as much. Or maybe it is the addition of such details that makes the language excessively complicated and bloated? Yes, some people will like it. But for others it will be overkill. After all, in this way you can extend the design of the language more and more minutely, to the point of absurdity. Perhaps this should be handled at the library level? ---------------------------------------------------------------------- circular · 2023-01-15 16:56 Quote from: ctk on January 14, 2023, 12:40:17 pmSpeaking of which, here's an article on how this is done— it uses 'refinement types', which are introduced very neatly here: https://yoric.github.io/post/uom.rs/ I was hesitating whether to mention this or not when I used incompatible units as an example, because indeed, without refinement types they don't shine as much. The example in Rust is probably a bit different. It is a way of doing it by building on language features. In F# I have the impression there is no need to refine. Or is it somehow done implicitly in the CompilerServices namespace? ---------------------------------------------------------------------- MarkMLl · 2023-01-15 17:23 Broadly speaking I agree with you, and TBH I think that you and ctk aren't that far apart in philosophy... I just wish that you wouldn't both treat this thread as though it were IRC :-) However if I could just focus on one point: Quote from: VisualLab on January 15, 2023, 05:44:04 pmBut consider that it depends on the expectations and needs of people who use these languages, You also have to consider that it depends on the expectations and needs of people who don't use them... but are amenable to persuasion. Let me give you an example. The FPC core developers are set dead against the extremely common idioms, probably derived from C but possibly older, i++ and i += 1 (the latter's in FPC, but they make it clear that they regret the fact). Everybody (obligatory xkcd https://xkcd.com/2501/ ) knows that these have semantic problems, and particularly now that C (via C++) has moved some way from its direct-pointer-manipulation roots i++ appears to be somewhat deprecated. But i += 1 is still part of the core expectation that the average programmer has before he'll take a language seriously. So I'm inclined to argue that a well-tempered language like Pascal would be better supporting it (with enforced limitations) than rejecting it on the basis that Wirth didn't invent it: particularly since Object Pascal contains a whole lot of questionable stuff that Wirth didn't invent, piled on top of stuff that Wirth did invent but was too rushed to implement properly. Jumping a bit further forward and picking up your point about implementation-dependant integer sizes etc. While I should really be referring to the ISO Pascal standard for this comment, I can say from memory that Modula-2 (as promulgated by Wirth) had a similar problem, but one of the first things that the ISO did when they started standardising it was define a robust set of integer and cardinal types. I confess that I tend to use byte, word, integer etc., when I know in my heart that I should be using uint8, uint16 and int32. Mea culpa. Apart from that: your points about Python are pretty much unarguable IMO, although I suspect that some of them aren't entirely up-to-date. But improving it in the way that C was arguably improved to get to C++ is virtually impossible, when one allows that the average Python user is not sufficiently "skilled in the art" to understand the criticisms and will obstruct any non-trivial improvement. The bottom line is that Wirth wrote Pascal (with relatively weak types) and Modula-2 (with stronger types). A large part of the language design fraternity now appreciates the importance of strong typing over and above what is mandated by numeric representation, and that- more than the languages he's designed- is Wirth's major contribution to the industry. MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-15 17:55 Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 amI counter the statements of ctk because I disagree with them for the most part. Would you still disagree with them in the instance where they would happen to be correct? If indeed the case, that is of concern to me. There is no obligation to agree with the interlocutor. Make convincing arguments, not bizarre excuses or overblown statements. And besides: „don’t worry, be happy” Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 amI get the impression that he is an idealist, a utopian computer scientist. I think that "impression" is a funny way to phrase that I outright said it to your face in my first reply to you: Quote from: ctk on January 07, 2023, 12:56:44 amtry as you might, you can not dent my idealism, and I can not lift you up from the doldrums of defeatist relativism. So yeah, having said that, you "getting an impression" that I am an idealist is actually a lot less than what I thought I could legitimately expect. OK. I don't mind you being a utopian IT idealist. Just don't impose your views on others, because they, like you, are also entitled to theirs. And that doesn't automatically mean they're wrong and you're right. It could be the other way around. Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 amYes, you have to have a goal to pursue (such a general outline). But you can't overdo it. Pragmatism is really important. Does "pragmatism" in your book mean "giving up when 80% of the result is achieved through a model too simple to fully handle what it's modeling"? What do you mean by "your book"? I don't write any books. I have no such need. And why do you think that considering pragmatism is giving up? Do you think pragmatism is a bad thing? Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 amWhen a person learns at the beginning of a field of knowledge in primary or secondary school, everything looks perfect in textbooks. And it is best seen in textbooks of mathematics… Yes, because mathematics are perfect truth in the very specific sense that everything is implacably proven from arbitrary axioms. What is "perfectly true" in mathematics is that the conclusions do derive from the axioms. Theorems are "relations of ideas" that are true and suffer zero exception. If you're battling this fact, you will look like Don Quixote against the windmills. Nice statement, something like Lenin ("implacable roller of history", etc. Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 am…natural science and technology. Respectively: Natural science uses approximative models and teaches students to fit models and measure the imprecision of the fitting; Technology uses physics, which have turned out to be as exact as our handicraft implementing it in reality. I hope there's something more behind quantum physics, but so far we're not finding phenomena that cannot be derived from them, so that's pretty solid evidence. That's what I wrote about. You don't have to explain what I wanted to write Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 amAnd then, when someone graduates from college, they already know that "reality squawks". In fact, textbooks teach models that contain some simplifications (for various reasons). Actually I noticed this when I was 8 years old, and the teacher said it was impossible to subtract a larger number to a smaller number. These were ℕaturals, of course. When, the next year, the same teacher told us that in fact we could do it and it yielded a negative number, I acquired a suspicion that has never left me since, and asked "what else have you lied to us about?". From there on, I always dug deeper to find information that no longer "squawked". For example, when the Bohr model of the atom, with gravitating electrons, was presented to us, I already knew that its ability to represent reality had been disproven by experiment and was on my way to the pilot wave theory (look it up, it's really neat) — which so far has not "squawked": QM fits our results in reality. Don't write nonsense and don't slander the teacher. The teacher has not lied to you. It's just that when children start learning, they have no knowledge at first. So the simplest things are explained. And then it gradually goes into details. It's hard for teachers to start with functionals, topology, string theory, orbitals or mesomeric effects right away. Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 amReal objects and phenomena are more complex and often have many exceptions compared to models. This is the case  if your model is too simple to cover the complexity of what you are modeling. Which has never been suspected (by real world experience) to be the case for QM, for example. To see those as exceptions means you are indeed thinking the reality in the terms of an approximative model, which is dangerous; but it takes a lot of effort to extract oneself from that. But of course. This is the development of science. Models are getting closer to reality, but they are also becoming more and more complicated. But users of these models know about their shortcomings and shortcomings. If we have the choice of no model or a "lame" model, the defects of which are known, then the latter case is probably better. After all, it is known that models have their limitations and you should not go beyond its limits. Quote from: ctk on January 14, 2023, 01:23:58 pmQuote from: VisualLab on January 14, 2023, 12:58:26 amSo it's not surprising that programming languages, being technical products, get more and more complex after the incubation period, that compiler (or VM or interpreter) developers compromise and (usually) try to be backwards compatible. This is pragmatism. You can ignore it, but it's not always a good solution. As it turns out, Lisp's s-expressions remain, to this day, a fierce and ubiquitous counter-example to this. What you say applies to "conventional languages", such as Java. In his 1977 ACM Turing award lecture, John Backus, recipient of the award, said: Quote from: https://web.archive.org/web/20161229225241/http://www.thoc p.net/biographies/papers/backus_turingaward_lecture.pdfConventional programming languages are growing ever more enormous, but not stronger. Inherent defects at the most basic level cause them to be both fat and weak: their primitive word-at-a-time style of programming inherited from their common ancestor, the Von Neumann computer, their close coupling of semantics to state transitions, their division of programming  into a world of expressions and a world of statements, their inability to effectively use powerful combining forms for building new programs from existing ones, and their lack of useful mathematical properties for reasoning about programs. He then proceeds to explain how he thinks things should be done instead. Yes, the answers have been out there for about 50 years now. Praised by prestigious awards even. Such a great programming language and this crowd of ungrateful jerks don't use it - they didn't recognize its greatness Don't exaggerate in singing these paeans to Lisp. He's bizarre. I do not deny that for some programmers it can be useful. But for most programmers, it was never useful. He was too exotic. Quote from: ctk on January 14, 2023, 01:23:58 pmJust because the makers of the technology you know did not listen to this, doesn't mean it's not here. It is. It's there, waiting to be used, while you keep yelling that it cannot possibly exist — and quite possibly get people around you to even believe that, actively perpetuating this mediocrity. This is why I said from the get-go we are enemies: I had immediately detected what you were up to, perhaps against your better judgement. This mediocrity that bothers you so much is useful. And the second point - I do not consider you an enemy. We just differ in our approach to programming languages, their usability, etc. You are an idealist. I'm a pragmatist. It's completely natural. ---------------------------------------------------------------------- VisualLab · 2023-01-15 18:06 Quote from: ctk on January 14, 2023, 01:34:14 pmQuote from: MarkMLl on January 14, 2023, 08:40:23 amQuote from: VisualLab on January 14, 2023, 12:01:58 amYes, "small is beautiful". But is small useful enough? Or is it that small is of little use? Go back through what I've written. Pascal was rushed and flawed. (C wasn't particularly rushed, but was intentionally a simple language easy to compile). To paraphrase Brooks' paraphrase of Ovid, however much you stack on top of a foundation like that is nothing more than a big pile. I commend your accuracy in wording this. This makes me want to stress how important it is that you indeed said easy, and not for example 'simple'. Indeed, going the easy way instead of the simple (therefore small*) way is a recipe for steaming piles. So, VisualLab asks, "But is small useful enough?". Yes. Yes it is. Unless stockholm syndrome has kicked in and you cannot part with the defects of your tools (speaking of programming languages here). And what does Stockholm syndrome have to do with a programming language? It's a tool. Don't overdo it. Quote from: ctk on January 14, 2023, 01:34:14 pm(*) if anyone wants a measure of 'smallness', it can be expressed in terms of things like Kolmogorov complexity or informational entropy (the number of bits required to express our information — in this case, a programming language's definition). And how do you want to check it? For the first proposition (Kolmogorov complexity) maybe it can be done for simple cases. And for the second proposition, do you want to study the compiler itself or what it generates? And how does it relate to usability as understood by the users of the tool, and not mathematicians or computer theoreticians? ---------------------------------------------------------------------- MarkMLl · 2023-01-15 18:15 Quote from: VisualLab on January 15, 2023, 06:55:49 pmWhat do you mean by "your book"? I don't write any books. It's a very common English idiom. Alternatives are "by your standards", "in your philosophy" or (offensively) "on your planet" etc. QuoteDon't exaggerate in singing these paeans to Lisp. He's bizarre. I do not deny that for some programmers it can be useful. But for most programmers, it was never useful. He was too exotic. OK, but /ouch/. We've got a very strange situation here, with Lisp- and its advocates- being at the forefront of the "programs reasoning about programs" tendency: and these days, we are told that such things are central to compiler etc. implementation. Central to the rise of Lisp were the communities at MIT and Stanford: hardly surprising that John McCarthy was on the staff at MIT before taking over at Stanford. And anecdotes I've read suggest to me that McCarthy actively sabotaged ALGOL by sending the ALGOL-68 committee off on a wild goose chase. And since the sabotaging of ALGOL was largely responsible for the growth of C (hence C++, Python and so on) which has been only partly offset by what the industry learnt from Wirth, I feel that McCarthy and his works have a great deal to answer for. MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-15 18:32 Quote from: lainz on January 14, 2023, 08:23:09 pmQuote from: VisualLab on January 11, 2023, 04:39:50 pmQuote from: lainz on January 10, 2023, 02:02:08 am5 GB to get a hello world  Really? And that's all "Hello world" allows you to get? The "creation machine" can be extensive. Worse than the product of this machine is bloated I forget to reply this... Same with python, you need to install it, I don't know how many MB or GB it costs, but is the same with Lazarus, to produce software actually you need a big download, so again 100 mb is nothing. Of course you can do more than a Hello World with Lazarus, same with Python. About the size of the produced executable, you can ship only the bare scripts and let the user install python. Same with Java, C#, all bigger languages than pascal do that way. Smaller size than Lazarus executables, just need a library to install first. Remember you don't need to download 100 mb for a hello world app in pascal because you've already downloaded a lot of GB in the operating system. The size is always there, it depends only how it's distributed between the OS, libraries and third party downloads. You're right, Lazarus is extensive. It's the same with Delphi, NetBeans or Visual Studio (that's just bloated). This is the cost you pay for the convenience of work. This is also the case with other IT tools. However, there is a difference between what Lazarus produces (EXE file) and Python "environment" (set of scripts). And the effort needed to run this on the user's machine. In the case of Lazarus, these can be: EXE file (maybe several DLLs), configuration files (INI, XML) - unless the settings are saved in the Registry and data files used by the program. Most often, the latter take up the most space. In Windows, it is rare that you have to install something yourself. WAMP is such a case. For Python you need: distribute the interpreter, distribute the libraries used by the program, configuration files (INI, XML), data files used by the program. If there are many such script programs, then the more of them on the computer, the greater the chance that one of them will need libraries in a different version than the others. That's why I avoid software written in Python on Windows. In Linux, these annoyances are compounded by an ancient directory system. Hence the popularity of various containers (e.g. Docker) in Linux. ---------------------------------------------------------------------- Thaddy · 2023-01-15 18:48 And the killer blow on "subject": if you have a bit pattern you can change it to anything else with the same bit pattern (Like C). That does not always work in Pascal, unless you hard cast two times. ---------------------------------------------------------------------- MarkMLl · 2023-01-15 19:24 Quote from: Thaddy on January 15, 2023, 07:48:39 pmAnd the killer blow on "subject": if you have a bit pattern you can change it to anything else with the same bit pattern (Like C). That does not always work in Pascal, unless you hard cast two times. Yes. And it seems to me that most if not all of this "compilers need to /reason/ about what they're compiling" is to try to work out what types to use, where any half-disciplined practitioner would be specifying that explicitly. MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-15 19:26 Quote from: MarkMLl on January 15, 2023, 06:23:04 pmQuote from: VisualLab on January 15, 2023, 05:44:04 pmBut consider that it depends on the expectations and needs of people who use these languages, You also have to consider that it depends on the expectations and needs of people who don't use them... but are amenable to persuasion. I fully agree. This problem affects basically every area of life. Quote from: MarkMLl on January 15, 2023, 06:23:04 pmLet me give you an example. The FPC core developers are set dead against the extremely common idioms, probably derived from C but possibly older, i++ and i += 1 (the latter's in FPC, but they make it clear that they regret the fact). Everybody (obligatory xkcd https://xkcd.com/2501/ ) knows that these have semantic problems, and particularly now that C (via C++) has moved some way from its direct-pointer-manipulation roots i++ appears to be somewhat deprecated. But i += 1 is still part of the core expectation that the average programmer has before he'll take a language seriously. So I'm inclined to argue that a well-tempered language like Pascal would be better supporting it (with enforced limitations) than rejecting it on the basis that Wirth didn't invent it: particularly since Object Pascal contains a whole lot of questionable stuff that Wirth didn't invent, piled on top of stuff that Wirth did invent but was too rushed to implement properly. Well, that's not a language feature that interests me. I don't use this notation because it's unreadable for me. But I am ready to sacrifice for a good cause Quote from: MarkMLl on January 15, 2023, 06:23:04 pmJumping a bit further forward and picking up your point about implementation- dependant integer sizes etc. While I should really be referring to the ISO Pascal standard for this comment, I can say from memory that Modula-2 (as promulgated by Wirth) had a similar problem, but one of the first things that the ISO did when they started standardising it was define a robust set of integer and cardinal types. I confess that I tend to use byte, word, integer etc., when I know in my heart that I should be using uint8, uint16 and int32. Mea culpa. I think so too. However, the average Delphi programmer had no say in the matter. Aliases for integer types were added not too long ago. Quote from: MarkMLl on January 15, 2023, 06:23:04 pmApart from that: your points about Python are pretty much unarguable IMO, although I suspect that some of them aren't entirely up-to-date. But improving it in the way that C was arguably improved to get to C++ is virtually impossible, when one allows that the average Python user is not sufficiently "skilled in the art" to understand the criticisms and will obstruct any non-trivial improvement. The bottom line is that Wirth wrote Pascal (with relatively weak types) and Modula-2 (with stronger types). A large part of the language design fraternity now appreciates the importance of strong typing over and above what is mandated by numeric representation, and that- more than the languages he's designed- is Wirth's major contribution to the industry. Truth. I'm not saying that Python should be annihilated. The problem is that Python enthusiasts naively imagine that they can build any kind of application with Python, just as programmers using more complex languages do. And this is only partially true. As a result, we have masses of people who believe in a kind of clikbait: "he learned this one unusual and unbelievable secret, doctors hate him." In this case, this clikbait could read: "he learned this one unusual and unbelievable language, professional programmers hate him". A similar problem is the plague of applications based on node.js and Electron. ---------------------------------------------------------------------- 440bx · 2023-01-15 20:22 Quote from: VisualLab on January 15, 2023, 08:26:47 pmThe problem is that Python enthusiasts naively imagine that they can build any kind of application with Python, just as programmers using more complex languages do. That is a common problem.  Some languages are reasonably good general purpose tools (Pascal is among them) but, they usually cannot be as convenient (or productive) as a language designed for a specific purpose (e.g, AWK for text processing) ---------------------------------------------------------------------- MarkMLl · 2023-01-15 20:37 Quote from: 440bx on January 15, 2023, 09:22:40 pmSome languages are reasonably good general purpose tools (Pascal is among them) but, they usually cannot be as convenient (or productive) as a language designed for a specific purpose (e.g, AWK for text processing) Or even more, Perl. The sort of pattern matching you get in AWK (or older tools that I used for some years) is remarkably useful, but it is extremely easy to hit a barrier which can be easily avoided if one also has a structured/sequential capability. I'm inclined to argue that that's part of the reason that Sendmail has such a reputation for impenetrability: /all/ you have is header rewrite rules, and it's really rather difficult to say "if /this/ happens, do /that/ and then /t'other/". And that was why things like Lotus Notes got their foot in the door: I believe that it even had a Delphi-like IDE at one point. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-15 22:43 Quote. If you are deciding who is the one not liking Pascal People who like pascal are the ones who take the time learn it and enjoy actually Using it. How many other languages said people might know is irrelevant to whether they like pascal. Do I really need to explain this to you ?  At the end of the day the quality of programs people create is what I consider important. Science and math theories are all fine and good but if nothing tangible is produced it is a scenario similar to https://en.wikipedia.org/wiki/The_Emperor's_New_Clothes A less gullible emperor could have tested the cloth by having the peddlers of it use it as a rope to climb out a window . I like to test things to see what is there. Apparently this trait is a problem for some people... ---------------------------------------------------------------------- VisualLab · 2023-01-16 00:26 Quote from: Joanna on January 15, 2023, 11:43:57 pmAt the end of the day the quality of programs people create is what I consider important. Science and math theories are all fine and good but if nothing tangible is produced it is a scenario similar to https://en.wikipedia.org/wiki/The_Emperor's_New_Clothes A less gullible emperor could have tested the cloth by having the peddlers of it use it as a rope to climb out a window . I like to test things to see what is there. Apparently this trait is a problem for some people... Because it's a bigger problem. Actually two: people believe that something can be produced cheaper, simpler, faster, easier,people are uncritical - they lack healthy skepticism.It's a well-known problem, where the boards of companies (especially corporations) are greedy and would like the impossible. We all know that with a certain level of quality, it is impossible to go below a certain cost limit. And the costs are the purchase of raw materials, tools, energy and labor as well as the time to prepare the product design and its production. People want cheap goods and good quality. And that is physically impossible (at least for now). Unfortunately, most people either ignore it or are so naive as to believe it. Programmers know very well that the lion's share of money and time is consumed by the programmer's work when developing software. Some of the costs also go to tools. Energy is a small part of the cost. But the hustlers at the top of the company are still looking for an economical perpetual motion machine. The second problem is as old as the world and we all know it. Believing self-proclaimed saviors of the world (e.g. sects), giving faith to scammers (Ponzi scheme, miraculous healers, homeopathy, bioresonance) and many, many more. So it is not surprising that such things also happen in computer science. Those who are not programmers also want to create programs. But most often they have neither the knowledge nor the predisposition to do so. Yet they are deceived into believing that it is possible. They are told that all they have to do is reach for a wonderful programming language and immediately everything will become easy and the program will be created in the blink of an eye. This plague has also affected universities for many years. Researchers create monster programs to process data spit out by laboratory equipment. Unfortunately, they rarely have sufficient programming skills. And here comes a wonderful solution: Python. So they try cottage-style methods. They're putting something together from fragments found on blogs on the Internet. And because they do not have enough knowledge, they cannot assess the quality of the "tool" they are trying to use. Often they are not even aware whether the results they get from such a "program" are reliable. I know this from personal experience (I don't want to give any special characters because the Internet is "shrinking" The blame for this lies not only with the "self-appointed specialists" writing stupid things on blogs, but also with people of science. The most striking example is the Raspberry Pi Foundation. It is people from one of the world's top universities who have been pushing this nonsense on children and young people for many years. This pathology is spreading ever wider. So how is it supposed to be better? The question is: how to stop this joyous carnival of stupidity in computer science? ---------------------------------------------------------------------- ctk · 2023-01-16 01:13 Quote from: VisualLab on January 15, 2023, 04:46:02 pmI just don't agree with some of your statements. Then do one of these things: - refute their consistency through a reasoning that shows I contradicted myself - reject my evidence with arguments - make an incompatible point, with evidence backing it And do none of these things : - sarcasm - bad faith (esp. taking set expressions literally) - rhetorics (esp. derision and sophism) If you can't proceed this way, and you dsagree with me only out of sheer belief, then there's no discussion to have between us. Or you won't get anything back from me. Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amReasoning. Through reasoning, you can reach a lot of conclusions that you could also have reached through experience… Brilliant. Thanks for the explanation, I never would have thought of that I genuinely ask: is this sarcasm? If I don't get an answer along the lines of "no, I actually hadn't thought of that", I'll know it was sarcasm… Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amSorry if that isn't breaking news to you; in fact, I strongly suspect that you knew this. The rest of my answers will not be any more earth-shattering than this triteness. You are amazing… in your persistence in explaining the obvious I am angry at you that you demanded evidence of things you yourself actually think are obvious. Do you just enjoy wasting my time(!?) Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amIt will help if I first say that opinions which are self-contradicting will have to be rejected, assuming a practical result is to be attained. This may seem obvious, but is a caveat for some mentalities out there, who will leave frustrated that the impossible is not possible. The word "complicated" you used is not adequate to describe outright impossibility. This is a classic "waffle". There is no substance to it. Go ahead and tell me why you think I'm saying bullshit. Unfortunately, you have to say why, otherwise… Hitchens's razor applies to your "this is a waffle" claim. I had to resort to painfully basic logic to prove you were not making any sense with your "I'm not pleased, therefore you can't please everyone". You didn't even say what you were displeased about, so for safety I assumed "possibly anything". And if you're not pleased, you have to be able to say about what, and why, otherwise you're not displeased by something in particular, you're just grumpy. Get an ice cream and get better! Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amWe always take the macroscopic model of reality as an axiom in language design, and with that, something cannot both exist and satisfy a self-contradicting requirement. Macroscopic model of reality has nothing to do with programming language? Programming language design is an abstract. What I mean here is that we design programming languages that are realist, where the parts of the program itself aren't entangled, superposed-state quantum objects, for example. That would probably be a nightmare to program with. I know that's a pretty crazy idea, and that's precisely what I'm saying is off-scope here. No worries if it was beyond your imagination: this means you agree and I was just taking excessive precautions. Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amI was saying that if you intentionally make the situation unmanageable, it will be unmanageable. It's a truism. I'm happy to see you don't refute truisms, because I wouldn't be surprised if you did, given the complete irrationality of some of your other claims. See above for evidence, e.g. the "can't please everyone because you can't please me" sophism that I debunked time and again. Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amQuote from: VisualLab on January 13, 2023, 11:35:52 pmOh, one more thing: "complications, ... that, ... are not even mathematically manageable." Can I ask for some evidence? Or maybe two razors should be used here: Hitchens and Ockham? Yes. Not only you can, but I will even helpfully go ahead and act as though you had asked for evidence. In passing, the way you put this makes me suspect that your curiosity is more outraged than genuinely piqued with interest, though. I would feel more at ease if you waited for the examples and proofs you requested BEFORE mentioning the open possibility that what I say could be hot air, also known under the much clearer name of "pretty, yet empty bullshit". You made some claims, so it's obvious that I wanted to know your arguments for it (before that, you yourself accused me of making claims without evidence). Why should I wait? And why this secrecy? This resembles the so-called clickbait like "you won't believe how he did it, doctors (or: accountants, firemen, etc.) are furious with him." What's the wait for? („What are you waitin' for? Christmas? ”) And I will wait 20 years for an answer Given you apparently asked for evidence just to see if I could stand my ground, I'm somewhat disappointed that you then moved on without any apparent interest in the techniques in question. When I provided evidence, you didn't even bother to explain how you thought it was wrong before rejecting it. That's not a debate between computer scientists; that's simply clownery from your side. Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amThe distinction between complicated and complex is that with complexity, you know what you're doing, therefore you can provide certain (absolute!!!) guarantees. (Yes, I included "absolute" for the outrage value to people who swear by "there will always be exceptions" — my intent is to make them reconsider that outrage. Some things are absolute, even in practice (oh yes!) whether we like it or not.) It's easy to make things complicated, and things can only be made simple by breaking them down in terms of their inherent complexity. This is a classic "waffle". If you reject what I said: arguments please? Do you struggle understanding my sentences, or are you just unhappy that a simple reasoning counters your beliefs if you so much as look at it? Quote from: VisualLab on January 15, 2023, 04:46:02 pmMy statement was simple and humorous, but without irony. Simple. Nor does it contain any requests. Do not attribute any additional additional content to my statement. Simply: "What I have written, I have written." So if I follow, you said "not everyone can be pleased because I am currently not pleased", I said that was circular reasoning and you agree? Your bad faith is just… through the roof. I think that when it comes to statements devoid of content written to derail the discussion, there's none like this one. You're just wasting everyone's time. Unless you think this is a great use of your time, then you're only wasting everyone else's time. How about we discuss the programming language design points for which I have now provided some evidence / proof that they exist and could be implemented? Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amCan you substantiate the claim that I produced a sophism? Pointing the error in a little more detail will be sufficient, I am not very demanding and will help along fixing whatever error I might have made, if only it is specified what the error is. To be precise, if you want to challenge what I said, I think that your quip has to be exactly ONE of: - You judge that there is no way to look at the words I wrote that fully makes sense, and explain where my formalism lacks; - you understand the meaning of the sentences I wrote, but there are missing steps and you cannot see how the conclusion derives from the premises; - you need evidence to believe a claim I made (this does not seem to be the case, otherwise you would have requested it). It would seem that we are in the second case, so I will develop some more: For orthogonality, a specific instance of it in the field of software engineering is decoupling. To give a very specific and interesting example of decoupling in programming language design, one can ask: what would be a syntax where semantics are decoupled by being orthogonal? A possible (and quite simplistic) answer here is to assign each character to a single meaning, giving rise to a pretty interesting family of syntaxes. For example, we could say that [] is an ordered collection; that {} is an unordered one; and if () is assigned to priority in expressions, then it cannot be used for tuples… but we are using fully orthogonal concepts here: tuples can now be declined as either ordered or unordered collections. I am very fond of this manner of designing languages, and have already produced one such language syntax for fun. We can see it in more detail if you are interested, perhaps once you are satisfied with the other points so as not to be all over the place at one given time. But what was really the point of this lengthy argument? You seem to have missed it indeed, I have no idea why. You said I made a reasoning error (a sophism) — I ask you to point out the error you see in my thinking. Otherwise, you're just stating something without proof, and Hitchens's razor applies. Quote from: VisualLab on January 15, 2023, 04:46:02 pmSome of your statements give the impression that you think everything can be proven mathematically. Maybe I should not be discussing programming with someone who derives conclusions from impressions. Quote from: VisualLab on January 15, 2023, 04:46:02 pmQuote from: ctk on January 14, 2023, 06:30:54 amAre you using a different definition of "proven" than "there exists a mathematically well-formed deductive path from our premises to this predicate"? Do you think that always and everything can be proved mathematically? Don't deflect my question with another question. I was genuinely requesting information, not asking a rhetorical question. Naturally, if you can't answer my question for some reason, I wish to know the reason. Aside from all this bickering — do you have any interest in further discussing language design? For example: - giving guarantees about source code before even testing it - abstract symmetries (similar syntax for collections, routines, type and value expressions) - rules for designing programming languages so they don't become ugly in the future when adding features — for example orthogonal syntactical features - language design techniques to satisfy everyone (such as typeclasses and extensible syntax) - the use of capabilities for security purposes (this means "dropping privileges" like, for a stunning example, the ability to enter an infinite loop — you can just drop it and then it can't happen) …or were you asking for evidence just to soothe your endangered beliefs, and were never interested in any of this PL design stuff to begin with? ---------------------------------------------------------------------- Joanna · 2023-01-16 01:17 Quote because they do not have enough knowledge, they cannot assess the quality of the "tool" they are trying to use. Often they are not even aware whether the results they get from such a "program" are reliable.Most people want others to do all the difficult work for them and would rather watch tv than learn programming. I think this one of the pitfalls of entrusting too much to software. Software does not follow the same rules as things in the physical world often times. If you have a shirt, it’s easy to inspect it to find out how well made it is before buying it and even if the shirt tears apart it won’t kill you. The same cannot be said for software which is much more complicated and often hidden from people who will be adversely affected by it failing. We are just supposed to have faith when boarding a plane that relies on software to fly properly. To make matters worse, pilots have become too dependent upon software to do their job for them and were reluctant to disengage the faulty autopilot when it would have prevented a plane crash. Part of the problem I think is average people get bamboozled / intimidated by self proclaimed experts and just go along with whatever because of peer pressure. I think this is a primitive primate behavior that is still with us. To just take the side of whomever is loudest and most aggressive monkey. Quote people are uncritical - they lack healthy skepticism. People are for the most part lazy and gullible. It takes a lot of extra work to think, and questioning things often causes you to get attacked or even executed so here we are after thousands of years of evolution in this condition of with few exceptions playing Follow the leader. I really don’t understand the Popular practice of non Programmers supervising programmers it seems like a bad idea. Quote It is people from one of the world's top universities who have been pushing this nonsense on children and young people for many years. This pathology is spreading ever wider. So how is it supposed to be better? The question is: how to stop this joyous carnival of stupidity in computer science?Follow the money. Whomever is funding the university probably wants people to be dumbed down and confused. Probably the same interests that got universities to stop teaching pascal... ---------------------------------------------------------------------- Joanna · 2023-01-16 05:22 Quote from: Thaddy on January 15, 2023, 03:40:16 pmOn windows Lazarus wraps the OS API button and that does not allow to set the color, except the font color. But TBitButton allows it, so use that. No need to use custom draw. Another option is to theme your application, in which case TButton will have the color of the theme. Has been answered umpty times btw. Thanks for info I didn’t know about bit button. I am Somewhat familiar with custom drawing from using it with tcombobox with tcomboboxstyle Is custom draw the same as owner drawn control? I am looking at tpagecontrol and I don’t see any way to make it custom drawn there is no style property. How would I do custom drawing for tpagecontrol or am I stuck with tcdpagecontrol which cannot do multiline tabs forever? I would like to fix these things but I don’t understand how they work.  I was just looking at tcdpagecontrol and it does have an options property which is a set of tctabcontroloptions There is an nbomultiline enum  which does nothing , the nboshowaddtabbutton and nboshowclosebuttons options work just fine. I don’t understand why adding the nbomultiline to tctabcontroloptions property of tcdpagecontrol has no effect. Tcdpagecontrol doesn’t even have arrows when all the tabs can’t fit on screen either ---------------------------------------------------------------------- Joanna · 2023-01-16 05:37 Quote Actually I noticed this when I was 8 years old, and the teacher said it was impossible to subtract a larger number to a smaller number. These were ℕaturals, of course. When, the next year, the same teacher told us that in fact we could do it and it yielded a negative number, I acquired a suspicion that has never left me since, and asked "what else have you lied to us about?".Ctk , the teacher Lying is an oversimplification of what happened. What you had was a rude awakening about the school system as we know it {which was invented by Prussians who were angry at their soldiers for refusing to be human sacrifices in a battle with the French.} The purpose of most schools is to turn out obedient brainwashed minions  For employers to exploit who don’t ask too many questions . When you tried to delve into more advanced math the teacher was more interested in shutting you up than taking extra time and effort to educate you Properly. Also answering your question might have confused your less intelligent peers and caused extra work. God forbid... ---------------------------------------------------------------------- MarkMLl · 2023-01-16 13:24 Quote from: VisualLab on January 16, 2023, 01:26:36 amThe blame for this lies not only with the "self-appointed specialists" writing stupid things on blogs, but also with people of science. The most striking example is the Raspberry Pi Foundation. It is people from one of the world's top universities who have been pushing this nonsense on children and young people for many years. This pathology is spreading ever wider. So how is it supposed to be better? The question is: how to stop this joyous carnival of stupidity in computer science? I'm not sure that is fair. The first thing I'd say is that while the RPi includes- by default- things like Scratch and NodeRed which are both graphical programming environments, they definitely don't push them hard: which is surprising since my understanding is that the RPi Foundation sunk a considerable amount of money into the Pharos Smalltalk implementation which underlies Scratch v1. The second thing is that it's been UK government policy since the 1980s to try to disseminate an understanding of computer programming throughout the population and in particular throughout schools, hence the original BBC Micro and more recently the extremely-questionable BBC MicroBit https://en.wikipedia.org/wiki/MicroBit I really don't know where I stand on this "get everybody programming!" business. On the one hand I feel that people should know how to apply computers as vocational tools, so in the 80s and 90s I used to argue that the important thing was to teach how to write a business letter or enter accounts using a computer: that was of course before the office environment was uprooted and deskilled by the ready availability of letter templates etc. On the other hand, I'd certainly expect a student of any of the hard sciences to have a reasonable understanding of how computers worked, as well as how to apply them. And having accessible hardware etc. has to be an important part of that. So again, I'm not sure that criticism of the RPi Foundation is fair, and in any event they- and their predecessors at Acorn etc.- have done more than most to prevent the computer industry becoming an Intel monoculture. The people I /would/ criticise are the more breathless journalists, and the various parasites trying to make a quick buck by selling cases, screen protectors and so on. But the industry has ever been thus, and was preceded by other industries harbouring the same type of person. But I would also criticise, without hesitation or mercy, the companies who promote attractive hardware at a reasonable price, with the intention of reaping substantial rewards by strongly encouraging people to use a "cloud-hosted" development environment. They are beneath contempt, particularly when targeting the young. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-17 01:40 Quote But I would also criticise, without hesitation or mercy, the companies who promote attractive hardware at a reasonable price, with the intention of reaping substantial rewards by strongly encouraging people to use a "cloud-hosted" development environment. They are beneath contempt, particularly when targeting the young. Surveillance capitalism. There are also the Cheap printers that can only use very expensive overpriced ink Sold by same company. It also fits the description of dark patterns .. easy to get into hard to get out of traps. ---------------------------------------------------------------------- denis.totoliciu · 2023-01-17 02:09 I wonder how will things go with the actual theme of this topic, namely a decision for the interchangeable types. ---------------------------------------------------------------------- Joanna · 2023-01-17 03:42 Quote from: denis.totoliciu on January 17, 2023, 03:09:08 amI wonder how will things go with the actual theme of this topic, namely a decision for the interchangeable types. Well I think it was explained to my satisfaction earlier and I’m happy to give credit to ctk for inspiring such an interesting discussion even if he never discovers how amazing fpc  is... ---------------------------------------------------------------------- ctk · 2023-01-17 14:54 You can say that when it acquires dependent types! At this stage you can't even derive a new type from an int; it's failing in the starting blocks. ---------------------------------------------------------------------- Bogen85 · 2023-01-17 15:08 Quote from: ctk on January 17, 2023, 03:54:02 pmYou can say that when it acquires dependent types! At this stage you can't even derive a new type from an int; it's failing in the starting blocks. As I've said before, this is one area I find seriously deficient in Free Pascal. I had to weigh many things to commit to using Pascal. If there were other languages that had what I get from Free Pascal, I'd likely be not be using Pascal. I know many other languages and their associated tooling. For me Free Pascal still comes out on top, but not everyone has the same requirements and needs. I see your stance as completely justifiable, as I've had to make compromises in staying with Pascal. But I'd have to make other compromises I'm not willing to make were I to go with something else. Also, you did not initiate this thread topic, Joanna did, and you were only defending (and rightly) your stance. ---------------------------------------------------------------------- MarkMLl · 2023-01-17 15:21 Quote from: Bogen85 on January 17, 2023, 04:08:21 pmAs I've said before, this is one area I find seriously deficient in Free Pascal. In fairness, Object Pascal (and presumably the other language variants) is only using Pascal as they found it. I seriously think that having types which were distinct despite being structurally similar was something that quite simply didn't occur to Wirth in the late 60s. MarkMLl ---------------------------------------------------------------------- Joanna · 2023-01-17 15:35 Quote from: ctk on January 17, 2023, 03:54:02 pmYou can say that when it acquires dependent types! At this stage you can't even derive a new type from an int; it's failing in the starting blocks. To be honest over decades of using pascal I’ve never wanted  to derive a new type from an int nor has anyone I know This seems like a case of analysis paralysis. I don’t have the luxury of vacillating, I need applications that nobody else is going to write. Your excuse for not using pascal piqued my curiosity though. Most people aren’t so creative. Quote Also, you did not initiate this thread topic, Joanna did I initiated it on his behalf so that he could have a proper answer from people more knowledgeable than I am. ---------------------------------------------------------------------- Thaddy · 2023-01-17 15:39 In fairness fpc does not adhere to casting a bit pattern to another bit pattern to the same value. You have to hard cast your way out of that. cast(cast( etc. But eventually it works.... ---------------------------------------------------------------------- MarkMLl · 2023-01-17 15:55 Quote from: Joanna on January 17, 2023, 04:35:56 pmI initiated it on his behalf so that he could have a proper answer from people more knowledgeable than I am. So stop arguing with them. Interesting points have been made on both sides, and there is no place for uninformed prejudice. MarkMLl ---------------------------------------------------------------------- Bogen85 · 2023-01-17 15:59 Quote from: MarkMLl on January 17, 2023, 04:21:24 pmQuote from: Bogen85 on January 17, 2023, 04:08:21 pmAs I've said before, this is one area I find seriously deficient in Free Pascal. In fairness, Object Pascal (and presumably the other language variants) is only using Pascal as they found it. I seriously think that having types which were distinct despite being structurally similar was something that quite simply didn't occur to Wirth in the late 60s. MarkMLl Agreed, this is likely not fair of me to say that Free Pascal specifically is being deficient here. For me at least, as I said before, if I needed this type of enforcement, I would use an class or structure for each type with properties and methods to handle conversions and arithmetic. So while this is something I would prefer the type system to handle for me, I can work around it. I'm not sure if Delphi handles explicit type definitions differently. Quotetype abc = type integer; ---------------------------------------------------------------------- Thaddy · 2023-01-17 17:01 Delphi behaves the same. Both Delphi and FreePascal give the same type info for the specialized type. ---------------------------------------------------------------------- MarkMLl · 2023-01-17 17:15 Thanks for that. Can you comment on ISO mode etc.? MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-17 20:14 Quote from: MarkMLl on January 16, 2023, 02:24:14 pmQuote from: VisualLab on January 16, 2023, 01:26:36 amThe blame for this lies not only with the "self-appointed specialists" writing stupid things on blogs, but also with people of science. The most striking example is the Raspberry Pi Foundation. It is people from one of the world's top universities who have been pushing this nonsense on children and young people for many years. This pathology is spreading ever wider. So how is it supposed to be better? The question is: how to stop this joyous carnival of stupidity in computer science? I'm not sure that is fair. The Raspberry Pi was just an example, but the word "striking" seemed to amplify the message too much. I did not provide explanations because I focused on pathologies related to creating from software. So the case of Raspberry Pi requires explanation on my part, since I may have criticized it too much. Quote from: MarkMLl on January 16, 2023, 02:24:14 pmThe first thing I'd say is that while the RPi includes- by default- things like Scratch and NodeRed which are both graphical programming environments, they definitely don't push them hard: which is surprising since my understanding is that the RPi Foundation sunk a considerable amount of money into the Pharos Smalltalk implementation which underlies Scratch v1. As for Scratch - I don't use it, but I used to play a bit. It's OK for kids. Quite decently helps to enter the world of programming. You don't really need an RPi for it, just a regular PC. But it's fine on RPi too. Quote from: MarkMLl on January 16, 2023, 02:24:14 pmThe second thing is that it's been UK government policy since the 1980s to try to disseminate an understanding of computer programming throughout the population and in particular throughout schools, hence the original BBC Micro and more recently the extremely-questionable BBC MicroBit https://en.wikipedia.org/wiki/MicroBit I learned about MicroBit a few years ago while browsing the offers of electronics stores. I buy electronic modules from time to time for hobby experiments, so I did some reading to find out what MicroBit is. It didn't interest me. I also get the impression that he is not very popular. Quote from: MarkMLl on January 16, 2023, 02:24:14 pmOn the other hand, I'd certainly expect a student of any of the hard sciences to have a reasonable understanding of how computers worked, as well as how to apply them. And having accessible hardware etc. has to be an important part of that. You're right. And that is why any initiatives that help in this are commendable. For example, I rate the Arduino project as: at least good (and even: very good). Quote from: MarkMLl on January 16, 2023, 02:24:14 pmSo again, I'm not sure that criticism of the RPi Foundation is fair, and in any event they- and their predecessors at Acorn etc.- have done more than most to prevent the computer industry becoming an Intel monoculture. As for the actions of Acorn, it's hard for me to comment on this, because I've never dealt with their computers (Iron Curtain, claws of the USSR, etc.). But I know from history that he has many merits, at least in the UK). As for the RPi, I have reservations about the implementation details. This design has advantages and disadvantages. The advantages (in general) of this design are: popularization of small computers that can be used for various projects, including electronic ones,it is relatively cheap, considering that it is aimed at teenagers and hobbyists.Let me present my point of view. Advantages of the RPi hardware: the presence of the GPIO connector on the board,access to signal: binary, PWM, GPCLK,access to I2C, SPI, 1-wire buses,CSI connector for camera connection,built-in network controllers (cable, radio) and USB ports,memory card support (the most popular variant, i.e. SD).The biggest advantage of this computer (in my opinion) is the GPIO connector. To achieve something similar with an ordinary ordinary computer (PC), you need an expansion card or module connected via USB. This solution is too expensive for the average user. Industrial motherboards (even small ones, Advantech, Aaeon, etc.) are too expensive for hobbyists. In addition, only some of them have signals available on the connectors, such as the RPi. Disadvantages of the RPi hardware: there are pins at 5V in the GPIO connector while the rest of the board is running at 3.3V, this can cause the board to fail if one is not careful or has no knowledge of electronics,a bit chaotic arrangement of signals in the GPIO connector. These are quite minor and not very bothersome flaws. I put a jumper on the 5V pins and I don't have to worry about making an accidental short circuit. On many blogs, people also mention: no SATA connectors, no DisplayPort connector (less often). Therefore, this computer cannot be used as a server, router or multimedia computer. Also, it doesn't have enough RAM. But these "arguments" are meaningless. This computer was supposed to control various electronics, which is why it has a GPIO connector. The creators of the RPi did not promise a board for advanced network applications. For such purposes, it is much better to buy a MicroATX or MiniITX motherboard with an Intel or AMD CPU. Such boards have the necessary connectors (M.2, PCIE, SATA, etc.) and the appropriate performance. They can also be equipped with the required amount of RAM. Disadvantages of RPi software : used OS: Linux (or even worse: Debian),main programming language: Python (probable explanation: "As for the "Pi" part, Upton said, "We were going to produce a computer that could only really run Python. So the Pi in there is for Python."),the need to "fucking in the keyboard" (console),root in the GUI is blocked (quite effectively).Those are damn annoying flaws. I understand the use of Linux, because there is a problem: where to get a free OS? Haiku is not available on ARM. ReactOS too. RiscOS is old and limited. QNX is not available to hobbyists. But Python for learning programming and electronics? I would understand using C or C++. Somehow "nobody died" from using C++ under Arduino. Besides Python, they could at least add some decent IDEs for C++ and Lazarus. Lazarus is not even available in distribution. Need to install by yourself. I don't need to remind you that Debian has old repositories. Since I couldn't unlock root in Rpi GUI on my own, I started searching internet forums on this subject (I only read them, I didn't ask questions There are a lot of such questions about root unlocking in RPi. I'm not surprised that they are. And what is usually the first answer? Yes, you guessed it, "you don't need it." The Linux "sage" knows better what the asker needs than the asker himself! Another, less frequent, is: "and why do you need it?" And most of these poor, scared people make excuses for it as if they were murderers, or at least planning a murder. Why does some conceited idiot get involved if he doesn't want to help? And from word to word, there is a brawl in such a forum. Unfortunately, the Linux forums are guarded by Linux freaks with a chekist, red guards, or religious revolution guard mentality. These morons don't have private lives, they sit in the basement, chew potato peelings and accost ordinary people on Linux forums. But let's get back to the RPi. These pseudo-restrictions present in Linux on the RPi prove that the people of the RPi foundation also suffer from this "mental fucked up" disease. Why block root account (especially in a GUI) if you designed a computer for personal use, for electronic and programming experiments? During such experiments, people want to spare themselves repetitive but burdensome activities. And one of them is "fucking in the keyboard" to do something in this damn Linux. How much time does a person waste to type something there again. If the user damages the RPi (Linux) system, he will re-upload it to the SD card. This is not a life support system on a space station or a reactor control system in a nuclear power plant. It's just an Johnny's or Mary's small computer on which they experiment. That's why I criticize the RPi design as a whole with emphasis on software (hardware is basically OK). Quote from: MarkMLl on January 16, 2023, 02:24:14 pmThe people I /would/ criticise are the more breathless journalists, and the various parasites trying to make a quick buck by selling cases, screen protectors and so on. But the industry has ever been thus, and was preceded by other industries harbouring the same type of person. Exactly (mugs, t-shirts, plastic figurines related to Star Wars or [any other popular movie]). Quote from: MarkMLl on January 16, 2023, 02:24:14 pmBut I would also criticise, without hesitation or mercy, the companies who promote attractive hardware at a reasonable price, with the intention of reaping substantial rewards by strongly encouraging people to use a "cloud-hosted" development environment. They are beneath contempt, particularly when targeting the young. I would describe it as a highly specialized industrial IT parasitism. Unfortunately, a very large percentage of young people are manipulated in this matter. They probably still don't understand that information is a commodity, even though it's been talked about for a long time (20 years or more). And that they have no control over the data uploaded to the corporate servers. ---------------------------------------------------------------------- MarkMLl · 2023-01-17 20:57 I want to be very selective with my response to that, lest I be accused of IRC-style verbiage. Please don't interpret that as disrespect. Quote from: VisualLab on January 17, 2023, 09:14:19 pmAs for Scratch - I don't use it, but I used to play a bit. It's OK for kids. Quite decently helps to enter the world of programming. You don't really need an RPi for it, just a regular PC. But it's fine on RPi too. More to the point, if you know what button to press you're straight into Smalltalk. Unfortunately, Scratch >v1 has moved to being browser- based, and nobody really worked out how to extend Scratch to e.g. support arbitrary I/O devices. QuoteFor example, I rate the Arduino project as: at least good (and even: very good). I don't. It's "OKish" and has done some imaginative things with C++, but it's very easy to trip up the pre-preprocessor and the efficiency of the port-access code is abysmal (not, I hasten to say, that it's much better in other libraries which attempt to be portable). QuoteAs for the actions of Acorn, it's hard for me to comment on this, because I've never dealt with their computers (Iron Curtain, claws of the USSR, etc.). Oh yes you have: they were the predecessor company to ARM. Quotepopularization of small computers that can be used for various projects, including electronic ones, They weren't the first. They just provided a coherent focus. QuoteThe biggest advantage of this computer (in my opinion) is the GPIO connector. With virtually non-existent software support: working through the /sys filesystem is extremely inefficient, the gpiod library- particularly in its v2 incarnation- is incomplete, and encouraging people to go direct to hardware bypassing the OS is despicable. QuoteOn many blogs, people also mention: no SATA connectors, no DisplayPort connector (less often). Which largely postdate the RPi's introduction. Quoteused OS: Linux (or even worse: Debian), Nothing wrong with Debian, it's what e.g. Ubuntu is based on. However there is a real problem: by using their own desktop environment they're introducing compatibility problems that major applications don't take seriously. Quoteroot in the GUI is blocked (quite effectively). As it is in just about all: Ubuntu started off that about 20 years ago. Shouldn't be a problem though: just about anything you need you can run with sudo. MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-17 21:15 Quote from: MarkMLl on January 17, 2023, 09:57:12 pmQuoteFor example, I rate the Arduino project as: at least good (and even: very good). I don't. It's "OKish" and has done some imaginative things with C++, but it's very easy to trip up the pre-preprocessor and the efficiency of the port-access code is abysmal (not, I hasten to say, that it's much better in other libraries which attempt to be portable). Yes, the preprocessor is a ball and chain. Quote from: MarkMLl on January 17, 2023, 09:57:12 pmQuoteAs for the actions of Acorn, it's hard for me to comment on this, because I've never dealt with their computers (Iron Curtain, claws of the USSR, etc.). Oh yes you have: they were the predecessor company to ARM. The history of ARM (Acorn, etc.) is familiar to me. I meant hardware access. Quote from: MarkMLl on January 17, 2023, 09:57:12 pmQuoteThe biggest advantage of this computer (in my opinion) is the GPIO connector. With virtually non-existent software support: working through the /sys filesystem is extremely inefficient, the gpiod library- particularly in its v2 incarnation- is incomplete, and encouraging people to go direct to hardware bypassing the OS is despicable. Yes. But this is a software problem. In part, this is the aftermath of the ancient Linux architecture. Quote from: MarkMLl on January 17, 2023, 09:57:12 pmQuoteused OS: Linux (or even worse: Debian), Nothing wrong with Debian, it's what e.g. Ubuntu is based on. However there is a real problem: by using their own desktop environment they're introducing compatibility problems that major applications don't take seriously. Although I complain about Linux, I use it in parallel with Windows (but less intensively). Maybe I'm too used to distros based on what Red Hat provides. I started using Ubuntu much later and I didn't like many of their quirks (despite the fact that they improved many things). Quote from: MarkMLl on January 17, 2023, 09:57:12 pmQuoteroot in the GUI is blocked (quite effectively). As it is in just about all: Ubuntu started off that about 20 years ago. Shouldn't be a problem though: just about anything you need you can run with sudo. That's what I wanted to avoid. As little keystrokes as possible in the console (or without touching console). Keyboard is for the text editor (espacially fo source code). However, the OS itself should be comfortable to use. After all, RPi is not a server ---------------------------------------------------------------------- Joanna · 2023-01-18 01:46 Quote The Linux "sage" knows better what the asker needs than the asker himself! Another, less frequent, is: "and why do you need it?" And most of these poor, scared people make excuses for it as if they were murderers, or at least planning a murder. Why does some conceited idiot get involved if he doesn't want to help? And from word to word, there is a brawl in such a forum. Unfortunately, the Linux forums are guarded by Linux freaks with a chekist, red guards, or religious revolution guard mentality. These morons don't have private lives, they sit in the basement, chew potato peelings and accost ordinary people I’ve had the misfortune of encountering some of these “grimmar worm tongue “ style linux users myself. Sometimes they stray out of their area to do some trolling or go on a crusade to try to convert users of other languages or platforms. Although I have nothing against linux itself or the concept of An open source operating system, the culture of many linux users seems very toxic especially towards new people who need help with something. They think that they are elite and it is beneath their dignity to answer beginner questions. I’ve also heard stories that some of them like to play tricks on beginners by giving them bad advice that causes the beginners  to unintentionally remove all their files.. ---------------------------------------------------------------------- MarkMLl · 2023-01-18 07:04 Quote from: Joanna on January 18, 2023, 02:46:17 amI’ve had the misfortune of encountering some of these “grimmar worm tongue “ style linux users myself. Sometimes they stray out of their area to do some trolling or go on a crusade to try to convert users of other languages or platforms. Although I have nothing against the linux language itself or the concept of An open source operating system, the culture of many linux users seems very toxic especially towards new people who need help with something. They think that they are elite and it is beneath their dignity to answer beginner questions. I’ve also heard stories that some of them like to play tricks on beginners by giving them bad advice that causes the beginners  to unintentionally remove all their files.. Linux language? WTF are you on about??? And any attempt to suggest that Linux users will intentionally give unsafe advice is way wide of the mark: they know that they're representing the OS and community so have absolutely no reason to paint it badly. I'd suggest that the origin of that particular attempt to troll was MS's assertion back in the SCO years that "every feature in unix is the result of a hack". Which displayed an unfortunate conflation of the two possible meanings of "hack": malicious system intrusion vs an elegant use of the available resources. And if you insist on attacking Linux (or unix in general) with that sort of misinformation you come very close to suggesting that all open-source projects are unsafe because of their acceptance of code from unknown contributors. Which is a suggestion that has no place in this forum. MarkMLl ---------------------------------------------------------------------- MarkMLl · 2023-01-18 07:51 Quote from: Thaddy on January 17, 2023, 04:39:17 pmIn fairness fpc does not adhere to casting a bit pattern to another bit pattern to the same value. You have to hard cast your way out of that. cast(cast( etc. But eventually it works.... My recollection is that when Wirth tightened type handling up in Modula-2, he both * Specified "compatible" and "assignment-compatible" separately, * and provided distinct "map bit-to-bit" and "assign equivalent number" operations. I can't remember much more detail than that, but I think it indicates that by that point (mid-late 70s) he was getting to grips with the underlying issues... to an extent that the C/C++ etc. community still hasn't. Apropos deriving distinct types from e.g. an integer, it is of course possible have distinct subranges, which should have at least some compile-time and run-time range checking. I have in fact mulled over experimenting with a style which replaces all ranges in array declarations with predeclared types, but on the balance most of the time the code benefits from having an explicit indication that there are ten elements in an array rather than a hundred without having to shift ones attention to a declaration a few lines up. MarkMLl ---------------------------------------------------------------------- VisualLab · 2023-01-18 08:04 Quote from: MarkMLl on January 18, 2023, 08:04:24 amQuote from: Joanna on January 18, 2023, 02:46:17 amI’ve had the misfortune of encountering some of these “grimmar worm tongue “ style linux users myself. Sometimes they stray out of their area to do some trolling or go on a crusade to try to convert users of other languages or platforms. Although I have nothing against the linux language itself or the concept of An open source operating system, the culture of many linux users seems very toxic especially towards new people who need help with something. They think that they are elite and it is beneath their dignity to answer beginner questions. I’ve also heard stories that some of them like to play tricks on beginners by giving them bad advice that causes the beginners  to unintentionally remove all their files.. Linux language? WTF are you on about??? And any attempt to suggest that Linux users will intentionally give unsafe advice is way wide of the mark: they know that they're representing the OS and community so have absolutely no reason to paint it badly. I, for one, have not encountered a case of someone suggesting advice on Linux forums that would actually be malicious. And I started using Linux in 1999 (of course, there are many forums and a single person doesn't have the chance to look into all of them). On the other hand, the scourge are people who love to show off, but not their concrete knowledge, but a kind of "pseudo-wisdom." Such a cross between a village sage and an ardent apostle. These people may not be many, but they are extremely noisy and insistent. There is a proverb for a reason: "one spoonful of tar will spoil the whole barrel of honey". Such a phenomenon also occurs among other open source projects. Python is an example. In this case, the scale of this phenomenon is probably much larger. Quote from: MarkMLl on January 18, 2023, 08:04:24 amI'd suggest that the origin of that particular attempt to troll was MS's assertion back in the SCO years that "every feature in unix is the result of a hack". Which displayed an unfortunate conflation of the two possible meanings of "hack": malicious system intrusion vs an elegant use of the available resources. And if you insist on attacking Linux (or unix in general) with that sort of misinformation you come very close to suggesting that all open-source projects are unsafe because of their acceptance of code from unknown contributors. Which is a suggestion that has no place in this forum. I remember what you are talking about (SCO, MS) because I followed it in the media. Indeed, once SCO made claims (former Caldera, the original SCO was bought by this company) and Microsoft was involved in these brawls. I look at the Linux project from 3 points of view: - a private project started by a hobbyist (then, because LT has not been a hobbyist for a long time), - an operating system modeled on an earlier existing product (Unix), - community activities focused around this project (developers, administrators, enthusiasts, promoters). But that's a topic for an essay. ---------------------------------------------------------------------- Thaddy · 2023-01-18 08:33 Quote from: VisualLab on January 18, 2023, 09:04:25 am- a private project started by a hobbyist (then, because LT has not been a hobbyist for a long time), A student in computer science can hardly be called a hobbyist even if he pursued something as if it was a hobby. As many proper scientists do... ---------------------------------------------------------------------- VisualLab · 2023-01-18 11:39 Quote from: Thaddy on January 18, 2023, 09:33:28 amQuote from: VisualLab on January 18, 2023, 09:04:25 am- a private project started by a hobbyist (then, because LT has not been a hobbyist for a long time), A student in computer science can hardly be called a hobbyist even if he pursued something as if it was a hobby. As many proper scientists do... By "hobbyist" about LT, I meant that he was doing it back then: for your own satisfaction,nobody paid him for it,he did it in his spare time.Hobbyist doesn't have to mean layman. There are a lot of guys who do things for their own satisfaction, such as tinkering with a motorcycle or electronics. Usually, most of the wives of such guys complain then: "you are wasting time on this hobby, although there is no money from it" LT was tinkering around with the OS. Perhaps his wife didn't complain at first, since LT still does it today ---------------------------------------------------------------------- MarkMLl · 2023-01-18 11:48 Quote from: VisualLab on January 18, 2023, 12:39:46 pmBy "hobbyist" about LT, I meant that he was doing it back then: for your own satisfaction,nobody paid him for it,he did it in his spare time.Hobbyist doesn't have to mean layman. There are a lot of guys who do things for their own satisfaction, such as tinkering with a motorcycle or electronics. Usually, most of the wives of such guys complain then: "you are wasting time on this hobby, although there is no money from it" LT was tinkering around with the OS. Perhaps his wife didn't complain at first, since LT still does it today I agree, but I really don't think it's worth quibbling about (please :-) When Luis Alvarez worked with his son to describe the K–T Boundary, I'm sure that almost everybody would have described it as a hobby activity since he was neither a geologist nor a paleontologist. And when he invented a novel type of variable-focus spectacle he was neither a practicing optician nor an optometrist. But that doesn't detract from his achievements. MarkMLl ---------------------------------------------------------------------- Thaddy · 2023-01-18 12:21 Atm he was not married ---------------------------------------------------------------------- Joanna · 2023-01-18 12:52 Quote And if you insist on attacking Linux (or unix in general) with that sort of misinformation you come very close to suggesting that all open-source projects are unsafe because of their acceptance of code from unknown contributors. Which is a suggestion that has no place in this forum. I am not attacking linux but you are most certainly attacking me. Don’t you have anything better to do than misinterpret everything I say?  Thanks for finding my typo, you are amazing. Quote I, for one, have not encountered a case of someone suggesting advice on Linux forums that would actually be malicious. And I started using Linux in 1999 (of course, there are many forums and a single person doesn't have the chance to look into all of them)I’ve never been to linux forums. I heard the story about malicious advice in an essay about avoiding irc burnout. I guess people got so annoyed with too many newbie questions that someone had given bad advice on purpose out of spite.  Just because someone uses a particular Language or operating system doesn’t make them a saint and not everyone in a channel represents a community necessarily. There can be people trying to discredit it. Also people have shared innocent looking linux commands that can do a lot of damage with me so I’m not making this up... ---------------------------------------------------------------------- VisualLab · 2023-01-18 13:08 Quote from: MarkMLl on January 18, 2023, 12:48:34 pmI agree, but I really don't think it's worth quibbling about (please :-) It's just clarification of concepts and positions as part of the discussion Quote from: Thaddy on January 18, 2023, 01:21:52 pmAtm he was not married  Indeed, he was probably not yet married at the time. ---------------------------------------------------------------------- circular · 2023-01-22 13:04 Started separate topic on units of measurement: https://forum.lazarus.freepascal.org/index.php/topic,61958.0.html