February 11, 2004
davepermen wrote:

[I do not see a problem]

Not beeing able to recognize a problem is a non argument. Also enforced, you do not come up with a counter example that requires a call to look like `(1,2)', a slice to look like `[1..2]' or even an assignment to look like `v=1'.

If you think accompanying tools can and should take off the burdon
of a proper syntax from a language, then take the following list of error
messages and convince at least Walter to no longer maintain it:

!(TemplateArgumentList) expected following TemplateIdentifier '%s'
#line integer ["filespec"]\n expected
%p has no semantic routine
%s %s is deprecated
%s '%s' is not a variable
%s does not have a boolean value
%s has no value
%s is not a field
%s is not a field of %s
%s is not a template
%s is not a template
%s is not a template declaration
%s is not an expression
%s is not an expression
%s is not an expression
%s is used as a type
%s must be a function
%s must be an array or pointer type, not %s
%s.%s is private
'%s' is not a member of '%s'
'%s' is not a scalar, it is a %s
'%s' is not an arithmetic type
'%s' is not an integral type
'%s' is not an lvalue
'%s' must be an interface
';' expected
';' expected after template instance
';' expected after template instance, not %s
';' expected following module declaration instead of %s
'=' does not give a boolean result
'super' is only allowed in non-static member functions
'this' is only allowed in non-static member functions
'this' is required, but %s is not a base class of %s
(%s) does not match argument types (%s)
(%s) is false
(condition) expected after version
(condition) expected following version
(identifier) following 'out' expected, not %s
) expected instead of '%s'
... not allowed in delete function parameter list
a struct is not a valid initializer for a %s
alias cannot have initializer
align %d must be a power of 2
anonymous classes not allowed
apply() function for %s must return an int
argument expected for switch '%s'
array comparison type mismatch, %s vs %s
array index %lld is out of bounds [0..%lld]
array index [%lld] is outside array bounds [0 .. %lld]
asm statements must end in ';'
at least one argument of type uint expected
bad addr mode
bad operand
bad type/size of operands '%s'
base %s is forward referenced
base classes expected following ':'
base type must be class or interface, not %s
basic type expected, not %s
binary digit expected
binary-exponent-part required
break is not inside a loop or switch
can only * a pointer, not a '%s'
can only catch class objects, not '%s'
Can only concatenate arrays
Can only concatenate arrays, not (%s ~ %s)
can only synchronize on class objects, not '%s'
can only throw class objects, not type %s
can only throw classes, not %s
can't have array of %s
can't have associative array key of %s
can't have associative array of %s
Can't run '%s', check PATH
can't subtract pointer from %s
cannot access frame of function %s
cannot assign to static array %s
cannot cast %s to %s
cannot cast %s to %s since sizes don't line up
cannot cast from %s to %s
cannot change reference to static array '%s'
cannot convert string literal to void*
cannot create instance of abstract class %s
cannot create instance of interface %s
cannot declare template at function scope
cannot delete %s
cannot goto forward into different try block level
cannot goto into try block
cannot have array of %s
cannot have array of auto %s
cannot have out or inout argument of bit in array
cannot have out or inout parameter of type %s
cannot have parameter of type %s
cannot implicitly convert %s to %s
cannot modify const variable '%s'
cannot modify parameter '%s' in contract
cannot modify slice %s
cannot override final function %s
cannot resolve forward reference
cannot return expression from constructor
cannot return value from void function
cannot take address of bit in array
cannot use array to initialize %s
case %s not found
case '%s' is not a string
case not in switch statement
catch or finally expected following try
character entity out of range
character is truncated
class constructor call must be in a constructor
comma expected separating array initializers, not %s
comma expected separating field initializers
command line length of %d is too long
conflicts with %s.%s at %s
constructor calls not allowed in loops or after labels
constructors only are for class definitions
continue is not inside a loop
cyclic constructor call
declaration %s is already defined
declaration %s.%s is already defined
declaration expected following attribute, not ';'
Declaration expected, not '%s'
default not in switch statement
delegates are only for non-static functions
delete does not give a boolean result
destructors only are for class definitions
does not match any template declaration
duplicate case %s in switch statement
duplicate initializations for index %d
duplicate union initialization for %s
duplicate union initialization for %s
enclosing label '%s' for break not found
enclosing label '%s' for continue not found
end of file before closing %c of string
end of file before closing --> of comment
end of file before end of character entity
enum %s must have at least one member
enum member expected
escape hex sequence has %d hex digits instead of %d
expected %d arguments, not %d
exponent expected
expression (%s) has no type
expression expected, not '%s'
field %s of %s already initialized
field not allowed in interface
first argument must be type uint, not %s
Floating point constant expression expected instead of %s
floating point expected
for condition
foreach: %s is not an aggregate type
foreach: %s is not an array of %s
foreach: index cannot be inout
foreach: index must be type %s, not %s
foreach: key cannot be inout
foreach: key cannot be out
foreach: key type must be int or uint, not %s
foreach: value cannot be out and type bit
foreach: value must be type %s, not %s
foreach: value of UTF conversion cannot be inout
forward reference of base class %s
forward reference to template declaration %s
found '%s' instead of array initializer
found '%s' instead of statement
found '%s' when expecting '%s'
found '%s' when expecting '%s' following '%s'
found '%s' when expecting identifier following '%s.'
function %s does not override any
function body is not abstract in interface %s
function expected before (), not '%s'
function expected to return a value of type %s
functions cannot be const or auto
functions cannot return auto %s
functions cannot return static array %s
globals, statics, fields, inout and out parameters cannot be auto
goto case not in switch statement
goto default not in switch statement
Hex digit expected, not '%c'
identifier '%s' is not defined
identifier '%s' is not defined
identifier '%s' of '%s' is not defined
identifier expected following '.' instead of '%s'
identifier expected following '.', not '%s'
Identifier expected following (type).
Identifier expected following cast(type).
Identifier expected following goto
Identifier expected following import
Identifier expected following module
Identifier expected following package
Identifier expected following package
Identifier expected for template parameter
identifier expected not struct
identifier or integer expected, not %s
illegal UTF-16 value
illegal UTF-16 value %04x
incompatible types for ((%s) %s (%s)): '%s' and '%s'
incompatible types for array[range], had %s[]
index is not a type or an expression
Integer constant expression expected instead of %s
integer expected
integer expected, not %s
integer overflow
integral type expected for value-parameter, not %s
interface function %s.%s is not implemented
invalid numeric character reference
invalid UCS-32 char \U%08x
invalid UTF-8 sequence
invalid UTF-8 sequence
invariants only are for struct/union/class definitions
is forward referenced
is in multiple packages %s
is in multiply defined
is not a per-instance initializable field
is not a static and cannot have static initializer
Label '%s' already defined
label '%s' has no break
label '%s' has no continue
label expected
linkage doesn't match interface function
matches more than one template declaration
matching '}' expected, not %s
matching '}' expected, not end of file
member %s is not accessible
members expected
members of template declaration expected
module and package have the same name
multiple constructor calls
multiple declarations must have the same type, not %s and %s
multiple delete's for class %s
multiple delete's for struct %s
multiple destructors for class %s
multiple source files, but only one .obj name
must use body keyword after in or out
need 'this' to access member %s
need size of rightmost array, not type %s
negative array index %s
negative index %lld for static array
new allocators only are for class or struct definitions
new can only create structs, arrays or class objects, not %s's
no allocator for %s
no base class for %s
no case statement following goto case;
no constructor for %s
no definition for static %s
No expression copy for: %s
no identifier for declarator
no identifier for parameter %d of %s
no identifier for template value parameter
no property '%s' for type '%s'
no super class constructor for %s
no [] operator overload for type %s
non-constant expression %s
non-hex character '%c'
nops expected
number is not representable
Octal digit expected
odd length of UTF-16 char source %u
odd length of UTF-32 char source %u
odd number (%d) of hex characters in hex string
one argument of type void* expected
one argument of type void* expected, not %s
only fields allowed in anonymous struct
only one or two arguments for array foreach
only one or two arguments for associative array foreach
opcode expected, not %s
out result %s is already defined
overlapping initialization for struct %s.%s
overloads %s and %s both match argument list for %s
overrides but is not covariant with %s
package and module have the same name
parameter %s.%s is already defined
parameter '%s' multiply defined
parameters must be main() or main(char[][] args)
parenthesized TemplateParameterList expected following TemplateIdentifier
pointer expected before ->, not '%s'
pragma(identifier expected
pragma(identifier expected
PragmaStatement::toCBuffer()
ptr expected
redundant 'in' statement
redundant 'out' statement
redundant storage class '%s'
reference to auto class must be auto
return statements cannot be in contracts
return value expected
return without calling constructor
rvalue of in expression must be an associative array, not %s
semicolon expected
semicolon expected following function declaration
semicolon expected to close %s declaration
semicolon expected, not '%s'
source file name '%s' must have .%s extension
special function not allowed in interface %s
special member functions not allowed for %ss
statement expected to be { }, not %s
string expected for pragma msg, not '%s'
string expected for pragma msg, not '%s'
StringExp::toDt(type = %s)
struct %s is forward referenced
struct member expected
super class constructor call must be in a constructor
surrogate UTF-16 high value %04x at EOF
surrogate UTF-16 high value past end of string
surrogate UTF-16 low value %04x out of range
surrogate UTF-16 low value out of range
switch statement already has a default
synchronized function %s must be a member of a class
template %s is not a member of %s
template identifier %s is not a member of %s
template identifier %s is not a member of %s
template member expected
TemplateIdentifier expected following instance
TemplateIdentifier expected following template
Throw statements cannot be in contracts
too many initializers %d for array[%d]
too many initializers for %s
type %s is not an expression
undefined escape hex sequence \%c
undefined escape sequence \%c
undefined identifier %s
undefined identifier '%s'
undefined label %s
unexpected identifer '%s' in declarator
unknown operand for floating point instruction
unpaired surrogate UTF-16 value
unpaired surrogate UTF-16 value %04x
unrecognized declaration
unrecognized file extension %s
unrecognized pragma(%s)
unrecognized pragma(%s)
unrecognized switch '%s'
unrecognized token
unsupported char '%c'
unsupported char 0x%02x
unterminated /* */ comment
unterminated /+ +/ comment
unterminated character constant
unterminated string constant starting at %s
use '{ }' for an empty statement, not a ';'
UTF-32 value %08x greater than 0x10FFFF
valid linkage identifiers are D, C, C++, Pascal, Windows
variable %s cannot be synchronized
void functions have no result
void has no value
voids have no value
voids have no value
with expressions must be class objects, not '%s'
\%c sequence must be followed by %d hex characters
] expected instead of '%s'
{ enum members } expected

So long.

February 11, 2004
you act stupid.

case closed.

"Manfred Nowak" <svv1999@hotmail.com> schrieb im Newsbeitrag news:c0e095$hlr$1@digitaldaemon.com...
> davepermen wrote:
>
> [I do not see a problem]
>
> Not beeing able to recognize a problem is a non argument. Also enforced, you do not come up with a counter example that requires a call to look like `(1,2)', a slice to look like `[1..2]' or even an assignment to look like `v=1'.
>
> If you think accompanying tools can and should take off the burdon
> of a proper syntax from a language, then take the following list of error
> messages and convince at least Walter to no longer maintain it:
>
> !(TemplateArgumentList) expected following TemplateIdentifier '%s'
> #line integer ["filespec"]\n expected
> %p has no semantic routine
> %s %s is deprecated
> %s '%s' is not a variable
> %s does not have a boolean value
> %s has no value
> %s is not a field
> %s is not a field of %s
> %s is not a template
> %s is not a template
> %s is not a template declaration
> %s is not an expression
> %s is not an expression
> %s is not an expression
> %s is used as a type
> %s must be a function
> %s must be an array or pointer type, not %s
> %s.%s is private
> '%s' is not a member of '%s'
> '%s' is not a scalar, it is a %s
> '%s' is not an arithmetic type
> '%s' is not an integral type
> '%s' is not an lvalue
> '%s' must be an interface
> ';' expected
> ';' expected after template instance
> ';' expected after template instance, not %s
> ';' expected following module declaration instead of %s
> '=' does not give a boolean result
> 'super' is only allowed in non-static member functions
> 'this' is only allowed in non-static member functions
> 'this' is required, but %s is not a base class of %s
> (%s) does not match argument types (%s)
> (%s) is false
> (condition) expected after version
> (condition) expected following version
> (identifier) following 'out' expected, not %s
> ) expected instead of '%s'
> ... not allowed in delete function parameter list
> a struct is not a valid initializer for a %s
> alias cannot have initializer
> align %d must be a power of 2
> anonymous classes not allowed
> apply() function for %s must return an int
> argument expected for switch '%s'
> array comparison type mismatch, %s vs %s
> array index %lld is out of bounds [0..%lld]
> array index [%lld] is outside array bounds [0 .. %lld]
> asm statements must end in ';'
> at least one argument of type uint expected
> bad addr mode
> bad operand
> bad type/size of operands '%s'
> base %s is forward referenced
> base classes expected following ':'
> base type must be class or interface, not %s
> basic type expected, not %s
> binary digit expected
> binary-exponent-part required
> break is not inside a loop or switch
> can only * a pointer, not a '%s'
> can only catch class objects, not '%s'
> Can only concatenate arrays
> Can only concatenate arrays, not (%s ~ %s)
> can only synchronize on class objects, not '%s'
> can only throw class objects, not type %s
> can only throw classes, not %s
> can't have array of %s
> can't have associative array key of %s
> can't have associative array of %s
> Can't run '%s', check PATH
> can't subtract pointer from %s
> cannot access frame of function %s
> cannot assign to static array %s
> cannot cast %s to %s
> cannot cast %s to %s since sizes don't line up
> cannot cast from %s to %s
> cannot change reference to static array '%s'
> cannot convert string literal to void*
> cannot create instance of abstract class %s
> cannot create instance of interface %s
> cannot declare template at function scope
> cannot delete %s
> cannot goto forward into different try block level
> cannot goto into try block
> cannot have array of %s
> cannot have array of auto %s
> cannot have out or inout argument of bit in array
> cannot have out or inout parameter of type %s
> cannot have parameter of type %s
> cannot implicitly convert %s to %s
> cannot modify const variable '%s'
> cannot modify parameter '%s' in contract
> cannot modify slice %s
> cannot override final function %s
> cannot resolve forward reference
> cannot return expression from constructor
> cannot return value from void function
> cannot take address of bit in array
> cannot use array to initialize %s
> case %s not found
> case '%s' is not a string
> case not in switch statement
> catch or finally expected following try
> character entity out of range
> character is truncated
> class constructor call must be in a constructor
> comma expected separating array initializers, not %s
> comma expected separating field initializers
> command line length of %d is too long
> conflicts with %s.%s at %s
> constructor calls not allowed in loops or after labels
> constructors only are for class definitions
> continue is not inside a loop
> cyclic constructor call
> declaration %s is already defined
> declaration %s.%s is already defined
> declaration expected following attribute, not ';'
> Declaration expected, not '%s'
> default not in switch statement
> delegates are only for non-static functions
> delete does not give a boolean result
> destructors only are for class definitions
> does not match any template declaration
> duplicate case %s in switch statement
> duplicate initializations for index %d
> duplicate union initialization for %s
> duplicate union initialization for %s
> enclosing label '%s' for break not found
> enclosing label '%s' for continue not found
> end of file before closing %c of string
> end of file before closing --> of comment
> end of file before end of character entity
> enum %s must have at least one member
> enum member expected
> escape hex sequence has %d hex digits instead of %d
> expected %d arguments, not %d
> exponent expected
> expression (%s) has no type
> expression expected, not '%s'
> field %s of %s already initialized
> field not allowed in interface
> first argument must be type uint, not %s
> Floating point constant expression expected instead of %s
> floating point expected
> for condition
> foreach: %s is not an aggregate type
> foreach: %s is not an array of %s
> foreach: index cannot be inout
> foreach: index must be type %s, not %s
> foreach: key cannot be inout
> foreach: key cannot be out
> foreach: key type must be int or uint, not %s
> foreach: value cannot be out and type bit
> foreach: value must be type %s, not %s
> foreach: value of UTF conversion cannot be inout
> forward reference of base class %s
> forward reference to template declaration %s
> found '%s' instead of array initializer
> found '%s' instead of statement
> found '%s' when expecting '%s'
> found '%s' when expecting '%s' following '%s'
> found '%s' when expecting identifier following '%s.'
> function %s does not override any
> function body is not abstract in interface %s
> function expected before (), not '%s'
> function expected to return a value of type %s
> functions cannot be const or auto
> functions cannot return auto %s
> functions cannot return static array %s
> globals, statics, fields, inout and out parameters cannot be auto
> goto case not in switch statement
> goto default not in switch statement
> Hex digit expected, not '%c'
> identifier '%s' is not defined
> identifier '%s' is not defined
> identifier '%s' of '%s' is not defined
> identifier expected following '.' instead of '%s'
> identifier expected following '.', not '%s'
> Identifier expected following (type).
> Identifier expected following cast(type).
> Identifier expected following goto
> Identifier expected following import
> Identifier expected following module
> Identifier expected following package
> Identifier expected following package
> Identifier expected for template parameter
> identifier expected not struct
> identifier or integer expected, not %s
> illegal UTF-16 value
> illegal UTF-16 value %04x
> incompatible types for ((%s) %s (%s)): '%s' and '%s'
> incompatible types for array[range], had %s[]
> index is not a type or an expression
> Integer constant expression expected instead of %s
> integer expected
> integer expected, not %s
> integer overflow
> integral type expected for value-parameter, not %s
> interface function %s.%s is not implemented
> invalid numeric character reference
> invalid UCS-32 char \U%08x
> invalid UTF-8 sequence
> invalid UTF-8 sequence
> invariants only are for struct/union/class definitions
> is forward referenced
> is in multiple packages %s
> is in multiply defined
> is not a per-instance initializable field
> is not a static and cannot have static initializer
> Label '%s' already defined
> label '%s' has no break
> label '%s' has no continue
> label expected
> linkage doesn't match interface function
> matches more than one template declaration
> matching '}' expected, not %s
> matching '}' expected, not end of file
> member %s is not accessible
> members expected
> members of template declaration expected
> module and package have the same name
> multiple constructor calls
> multiple declarations must have the same type, not %s and %s
> multiple delete's for class %s
> multiple delete's for struct %s
> multiple destructors for class %s
> multiple source files, but only one .obj name
> must use body keyword after in or out
> need 'this' to access member %s
> need size of rightmost array, not type %s
> negative array index %s
> negative index %lld for static array
> new allocators only are for class or struct definitions
> new can only create structs, arrays or class objects, not %s's
> no allocator for %s
> no base class for %s
> no case statement following goto case;
> no constructor for %s
> no definition for static %s
> No expression copy for: %s
> no identifier for declarator
> no identifier for parameter %d of %s
> no identifier for template value parameter
> no property '%s' for type '%s'
> no super class constructor for %s
> no [] operator overload for type %s
> non-constant expression %s
> non-hex character '%c'
> nops expected
> number is not representable
> Octal digit expected
> odd length of UTF-16 char source %u
> odd length of UTF-32 char source %u
> odd number (%d) of hex characters in hex string
> one argument of type void* expected
> one argument of type void* expected, not %s
> only fields allowed in anonymous struct
> only one or two arguments for array foreach
> only one or two arguments for associative array foreach
> opcode expected, not %s
> out result %s is already defined
> overlapping initialization for struct %s.%s
> overloads %s and %s both match argument list for %s
> overrides but is not covariant with %s
> package and module have the same name
> parameter %s.%s is already defined
> parameter '%s' multiply defined
> parameters must be main() or main(char[][] args)
> parenthesized TemplateParameterList expected following TemplateIdentifier
> pointer expected before ->, not '%s'
> pragma(identifier expected
> pragma(identifier expected
> PragmaStatement::toCBuffer()
> ptr expected
> redundant 'in' statement
> redundant 'out' statement
> redundant storage class '%s'
> reference to auto class must be auto
> return statements cannot be in contracts
> return value expected
> return without calling constructor
> rvalue of in expression must be an associative array, not %s
> semicolon expected
> semicolon expected following function declaration
> semicolon expected to close %s declaration
> semicolon expected, not '%s'
> source file name '%s' must have .%s extension
> special function not allowed in interface %s
> special member functions not allowed for %ss
> statement expected to be { }, not %s
> string expected for pragma msg, not '%s'
> string expected for pragma msg, not '%s'
> StringExp::toDt(type = %s)
> struct %s is forward referenced
> struct member expected
> super class constructor call must be in a constructor
> surrogate UTF-16 high value %04x at EOF
> surrogate UTF-16 high value past end of string
> surrogate UTF-16 low value %04x out of range
> surrogate UTF-16 low value out of range
> switch statement already has a default
> synchronized function %s must be a member of a class
> template %s is not a member of %s
> template identifier %s is not a member of %s
> template identifier %s is not a member of %s
> template member expected
> TemplateIdentifier expected following instance
> TemplateIdentifier expected following template
> Throw statements cannot be in contracts
> too many initializers %d for array[%d]
> too many initializers for %s
> type %s is not an expression
> undefined escape hex sequence \%c
> undefined escape sequence \%c
> undefined identifier %s
> undefined identifier '%s'
> undefined label %s
> unexpected identifer '%s' in declarator
> unknown operand for floating point instruction
> unpaired surrogate UTF-16 value
> unpaired surrogate UTF-16 value %04x
> unrecognized declaration
> unrecognized file extension %s
> unrecognized pragma(%s)
> unrecognized pragma(%s)
> unrecognized switch '%s'
> unrecognized token
> unsupported char '%c'
> unsupported char 0x%02x
> unterminated /* */ comment
> unterminated /+ +/ comment
> unterminated character constant
> unterminated string constant starting at %s
> use '{ }' for an empty statement, not a ';'
> UTF-32 value %08x greater than 0x10FFFF
> valid linkage identifiers are D, C, C++, Pascal, Windows
> variable %s cannot be synchronized
> void functions have no result
> void has no value
> voids have no value
> voids have no value
> with expressions must be class objects, not '%s'
> \%c sequence must be followed by %d hex characters
> ] expected instead of '%s'
> { enum members } expected
>
> So long.
>


February 11, 2004
davepermen wrote:
> you act stupid.
> 
> case closed.
> 

Settle down, girls.  Can't you just be okay with disagreeing?  I'm wasting time reading these posts.  I get it that you two do things differently.  Case closed.
February 11, 2004
shall i add a third case closed? :D

no, definitely. i stated manfred is right.

i just think it's not important or dangerous.

the rest was talking besides eachother.

i haven't answered his questions really,
so didn't he replied to mine..

i'm sorry.

sorry manfred
sorry brad

i hope it was at least a good read:D

greetings to all.

i hope we find some midway..

but walter does not want to have warnings in the dmd..

well.. as it can not be an error, what should be done now? "Brad Anderson" <brad@sankaty.dot.com> schrieb im Newsbeitrag news:c0e2m4$li9$1@digitaldaemon.com...
> davepermen wrote:
> > you act stupid.
> >
> > case closed.
> >
>
> Settle down, girls.  Can't you just be okay with disagreeing?  I'm wasting
time
> reading these posts.  I get it that you two do things differently.  Case
closed.


February 12, 2004
davepermen wrote:
[...]
> i hope we find some midway..
> 
> but walter does not want to have warnings in the dmd..

Since D has a syntax that's easy to parse, D users can develop their own tools to parse the code and look for Dangerous Situations. We could add our warnings by running a program on the code before we submit it to the compiler (let's call it dcheck). If dcheck rejects the code, we could fix it before we try to compile it.

If the person who writes dcheck is worried about nearly everything, dcheck can check many, many possible problems. If someone isn't worried about any of these possible problems, he doesn't have to use dcheck at all.

Now everyone's happy. :)

-- 
Justin
http://jcc_7.tripod.com/d/
February 12, 2004
J C Calvarese wrote:

> If dcheck rejects the code, we could fix it before we try to compile it.
>
> If the person who writes dcheck is worried about nearly everything, dcheck can check many, many possible problems. If someone isn't worried about any of these possible problems, he doesn't have to use dcheck at all.
>
> Now everyone's happy. :)
>

Isn't there something like that for C/C++?   Actually I think there's a load of these programs for C/C++ out there.  I think there called "code analysers". Anyway good luck to anyone to attempts to make one.

-- 
-Anderson: http://badmama.com.au/~anderson/
February 12, 2004
Manfred Nowak wrote:
> J C Calvarese wrote:
> 
> 
>>Seriously...
> 
> [...]
> 
>>(If a person only wants to complain, then they can just complain.)
> 
> 
> http://remus.rutgers.edu/~rhoads/Obfuscated_C/bright
> 
> How quick can you tell the public, what the meaning of the comments in
> the example referenced above is?
> 
> So long.

Oh, be serious.

I challenge you to design any kind of language (computer or otherwise) in which it's not possible to obfuscate, either accidentally or intentionally.

