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