Next topic: Java and OOP
[ 15.html ]
Grades have been posted
[ grading/ ]
The next topic is functional programming
(Chapter 15 +
[ 13.html ]
followed by abstract data types
(Chapter 11 +
[ 14.html ]
We will be studying the implementation of subprograms
(Chapter 10). Please study my notes
[ 12.html ]
Then we will be doing a laboratory
[ lab/12.html ]
on defining arithmetic functions in LISP.
[ grading ]
Next two weeks
|09||Apr 30||Control structures
||Chapter 8 not section 5
[ 09.html ]
[ lab/09.html ]
[ 10.html ]
[ lab/10.html ]
|**||May 7||Project Phase 1 Resubmit||Old UML and proposed changes (10 pts)
||Chapter 2 section 4 + LISP handout
[ 11.html ]
[ lab/11.html ]
[ grading/ ]
for details.... most groups will need to resubmit their work to
get a good grade for the first phase.
[ grading/ ]
- To earn points your name must be listed as working on a project.
- Work to do
[ projects.html#Project Phase 1 due class 07 ]
- Spell check it!
- You do not have to make a presentation Tuesday night. Just hand in a hard copy
of the project phase 1 at the start of class.
- You can submit softcopy -- but only 30 minutes before the start of class,
so I can print it.
Next week starts with Project Phase 1 + chapter 6.
Followed by chapter 7.
[ grading/ ]
[ 503 ]
[ 240152206?nomobile=1 ]
Three or four people have asked me where "Temporary Classroom 16" is.
The temporary classrrooms (TC) are little buildings north of the library and
West of the College of Education. We are meeting in the one numbered "016".
To quote one student
"Oh ok so those brown shack looking buildings". Yep!
I will have to search out the right one today...
The schedule and syllabusses have been updated ready for the first class
on April the 2nd
[ ../syllabus.html ]
[ ../schedule.av.html ]
[ syllabus.html ]
[ schedule.html ]
[ schedule.html ]
would be correct and complete if I knew when the final will be scheduled,
given I have got no bloopers.
[ http://www.wired.com/wiredenterprise/2013/03/wikipedia-lua/ ]
Hello Professor Botting, my name is Joey Cantellano and I was
wonderingabout your Programming Languages class for Spring Quarter
of 2013. I was
wondering if I can use the 9th edition for the class called:
Programming Languages by Sebesta instead of the 10th edition unless
the questions are different?
Sorry -- but it must be the 10th edition.
[ lisp.html ]
Only got the hype so far
[ http://www.technologyreview.com/news/429544/new-programming-language-makes-social-coding/ ]
but may be able to add syntax, samples, etc. later.
Here is a distribution of grades
[ cc-back-on-top-of-the-programming-heap ]
Here is a little enrichment
[ 232900836?cid=DDJ_nl_upd_2012-04-24_h&elq=837c38b000864c6b8531c8f65e88b42a ]
on improving the
[ wat ]
to the first lab.... with thanks to Nick.
is a demonstration of how an extension of LISP (called Racket) creates a
programming language that lets you write a classic adventure text style
game. It looks to provide a short cut.... Practical LISP programming always
started with putting some extra structures on top of the LISP core.
[ 10-programming-languages-could-shake-it-181548?page=0,4 ]
(Infoworld (01/03/12) Neil McAllister )
[ StefikPlateau2011.pdf ]
paper describes an experiment where Perl is compare to two other languages. One is
designed with random lexemes, and another to be easier to write.
Here is the annual listing of the 20 most popular languages
[ index.html ]
in the Tiobe Community. The biggest changes are 11 place jump by Lua and the 10 place jump of D.
- Concepts of Programming Languages, 10/E
- Robert W. Sebesta, University of Colorado, Colorado Springs
- ISBN-10: 0131395319 ISBN-13: 9780131395312
- Publisher: Addison-Wesley Copyright: 2013
- Format: Cloth; 816 pp
- Published: 01/06/2012
[ 9780131395312.page ]
Nice website about programming languages
[ Help:Similar_Sites ]
A couple of questions in class...
- Is it true that you can get car insurance from GEICO at 15% of your current insurance?
- Why don't you ask Prolog?
(End of Net)
I was laughing too much to come up with an answer.... but here it is.
This would answer the question
GEICO <= Current * (1.0 - 0.15).
if the variables GEICO and Current were instanciated with the right values...
And you could define a couple of predicates to describe the offerings:
and then compile these and the query below will answer the question:
geico(GEICO),current(Current), GEICO <= Current * (1.0 - 0.15).
A more comprehensive approach is via a predicate/data base
- car_insurance('AAA', ....).
- car_insurance('Farmers', ....).
- car_insurance('GEICO', ....).
and writing a predicate/program that picks the minimum price. There is a Prolog
solution but it goes beyond the elementary techniques in the book and the first
two labs.... as far as I can see. I'll post a solution later.
- 10:13:33 Here
[ prolog/minimum.plg ]
it is. Still looking for a solution that does not involve assert/retract.
- 13:11:19 Found how to use bagof and min_list:
[ prolog/minimum2.plg ]
To save a little time grading and handing back assigned work in class...
Do not hand in your Qns+Ans tonight but keep them until the start of class.
Jane Curnutt has invented a cunning procedure to save us time sorting the work.
Each colmun of people will pass work forward with the first (alphabetically) going first,
starting at the back, wait for the pack to arrive and insert yours and pass it forward...
And we will take it from there...
We discussed Eliza, AI, and languages that are competing with LISP in the AI domain.
Jack Price found
[ eliza ]
a simplified Eliza running on a web page in the University of Birmingham, England.
It is written in Poplog. Poplog is a language that we don't have time to study. It is the
marriage of Pop and Prolog.
was a interpreted functional language "Pop" developed in Edinburgh (circa 1967),
Scotland by a man called Popplestone.
[ POP-2 ]
He claimed the name came from the run-time stack he used, however.
I have always like the look of it -- I have the manual in my office.... but I've never used it.
And it has never got very much press or following. However I have stolen some ideas from it
and put them in my own MATHS language.
We will talk about Prolog at the end of this course.
[ 4b8b0e06a2d5cfcc?hl=en ]
[ call-by-object.htm ]
By the way.... this is a live discussion, not a valued source of data.
I was asked what was due to night. Here is my answer:
There is always something due at the start of every meeting!
This time you can get full 100% credit by handing in 2 Review Questions+Answers from Chapter 1. You may hand in more.
I usually ignore the extras.
Make them readable!
Another new language spinning of from Ruby and Java:
[ fun-java-with-mirah ]
[ programming-languages-basics ]
A new LISP is on the block
- Clojure::= See http://clojure.org/.
I have improved and will be further improving
[ samples/python.html ]
my python pages.
[ GCC-Moving-To-Use-C-Instead-of-C ]
An anonymous reader writes "CodeSourcery's Mark Mitchell wrote to the GCC
mailing list yesterday reporting that 'the GCC Steering Committee and the
[ msg00705.html ]
approved the use of C++ in GCC itself. Of course, there's no
reason for us to use C++ features just because we can. The goal is a
better compiler for users, not a C++ code base for its own sake.' Still
undecided is what subset of C++ to use, as many contributors are experts
in C, but novices in C++; there is a call for a volunteer to develop the
C++ coding standards."
Discuss this story at:
[ 0245259 ]
[ http://www.wired.com/thisdayintech/2010/05/0528cobol-conference/ ]
I've added a call to "srand" to initialize the random number generator
to a different seed each time you run xlisp, at the request of a user.
Note: In the 1980's C let you get away with almost contradictory
declarations. But this is no longer allowed so I had to fix
101 lines of code just so I code add ONE FUNCTION CALL.
Just test Q on
[ a.rb ]
and it worked:-)
[ http://www.skorks.com/2010/05/closures-a-simple-explanation-using-ruby/ ]
Do not believe anything on this site....
[ brief-incomplete-and-mostly-wrong.html ]
(but laugh at it).
[ 224600240 ]
[ http://xkcd.com/727/ ]
[ index.html ]
Today you should prepare by studying chapter 1
[ 02.html ]
and handing in your review questions + Answers.
Saw this on SlashDot. A language that makes it easy to automate tasks by mixing
Python like syntax with GUI elements. For example you can take a snapshot of a button on
the screen and drag it into a script as an argument of a "click(_)", "wait(_)",
"input(_)", etc. function. Here
[ http://sikuli.csail.mit.edu/ ]
is the link to the project site at MIT. The drag and drop feature is like the
MIT Scratch language.
[ Meet_Go__Google_s_New_Programming_Language ]
[ http://golang.org/ ]
[ 1015fortran-launch ]
Short and to the point
but I think I could (1) improve his COBOL, and (2)
COBOL code that is downright ugly in any other language.
[ speed-size-and-dependability-of.html ]
An unknown Lisa sent me a link to
[ random-programming-languages.html ]
which has some information and links to sites on esoteric
languages. However I don't think of FORTRAN as sophisticated...
In the computer world we often express thoughts using
-- Ho Ho Only Serious. Kyle sent me this
[ tao-of-programming.html ]
and it is funny, but there is also hard earned wisdom and some
By the way..... this just came in my EMail
- Tcl::= See http://www.computerworld.com.au/article/301772/-z_programming_languages_tcl
I've just updated my notes on a language called Erlang:
[ ../samples/languages.html#Erlang ]
(you don't need to learn anything about Erlang for this class
but it is an interesting example of "functional" programming.
Tim Eason sent me to
[ http://codepad.org/ ]
which has a dozen languages ready to be tried out. So far I've only spotted one error
(in Scheme).... I'm "rbotting" on it.
Sao Thao pointed me to
[ http://www.osmosian.com ]
that claims to make programming in English a possibility. After a Google search for
Osmosian I got the following data
- It looks legit.
- they were rather fanatical.
- no updates since 2006
- actually a mixture of Logo and HyperTalk (Apples scripting language for HyperCard).
- real programmers react very badly to it -- possibly bcuas thay kant spel :-)
- I like some of the ideas...
- If they are not careful they will get Cobol
- The nicer the window dressing, the less there is on sale:-)
[ -z_programming_languages_falcon ]
might provide some entertaining sidelights on some of the things we are
doing in ths class.
If you have ever wondered what programming language Aristotle
used you could read
[ if-philosophers-were-programmers.html ]
to get one view....
Personally I find C++ and Java highly Aristotlean....
[ http://groovy.codehaus.org/ ]
[ esoteric.shtml ]
O'Reilly have done it again. A nice history chart
[ prog_lang_poster.pdf ]
[ cars.html ]
and compare with
[ consumers.html ]
Last night in the lab I discovered that the machines in JBH359 have
a shiny new SWI Prolog installed on them. It has a neat GUI help
system..... And it understands more arrow keys.
You can run it with the command
(and so this is the default plthat you will normally get if
you don't use Q).
However they have moved the language closer to Quintus Prolog and
Gnu Prolog. The first consequence is that if you want a prdicate to
change as the program runs you must declare that it is dynamic
before you actually place any predicates in the data base. SOme
of my examples (4th.plg) didn't do this. So I've just editted them
and reuploaded them.
The other cosequence of the upgrade is that a rather usful predicate
called select has changed its definition. I use it mainly
to generate permutations:
This works by selecting each element Y out of list X leaving
the rest of the list in R. So select([1,2,3], Y, R) generates
Now Quintus Prolog has a different definition with the parameters
X and Y are in a different order:
On the other hand they have permutation already defined so replacing
the two line definition of perm by
is a quick fix.
By the way... the /usr/bin/pl isn't on jbh3-1 the SSH server:-(
I guess I'll have to add fixing this to my list of fun jobs for the summer.
Andrew Murphy reccommends
[ http://dia-installer.de/ ]
, he write
"I found a windows version of Dia (requires GTK 2.6) that runs pretty well
and is great for groups that can't make it to the lab."
Rigo gave me this
[ http://w3schools.com/ ]
and it looks (1) very useful, and (2) too detailed for CSCI320.
The following cam in from Victor who took CS320 some years ago.
I also had a quick (maybe) question for you about Ruby. I'd like
to get a hold of a good Ruby compiler to install on a Linux
machine. I don't have Admin privileges though, so I'm hoping to
run it from my home directory. I need it for a program called Tioga
which uses Ruby to install and plots Stellar evolution data in
beautiful ways I haven't seen before using pdf and latex tools
working together with Ruby I think. I read on the web "37 things I
love about Ruby" and the programming language sounds too good to
be true lol. I never heard of a "very-high level language (VHLL)"
which it claims to be.
Does any body know a good Ruby compiler/interpreter for users
on a Linux system? Email me and I'll pass it on to Victor.
By the way, another alumni of CSci320 contributed to
[ phalanger-intro.asp ]
an article on a .NET system for
The Code Project website
[ http://www.codeproject.com/ ]
looks like a good resource if you are into developing software for
the MicroSoft Platforms.
Fortress a big jump on Fortran
[ 0,7204,21124560%5E15321%5E%5Enbv%5E,00.html ]
Barbara Gengler JANUARY 30, 2007
REMEMBER Fortran? Sun Microsystems is developing a follow-up programming language that may drive high-performance computing in the future.
The prototype Fortress, released as open-source software, is intended to take the place of Fortran.
Sun also released a series of draft specifications of the language and published formal calculi and soundness proofs of several of the core language features.
This just in from the Assoc of Computing Machinary:
Sun Microsystems has announced that it will open-source its new Java
compiler, Javac, through a project known as the Kitchen Sink Language
(KSL), which will allow programmers to play around with the language in
hopes of obtaining data on which to base debates concerning the dynamic
language. Javac lead tech Peter von der Ahe says, "I see a lot of proposal
for enhancing the language and our team has to turn down most. So how can
we experiment?" KSL, a Sun incubator project created by Java creator and
Sun Fellow James Gosling, is a forum that will let programmers evaluate the
language "by using [it] on their own code," rather than reading abstract
specifications and proposals, according to von der Ahe. He understands the
potential for chaos that KSL could bring to the language, so he explains
that Sun must be "conservative" when evaluating features to implement. In a
Jan. 8 blog post, Gosling said, "I've never been real happy with debates
about language features. I'd much rather implement them and try them out."
Though some took this to mean that Gosling did not like any debate on the
subject, he clarified himself by explaining that he did not approve of
debate when it was separated from "experiment and data," and that KSL will
provide this type of scientific foundation for debating features.
[ 0,1759,2081936,00.asp ]
( eWeek (01/15/07) Vol. 24, No. 2, P. 16; Taft, Darryl K.)
David Cumbow (CS320 last spring) sent me a link
[ http://www.codeide.com/ ]
to a web site that lets you input a piece of cade and compile/run it!
Don't know how good it is.... but what a cool idea.
[ 3652176 ]
[ modula2_modula3.html;jsessionid=YCQUJCWU350MWQSNDLRCKH0CJUNN2JVN ]
(Modula-2, Modula-3, Whatever. )
[ lets_hear_for_t.html ]
(Let's hear it for Ada)
CSci320 is about different languages. New languages are
being created all the time. And yesterday's "great" language
starts to slide into museum status...
[ 0,1895,2065392,00.asp ]
I'll be starting renovating the cs320 web site ready for the Winter Quarter
2007 "Real Soon Now".
From David Cumbow -- a 320 alumni:
Thought you might like this for your 320 class. Also for our Senior Seminar so people can know what is out there and is popular...
[ index.htm?tiobe_index ]