What are the differences between an implicitly typed programming language and a untyped programming language?
Let me explain the above question and what I have thought about it.
My question comes from reading https://stackoverflow.com/a/9159863/156458, where the huge slide says "untyped = no type declaration". I don't quite agree with the definition of untyped, but the author can define a term in his own way which doesn't need to agree with PLT. Note that I don't know what definitions mostly make sense with respect to what they are named as in PLT.
In fact, after reading https://en.wikipedia.org/wiki/Programming_language#Type_system, I think implicitly typed means no type declaration when declaring a name, and is a concept as opposed to manifest i.e. explicitly typed. Untyped is a concept as opposed to typed. So my questions are based on the definitions from the wikipedia article.
If I am correct, the programs in both implicitly typed programming languages and untyped programming languages don't have explicit declaration of the type of each object, so the programs written in them look the same. Then how can you tell if a language is an implicit typed or a untyped programming language?
Is "implicitly typed" a concept at the level of implementations of programming languages, but not at the level of languages themselves?
I guess it is because for an implicitly typed language, any compiler or interpreter of the language will have to do type inference. If a compiler or interpreter of the language doesn't do type inference, then the language is untyped for this compiler or interpreter. So is untyped also a concept at the level of implementations of programming languages?
So to answer the question in part 2, we need to specify a particular implementation of the programming language under consideration?