The Artima Developer Community
Sponsored Link

Weblogs Forum
Software Development Has Stalled

164 replies on 11 pages. Most recent reply: Mar 28, 2010 1:20 PM by Florin Jurcovici

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 164 replies on 11 pages [ « | 1 ... 3 4 5 6 7 8 9 10 11 | » ]
Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: Software Development Has Stalled Posted: Feb 7, 2010 8:01 AM
Reply to this message Reply
Advertisement
> I'm not sure how you achieve the above. I can't picture
> it.

> Maybe this is too high a level for my poor little brain.
> There are some technical details I can see easily being
> decoupled (e.g. memory management, sort algorithms
> assuming you don't need one highly optimized, etc.) but at
> some point rubber needs to hit the road.

Here is how I picture it:

1) a common data language allows information to be entered and retrieved in to and out of computer memory.

The computer memory here refers to the memory abstraction as defined by the average Joe, i.e. as if the computer is a human and remembers things. This mostly means automatic persistence.

The data language will allow information to be entered and retrieved. The user will not have to think in terms of tables, indexes, rows, columns, storage, backup, updates, inserts and deletes. The computer should do these tasks automatically.

Information should be like putty, i.e. it will enter the system and exist in the system without following a formal schema; it will be the computer that will discover the possible schemas and relationships between data.

2) a programming language devoid completely of technical details:

a) no memory management (including not managing of garbage-collection leaks)
b) automatic persistence
c) real 'numbers' instead of integers/floats.
d) real 'text' instead of strings.
e) one kind of collection optimized at run-time according to the way its being used; no arrays/maps/sets/hash tables/lists etc. It will be the computer that should decide the actual internal form of data.
f) automatic distribution. The network 'is there' implicitly.

3) a run-time system that is always live and ready to serve programs and data.

4) no 'programs' in the sense of 'here is an .exe, run it' or 'this is the URL, enter it in the browser'. Programs should be replaced with functions, and functions should be data.

5) a run-time system that always allows debugging from any point of the network. Actually, not debugging, but re-programming on the fly.

If all the above remind you of LISP, then it is because LISP got many things right.

Dick Ford

Posts: 149
Nickname: roybatty
Registered: Sep, 2003

Re: Software Development Has Stalled (slightly OT) Posted: Feb 7, 2010 1:35 PM
Reply to this message Reply
> NoSql = Palin
> Sql = Obama
> Lisp = end of all innovations in programming
> Future = Pascal i.e. separating code from data
>
> Thanks to everyone for the inspiring discussion and those
> take away truths.

I'll fix that for you

VB6 - Bush
GW-BASIC - Obama
Palin - probably back to VB6

Rinie Kervel

Posts: 26
Nickname: rinie
Registered: Oct, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 3:00 AM
Reply to this message Reply
> Here is how I picture it:
>
> 1) a common data language allows information to be entered
> and retrieved in to and out of computer memory.
JSON as in CouchDB or MongoDB?
Accessible using browseable REST.

YQL or dbslayer show that JSON can lead to much more compact/readable data than serialized objects.
node.js shows how to do I/O in a understandable, compact way.

So my 2 cents are: we need a compact, mostly declarative way of 'scripting' programs and systems. Not try to model everything as (bottom up) objects: a spreadsheet page is not a collection of cell-objects, a sql row is not a collection of column objects.

We should reuse existing systems, if they are good enough:
- Gears uses sqlite, not write another Derby.
- Use http and TCP/IP text I/O.
- data typically lives longer than you code, so enable data optimization instead of serialisation (.docx is a zip of XMl data much more compact and processable than the original doc formats).
- Separate user interface from datastore (Why do outlook or iTunes feel less responsive than gmail?). Proper separation means you can switch the frontend without altering the backend and vice-versa (AJAX should be at least 3 independant parts: frontend talking restlike json over http to middleware talking rest like json over http to data service)

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 6:36 AM
Reply to this message Reply
> > Here is how I picture it:
> >
> > 1) a common data language allows information to be
> entered
> > and retrieved in to and out of computer memory.
> JSON as in CouchDB or MongoDB?
> Accessible using browseable REST.
>
> YQL or dbslayer show that JSON can lead to much more
> compact/readable data than serialized objects.
> node.js shows how to do I/O in a understandable, compact
> way.
>
> So my 2 cents are: we need a compact, mostly declarative
> way of 'scripting' programs and systems. Not try to model
> everything as (bottom up) objects: a spreadsheet page is
> not a collection of cell-objects, a sql row is not a
> collection of column objects.

