home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.os.vms      DEC's VAX* line of computers & VMS.      264,096 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 262,369 of 264,096   
   =?UTF-8?Q?Arne_Vajh=C3=B8j?= to Lawrence D'Oliveiro   
   Re: basic BASIC question   
   06 Feb 25 22:15:18   
   
   From: arne@vajhoej.dk   
      
   On 2/6/2025 4:20 PM, Lawrence D'Oliveiro wrote:   
   > On Thu, 6 Feb 2025 11:04:12 -0500, Arne Vajhøj wrote:   
   >> If JavaScript was unique in the web frontend world for lack of type   
   >> safety, then the lack of type safety could be due to its history.   
   >> Other popular languages like PHP and Python also has a relaxed   
   >> approach to types.   
   >   
   > Worth being clear what we’re talking about. None of these languages is   
   > type-unsafe in the way that C, for example, allows free typecasting   
   > between unrelated types, and in particular between pointers to unrelated   
   > types. They are all dynamic languages, and every value that a variable can   
   > hold does have an explicit type, and conversions between types follow   
   > well-founded semantic rules.   
   >   
   > However, JavaScript and PHP have a laissez-faire attitude to equivalences   
   > with strings, and will happily autoconvert between strings and non-string   
   > types in various situations, often leading to surprising results. This is   
   > why both those languages have the “===” comparison operator as a stricter   
   > form of “==” which says “turn off these string-nonstring   
   autoconversions”.   
   >   
   > Python never had this particular bit of brain damage. But it does still   
   > have that common weakness with booleans. Which is a more manageable issue.   
      
   There are different conventions.   
      
   $ type cmp.php   
      
   $ php cmp.php   
   true true   
   true false   
   true false   
   false false   
   true false   
   true false   
   $ type cmp.py   
   def test(a, b):   
        if a == b:   
            print('true')   
        else:   
            print('false')   
      
   test(0, 0)   
   test(0, 0.0)   
   test(0, '0')   
   test(0, 'X')   
   test(0, False)   
   test(0, None)   
      
   $ python cmp.py   
   true   
   true   
   false   
   false   
   true   
   false   
   $ type Cmp.groovy   
   def test(a, b) {   
        if(a == b) {   
            println("true")   
        } else {   
            println("false")   
        }   
   }   
      
   test(0, 0)   
   test(0, 0.0)   
   test(0, "0")   
   test(0, "X")   
   test(0, false)   
   test(0, null)   
      
   $ groovy Cmp.groovy   
   true   
   true   
   false   
   false   
   false   
   false   
   $ type Cmp.java   
   public class Cmp {   
        private static void test(Object a, Object b) {   
            if(a.equals(b)) {   
                System.out.println("true");   
            } else {   
                System.out.println("false");   
            }   
        }   
        public static void main(String[] args) {   
            test(0, 0);   
            test(0, 0.0);   
            test(0, "0");   
            test(0, "X");   
            test(0, false);   
            test(0, null);   
        }   
   }   
   $ javac Cmp.java   
   $ java Cmp   
   true   
   false   
   false   
   false   
   false   
   false   
      
   Arne   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca