Applications of Objective-Z [closed] - z-notation

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
What are applications of Objective-Z?
I have read about Objective-Z, but I cannot imagine to what it would be applied.
This question may be too broad, but I do not think that there are too many answers.

Objective-Z is an object-oriented extension to Z.
From here, you can get an overview of Objective-Z:
Object-Z extends Z by the addition of language constructs resembling the object-oriented paradigm, most notably, classes. Other object-oriented notions such as polymorphism and inheritance are also supported.
While not as popular as its base language Z, Object-Z has still received significant attention in the formal methods community, and research on aspects of the language are ongoing, including hybrid languages using Object-Z, tool support (e.g., through the Community Z Tools project) and refinement calculi.
For more information about the language and its uses, I would recommend visiting the Objective-Z homepage.
Its applications are similar to that of Z-notation - it is just an extension to a specification language.
If you really want to know about applications of Objective-Z, you can read this book.
I hope this helps, and good luck with Z.

Z is a specification language, meaning it is used to describe a system.
A quote from the Wikipedia article about Specification Languages states:
A specification language is a formal language in computer science used during systems analysis, requirements analysis and systems design to describe a system at a much higher level than a programming language, which is used to produce the executable code for a system.
The Z language is, according to this source,
a formal specification language used for describing and modelling computing systems. It is targeted at the clear specification of computer programs and computer-based systems in general.
So, that is the application of Z.
I see that your question is not about Z, but about Objective-Z, but I hope that this answer can still be useful.

Related

Is the Go programming language replacing C++? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I have read on some blogs that Go is a better system programming language and is going to replace C/C++. I am currently learning C++. So, I was wondering whether I should continue learning C++ or move to Go?
Go is designed for reliable, fast online services. It's the recommended language of Google App Engine. It does have general feature parity with C, plus additional scalability features. Perhaps, one day, it will be adopted for embedded programming and client-side applications, but that has yet to happen.
C is used in many, many application domains. No other language approaches its breadth of use. As a first language, though, it won't help you develop good habits.
C++ is a multi-paradigm language. It supports deep, generic metaprogramming. Many users of C++ are really using "embedded domain-specific languages" (EDSLs) where a library provides functionality defined within the C++ grammar. Go does not attempt to provide this depth, which is a Pandora's box of complexity.

Snobol Pattern Matching [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
My question is simple. Is the programming language Snobol4 still useful to provide a modern day solution for pattern matching, or has regex in other procedural languages pretty much wiped it out in application?
The pattern language is modeled on context free grammars,
with context sensitive extensions that provide full (type 0)
computational capabilities.
This is from an introduction originally written by Robert Dewar, creator of the SPITBOL implementation of SNOBOL-4. Since both references are in relatively new, and maintained libraries, I'd think that even though the pattern language is not part of, say, JavaSrcipt with its statistically many uses, or part of other modern languages, it might surprise users of REs in terms of speed and power.
That being said, SNOBOL-4 patterns have been criticized for leading to hard to understand programs, for using FENCE, not NOT (Farber? Gimpel?) and other phenomena that seem to have a come-back with Perl5 compatible "regular expressions", and ICU's. They, too, are rediscovering some effects of backtracking and anchors. R.E. Griswold, creator of SNOBOL-4, has later created the Icon programming language. It features generators and goal directed evaluation, thus taking backtracking to a level at which arguably search is more clearly expressed than one could do using the implications of complex patterns.
Insofar as this historic development is preceding today's "REs" growing in power, I'd say that SNOBOL-4 patterns offer something to the profession for evaluation, what to do again and what not to do again.
Say, do we need a BAL pattern in practice?

The suitability of procedural programs for graphical applications [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
Dear software engineers:
I am currently teaching a procedural programming unit (using the C language) to a group of Level 3 students in the UK. Here is the Unit 16 Procedural Programming specification document.
For a Distinction (higher level) task, the students must "evaluate the suitability of procedural programs for graphical applications".
It is possible to implement graphical applications using GTK and Qt, but it's also possible to create blinking text on a webpage (just because you can, it doesn't mean you should).
Many games and desktop applications are written in C++, so I suspect that object-oriented code is better for building graphical applications.
To reiterate, I need to "evaluate the suitability of procedural programs for graphical applications".
As a software engineer, how would you answer this question?
[Edit] For what it's worth, I received an excellent response to this question on Quora.
I don't think that object-oriented or procedural programs are "better", any more than writing algorithms in recursive or iterative style are "better".
Lots of wonderful code was written before object-orientation came along.
I think the styles have more to do with managing complexity. Objects are state and behavior together in a single software component. When you system maps well to objects, that style can be a good way to manage complexity. It's worked well for GUI components like windows, buttons, etc.
But it need not be the only way.
I took an intro programming class in C at Stanford University in 1996, when C++ was just starting to take hold and neither Java nor C# existed. They had students doing graphical programming using a very disciplined style that used well designed libraries and rigorous decomposition. I would defy you to find better code.
Even with object oriented programming, normally functions will eventually get called to perform some operations, and the code in those functions would be considered procedural. The main difference is how the code ended up calling those functions along with the parameters used by those functions.

Value Oriented Programming Languages [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
In this greak talk Value of Values, Rich talks about Place Oriented Programming (PLOP) which mutates data in place, lets call the languages with everything immutable or values as Value Oriented Programming (VLOP) for a moment. What languages other than Clojure are VLOP and how they implemented immutability (e.g. Structural Sharing, Plain Copy etc.) ?
"Value-oriented programming" is, more or less, just an alternative name for functional programming. For example, see here (1998) or here (2004), and most prominently, Andrew Appel's 1995 talk "Value-oriented programming, not object-oriented programming!" (which I cannot find online). The actual term can be traced back to at least 1981.
Unfortunately, the name never caught on, although Appel and other people have argued in the past that it is more accurate (and perhaps also more buzzword-compliant), and would have made functional programming an easier sell.
In other words, you are just looking for functional languages, of which there are many. Most famously, Haskell, ML (Ocaml and SML), Scheme.

Does every large project include a Lisp interpreter? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I had the impression that there was a paper or article somewhere that claimed every sufficiently large project (not written in a Lisp variant) contained a poorly implemented Lisp interpreter. Google turns up nothing and a quick search of SO doesn't either. Is this something well known and documented somewhere I have forgotten, or just a figment of my imagination?
An actual document or link to such an article would be appreciated, if it exists. Otherwise, I will remove the question.
What Greenspun meant when he uttered this quip was that Lisp provides a great many foundational technologies for writing good software, and that programs written in other languages informally (and inferiorly) reproduce a number of them as they grow.
Yes, this claim is Greenspun's tenth rule (actually the only rule):
Any sufficiently complicated C or Fortran program contains an ad hoc,
informally-specified, bug-ridden, slow implementation of half of
Common Lisp.
It is making a valid point about the expressiveness of Lisp-style features (particularly its kind of macros). However, it isn't serious to the degree you would write a paper on it.