| Deutsch English Français Italiano |
|
<vo3ts7$379us$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: =?UTF-8?Q?Arne_Vajh=C3=B8j?= <arne@vajhoej.dk>
Newsgroups: comp.os.vms
Subject: Re: basic BASIC question
Date: Thu, 6 Feb 2025 22:15:18 -0500
Organization: A noiseless patient Spider
Lines: 129
Message-ID: <vo3ts7$379us$1@dont-email.me>
References: <vnipj8$3i2i9$1@dont-email.me> <vnj7or$ga7$3@reader2.panix.com>
<vnr1lq$1d7as$1@dont-email.me> <67a4cc2d$0$708$14726298@news.sunsite.dk>
<vo2k7g$a7s$1@reader2.panix.com> <vo2mhs$30u76$1@dont-email.me>
<vo3929$34a3i$10@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 07 Feb 2025 04:15:20 +0100 (CET)
Injection-Info: dont-email.me; posting-host="b0775602d98a4cfe09b6e7190e1dd29b";
logging-data="3385308"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18+foO4Uy88NHznj9b9O7NDgWVzECObOzo="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:nTVyIW4wV8R5TUkX0Xg0+JwgwZs=
Content-Language: en-US
In-Reply-To: <vo3929$34a3i$10@dont-email.me>
Bytes: 4059
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
function test($a, $b) {
if($a == $b) {
echo "true ";
} else {
echo "false ";
}
if($a === $b) {
echo "true\r\n";
} else {
echo "false\r\n";
}
}
test(0, 0);
test(0, 0.0);
test(0, '0');
test(0, 'X');
test(0, False);
test(0, null);
?>
$ 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