Very true.

>
> We should reuse existing systems, if they are good
> enough:
> - Gears uses sqlite, not write another Derby.
> - Use http and TCP/IP text I/O.
> - data typically lives longer than you code, so enable
> data optimization instead of serialisation (.docx is a zip
> of XMl data much more compact and processable than the
> original doc formats).
> - Separate user interface from datastore (Why do outlook
> or iTunes feel less responsive than gmail?). Proper
> separation means you can switch the frontend without
> altering the backend and vice-versa (AJAX should be at
> least 3 independant parts: frontend talking restlike json
> over http to middleware talking rest like json over http
> to data service)

Or there could be no front end / back end at all. Every computer should be a node in the network ready to service data (data including code as well, so as that apps are easily upgradeable).

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 9:09 AM
Reply to this message Reply
> So my 2 cents are: we need a compact, mostly declarative
> way of 'scripting' programs and systems. Not try to model
> everything as (bottom up) objects: a spreadsheet page is
> not a collection of cell-objects, a sql row is not a
> collection of column objects.

What alternative are you proposing? I think it's going to be difficult for anyone to recreate the at of programming in terms of what should not be.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 10:11 AM
Reply to this message Reply
> > So my 2 cents are: we need a compact, mostly
> declarative
> > way of 'scripting' programs and systems. Not try to
> model
> > everything as (bottom up) objects: a spreadsheet page
> is
> > not a collection of cell-objects, a sql row is not a
> > collection of column objects.
>
> What alternative are you proposing? I think it's going to
> be difficult for anyone to recreate the at of programming
> in terms of what should not be.

It might be considered a step back, but the way LISP deals with data is the most flexible, I think. I.e. the type belongs to the value, not to the variable.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 12:06 PM
Reply to this message Reply
> It might be considered a step back, but the way LISP deals
> with data is the most flexible, I think. I.e. the type
> belongs to the value, not to the variable.

I'm no LISP expert but I'm pretty sure that lists are a bottom up composition. I don't see what your response has to do with the question I asked.

Merriodoc Brandybuck

Posts: 225
Nickname: brandybuck
Registered: Mar, 2003