February 12, 2004
Richard Krehbiel wrote:
>
> I challenge you to design any kind of language (computer or otherwise) in which it's not possible to obfuscate, either accidentally or intentionally.

How about LOGO? ;)


Sean

February 12, 2004
Richard Krehbiel wrote:

[...]
> any kind of language
[...]

That is easy. For example the languages recognized by the following regular expressions:

1)  ^$
2)  ^0|1$
3)  ^1*$

Make a system fool proof, and only fools will use it.

Have you obfuscated your own request? <g>

So long.

February 12, 2004
"Manfred Nowak" <svv1999@hotmail.com> wrote in message news:c0d8o6$2ab7$1@digitaldaemon.com...
> Sam McCall wrote:
>
> > Um, I think it's because walter has more difficult issues to deal with than . versus ..
>
> I see. Would you have had a look at his code, then you would have noticed, that he codes as if D has already more than the proposed change incorporated: always two spaces around `..' while one space would suffice. Whereas in comments he follows the natural way of specifying slices: mostly without surrounding spaces.

Over the years I have slowly gravitated towards putting spaces around operators, and a space following the use of comma. It's just easier to read that way for me. It helps also to use a monospaced font rather than a proportional one, I can't read code in proportional fonts <g>.

The problem in your example is one I had not thought of, though it's fixable by not allowing implicit conversions of floating point to ints, which I thought was already there but apparently not.

I haven't used color syntax highlighting editors myself, but such should make such errors stand out like a neon sign, and should help a lot in eliminating such coding errors from the start.