what is a "Self programming language" - programming-languages

I am learning SmallTalk now using Squeak4.1. I use Squeak by Example as a tutorial, Here I countered a delema, " Morphic was developed by ... for the Self programming language "
Can anybody give some hints on the meaning of self programming language?Do it means smtalltalk is a self programming language?

Self is an object-oriented programming language.
When I first read your question I though the same as I think you are - that the language programmed itself. However, the capitalised 'Self' should have given it away. :)

Self is an object-oriented programming language developed at Sun Microsytems.
Check out: http://labs.oracle.com/self//language.html

This is cute, considering how the Self programming language is also a self programming language!
Self is a programming language in which Morphic was devised as the model for user interface. Squeak adapted it from there, with the bit of pain it implied migrating from a prototypes based language to a class based one.
BTW, Smalltalk is a self programming language too! Smalltalk, as Self, is defined by itself (in terms of more Smalltalk and a few VM primitives).

Related

Is there an abstract language that "compiles" to natural languages?

Is there an abstract language that "compiles" to natural languages?
For example
(verb-love :subject person-1sg :object person-2sg)
would compile to "I love you" in English but to "Je t'aime" in French.
With the possibility to add mood, tense, etc.
(verb-love :subject person-1sg :object person-2g :tense future)
I used S-expressions the example but the syntax doesn't matter.
It does not have to be Turing-complete since a scripting language could generate such code.
This is a general question without a clear application. Some may say that depends on the application. Compiling abstract representations into text may not be natural language but it is close enough for some applications.
One of the solutions is Grammatical Framework (GF) https://www.grammaticalframework.org/lib/doc/synopsis/index.html. You can write abstractions and various linearisations in different languages. A good starting point is GF's Resource Grammar Library (RGL) which has a small set of vocabulary and standard sentence structure for a very wide range of languages in the world.
There is a tiny version here on the web demo:
http://cloud.grammaticalframework.org/minibar/minibar.html

Is EBNF considered as a Programming Language

I am confused wheter EBNF can be considered as a Programming language which is turing complete?
To answer your question, no, Extended Backus–Naur Form (EBNF) is not a programming language. It is a metasyntax notation.
While a language is a way to describe an algorithm (what a computer should do), metasyntax is a way to describe a language.

Are there any context-oriented programming language, and what's their use for?

I heard someone talking about Context-Oriented Programming, so I googled it to found out what that means, and it seems like a new paradigm of programming, but also all I found are academic papers talking about the concept.
So I would like to know if there's any language that implements context-orientation and what is this good for?
COP is a programming paradigm supporting software adaptation to the execution context.
It's an alternative to the use of hard-coded conditional statements spread over the application to encode context-dependent behavior.
In the years several COP extensions to various languages have been proposed:
ContextJ and JCop for Java
Context Erlang for Erlang
ContextL for Common Lisp (the first COP extension to a programming language)
SubjectiveC for Objective C
ContextS for Smalltalk
PyContext for Python
ContextR for Ruby
ContextJS for Javascript
and probably many others.
Each concrete language design and implementation comes with different variations of the features of the COP paradigm. For further details you can see A Comparison of Context-oriented
Programming Languages (Malte Appeltauer, Robert Hirschfeld, Michael Haupt, Jens Lincke, Michael Perscheid - 2010).
Also a good introduction / starting point is Context-oriented Programming (Robert Hirschfeld, Pascal Costanza, Oscar Nierstrasz) or Context-Oriented Programming: A Programming Paradigm for Autonomic Systems (Guido Salvaneschi, Carlo Ghezzi, Matteo Pradella - 2013).

What defines a programming language?

Recently I've starting a project I'm calling 'JIL' or JIL Interfacing Language, and it's to be a programming language of sorts. Now, I doubt it will ever be super-useful or versatile, but the aim of it is to be a step up from block programming, but a step down from complex languages like java, C, or C++. JIL stands for JIL Interfacing Language because it is both interpreted and parsed in java, and all of its keywords/methods will be interpreted and then executed in java. My question is would JIL count as a 'true' programming language, or is it a 'false' or 'secondary' programming language that is nothing more than a java application.
using wiki's definition as a rule of the thumb:
A programming language is a formal constructed language designed to
communicate instructions to a machine
yours is formal because it can be parsed. if it also instructs machine what to do then congratulations - your first programming language :)

What strongly typed languages should I consider for my next development language?

I'm currently assessing which strongly-typed server-side languages I could choose to learn next. I'm coming from a background of mainly php development (oop). I'm looking at strongly-typed languages as I consider this a major downside to php (and sometimes an upside).
I know both C# and Java (JSP/Servlets) are an option, however I wanted to consider other languages that I've yet to research.
I'm mainly looking at this from a career POV, so theres no point in picking up a language that's dying out or in low demand (now or in the future).
Scala very beautifully blends object oriented programming and functional programming to form a new programming paradigm called object-functional programming which is, as far as my experience goes, most scalable and productive paradigm ever.
Go for it, I would say.
Do you mean statically typed languages (checked at compile time)? If so, C# or Java really are probably your best bets for widely used server-side languages. Languages such as Python and Ruby are strongly typed, but they are dynamic like PHP.
http://en.wikipedia.org/wiki/Type_system
http://en.wikipedia.org/wiki/Strongly_typed_programming_language
First avoid using "strongly typed " most people misunderstood this term. (I personally refuse to give it a meaning)
I am assuming that your are talking of a statically type language as opposed to a dynamically type language.
I can understand from your background with php that you want to lean a statically type language but be aware that php is the worst dynamically type language that I have ever seen.
I would say that if you know C#, Java that is enough.
IMHO learning a language for a career POV is not what will improve your skill in PL.
This because most industries have no idea which language to choose in other to express the best there problems. So there are choosing language base on what the other competitors used. [1]
Your also have to ask your self why you want to learn statically type language.
Understand what is the difference between static and dynamic typing and what it implies. This is a hard question to answer. Is not as obvious as what most people think.
So I can answer which language while improve your programming skill ( LISP (DT) , Smalltalk (DT) , Scheme (DT) , ML (ST) , Haskell (ST), Prolog (DT), C (ST), Self (DT) ).
DT: Dynamically type,
ST: Statically type
[1] http://www.paulgraham.com/avg.html

Resources