Re: Software Development Has Stalled Posted: Feb 9, 2010 1:01 PM
Reply to this message Reply
LISP ( or Lisp or lisp or whatever todays' agreed upon spelling is) is all knowing and all powerful and can do everything and all other programming languages are way behind and still trying to catch up to technology that is about half a century old. People that get lIsP are brilliant and those that don't are ignorant and should have their fingers broken before they are allowed near a text editor.

There, does that summarize the conversation? Can we move on? Maybe talk about perl vs. python or emacs vs. vi??

I know this comes off as snarky and I would apologize if I were sorry in any way.

I propose we settle this the old fashioned way, by getting Bjarne Stroustrup and Paul Graham together. We can have our own version of Thunderdome. Two geek enter, one geek leave. Maybe we can get Tina Turner to emcee the event.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 1:19 PM
Reply to this message Reply
> I propose we settle this the old fashioned way, by getting
> Bjarne Stroustrup and Paul Graham together. We can have
> our own version of Thunderdome. Two geek enter, one geek
> leave. Maybe we can get Tina Turner to emcee the event.

Throw in Alan Kay and you're on!

robert young

Posts: 361
Nickname: funbunny
Registered: Sep, 2003

Re: Software Development Has Stalled Posted: Feb 9, 2010 2:18 PM
Reply to this message Reply
> a sql row is not a collection of column objects.

Of course it is. If you believe otherwise, what is it?

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 6:49 PM
Reply to this message Reply
> > It might be considered a step back, but the way LISP
> deals
> > with data is the most flexible, I think. I.e. the type
> > belongs to the value, not to the variable.
>
> I'm no LISP expert but I'm pretty sure that lists are a
> bottom up composition. I don't see what your response has
> to do with the question I asked.

I believe that Kervel meant that the strict typing of programs prohibits the scriptability of systems. In other words, if you model a spreadsheet as a collection of cells, you must refer to it as of that type at all times. You can not manage it with some generic code.

In order to script all programs and systems, all data units must be fundamentally accessible through the same interface - and the LISP data cell can easily play that role.

Achilleas Margaritis

Posts: 674
Nickname: achilleas
Registered: Feb, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 6:51 PM
Reply to this message Reply
> > It might be considered a step back, but the way LISP
> deals
> > with data is the most flexible, I think. I.e. the type
> > belongs to the value, not to the variable.
>
> I'm no LISP expert but I'm pretty sure that lists are a
> bottom up composition. I don't see what your response has
> to do with the question I asked.

In other words, we need a common language between programs and systems.

robert young

Posts: 361
Nickname: funbunny
Registered: Sep, 2003

Re: Software Development Has Stalled Posted: Feb 9, 2010 8:33 PM
Reply to this message Reply
> In other words, we need a common language between programs
> and systems.

C

Have a fun time.

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Software Development Has Stalled Posted: Feb 9, 2010 9:12 PM
Reply to this message Reply
> I believe that Kervel meant that the strict typing of
> programs prohibits the scriptability of systems. In other
> words, if you model a spreadsheet as a collection of
> cells, you must refer to it as of that type at all times.
> You can not manage it with some generic code.

OK. I don't think that's true but I think I follow what you are saying.

Rinie Kervel

Posts: 26
Nickname: rinie
Registered: Oct, 2005

Re: Software Development Has Stalled Posted: Feb 10, 2010 2:50 AM
Reply to this message Reply
> > not a collection of cell-objects, a sql row is not a
> > collection of column objects.
>
> What alternative are you proposing? I think it's going to
> be difficult for anyone to recreate the at of programming
> in terms of what should not be.
I am still playing around to find alternatives.
In JSON you can look at the data and see how you can remove the overhead of repeating rows by splitting the data in a header/rows construction.
E.g. dbslayer (http://code.nytimes.com/projects/dbslayer) does:
{"RESULT" : {"TYPES" : ["MYSQL_TYPE_LONG" , "MYSQL_TYPE_STRING" , "MYSQL_TYPE_STRING" , "MYSQL_TYPE_STRING" , "MYSQL_TYPE_LONG"] ,
"HEADER" : ["ID" , "Name" , "CountryCode" , "District" , "Population"] ,
"ROWS" : [[3793 , "New York" , "USA" , "New York" , 8008278] ,
[3794 , "Los Angeles" , "USA" , "California" , 3694820] ,

For multiple types of rows (for the tree people, and not strict single type nodes): You can add a level tot the TYPES/HEADER arrays and add a 'nodeKind' index to the rows.

This leads me to examine at least 3 levels of constructs in programs:
- Primitive data and possible procedural code.
- Objects/Components that make sense as individual encapsulated 'things' (GUI/DOM is the way)
- Collections/Dictionaries that manage data. E.g. the dbslayer approach. So you have some kind of dataset where you split the pure data with some header/nodekind manager an nice iterators. The interface to the nodes should be like accessing an individual node object but the storage should not.

An example of the collections approach would be 'strings considered harmfull'. XML/Java like 16 bit characters and strings to consist of those 16 bit character elements.
For loose strings it does not matter which representation you choose: small number of data, so overhead can be ignored. For 1 GB of ASCII or ISO-8859-1 you waste 50%.
Why not store all strings in various dictonaries.
Determine the properties per dictionary and allocate data per dictionary. (Properties e.g. encoding, charactersize, zero terminated, memory, hashed, namespaces/scoping)

This way you build 4 dictionaries (memory, 8, 16 and 32 bit). Choose a default dictionary for loose strings and have efficiency without excluding any encoding.
Of course you can have mixed encodings but searching for ã in an ASCII encoding will result in a hit. So you need some optimisations (convert search string to dictionary encoding versus convert dictornary encoding to search string encoding).

So code needs primitives and collection management besides objects. Data needs to be filtered/sorted/queried before fetching (not foreach but foreSome) and I/O should be async/evented.

Flat View: This topic has 164 replies on 11 pages [ « | 3  4  5  6  7  8  9  10  11 | » ]
Topic: Heron Tackles the WideFinder Challenge Previous Topic   Next Topic Topic: Setting Multiple Inheritance Straight


Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us