If we ignore the fact that my other car is a cdr, and unless I just
don't get what you're talking about, map is a well known and widely
spread concept in programming <
http://en.wikipedia.org/wiki/Map_(higher-order_function) >, and it has
other several meanings. Words are not a 1:1 mapping.
I think the guys at Gemstone / Maglev would probably have an objection here :)
--
Damien Pollet
type less, do more [ | ] http://people.untyped.org/damien.pollet
--
Consider asking HOWTO questions at Stack Overflow: http://stackoverflow.com/tags/dart
I stopped in the middle of this looooooong post.
(Btw Andrei, full quote ... ? :-( )
A pity this was not published on a blog, as it would be easier to further elaborate this thoughts, beyond Dart's context btw, as this is no Dart specific thing, I assume.
A blog post would be a better tool for web philosophers.
Am 18.03.2013 01:03 schrieb "Andrei Mouravski" <amour...@google.com>:
> and I hate philosophy.
A pity again.
> So I'm just going to provide a few helpful links
No link to a Dart semantic-web lib?
Pehaps that is all he wants... :-/
> and hope that you elaborate on your points with concrete examples of what you want,
Yes! But perhaps not here...?
> and what we can do to get there.
The ephasis is on _we_. Say: What can _Dart_ do, regarding its committed purpose, goals and current direction of development.
(Seeing the game oriented low-level performance related thread over there).
One thought that crossed my mind when I read the post was: Well, the FP world with its upcoming concepts of monads and arrows a.s.o. has to offer something. Abstract syntactic constructs like comprehensions or LINQ may be necessary.
But this all seems to be in the realm of R&D
I'm absolutely sure that I didn't understand you, but I'm gonna answer anyway, providing some sort of disagreement as a food for thought.
> I can hardly think of an application that's not data-centric.
In the same sense, every application is a compiler -- it takes input, does some transformations and produces output. See the pattern? Start with too generic claims and you will end nowhere.
> Object Orientation gives you a plus, Class Inheritance, which in my opinion is another unavoidable concept.
Inheritance is evil. And by the way, there are object oriented languages that have no classes at all.
> You want to be able to manipulate data in the most intuitive and nonetheless complete and intricate ways possible.
Complete and intricate data manipulation... that's called programming.
> Hmm... a database engine is designed to run underneath a computer program, but there is no real seamless integration.
Not necessarily. Check out MUMPS -- it's an ancient language that has one feature that no other language managed to steal yet. It's called global variables, and it means _persistent_ variables. Variables that start with ^ are simply stored on disk in a highly optimized sparse multi-dimensional hash table something. Some people call it "universal NoSQL", because it can accommodate all data models (key-value, tables, documents, graphs, what have you), and I honestly believe that this is the right way we should handle data.
> Why do we still have to OPEN or CONNECT TO a database?
Because it's costly. Well, at least with SQL and other "modern" databases.
> Do we have to open a file or folder to start using them?
Yes.
> What I'm saying is the structure of data and its store format could be a well written standard.
Did we really reached that level of knowledge? Look at SQL, it's supposedly The Standard Way of dealing with data, yet it's ridiculously bad on so many levels.
> And the programming language, which is one the cornerstone of those tools, today it has little or nothing to do with the data we want to store.
Yeah, that's just stupid. We need to copy the MUMPS model.
> In other words, copy/paste a good amount of stuff, so to speak. Let me say what I think of copy/pase: is TECHNOLOGY OVERHEAD. Every time you have to do that a lot, chances are there's something the technology is not doing the best for you.
Google for "worse is better". That's how we ended up with things like Unix, C, SQL etc.
> I think Dart can be great, but no, it was not aimed to go that further on innovation
That's exactly right. Dart spent its "innovation budget" on solving some problems of current mainstream OO languages, not on saving the world. If it went that far, it would be very unlikely that it got popular.
> Here is one of my fundamental questions: Why do we still store information in files?
We don't, we use SQL. And the reason is ... because the world is crazy. There are people using Caché or GT.M (the two most popular implementations of MUMPS today), but vast majority went with SQL. Or MongoDB, which itself is a major improvement, but it's not good enough.
> In turns a database runs on top of a file system.
Not necessarily, some databases can run on top of raw disk partitions. But it doesn't really matter. You are all into abstraction, right, and then you go deep into implementation details. Data need to be stored somewhere.
> If we do a SUBTLE SWITCH, instead of data on top of file systems, we do files (or blobs, if any) on top of data systems, (and by data system I mean very solid technology that can handle the concept of abstraction pretty well)
And what exactly is the difference?
> things are going to converge towards a world where true data is widely used and comprehended in the same way.
Things are not going to converge. The world will always be a mess. Of course you can (try to) build an abstraction on top of that (like Yahoo Pipes, anyone?), but you can only go so far.
> The web is based on standards right?
Standards that are largely written by people that don't understands developers' needs. Which brings us to...
> If you think about it, most people are still seeing information the same way we always did, back to DOS times (that's how further I can go given my age, anyways). I might be dreaming more than John Lennon and Martin Luther King combined, but I still think that the change is most desirable. Sort of IT 2.0, if you will. It would not be in principle a dramatical game changer for websites itself (HTTP and HTML will stand the same), it would make it much much easier to access, manipulate, understand data and develop new tools, all across the web, and that indeed can be a game changer.
XHTML 2, semantic web and all that stuff. Never heard of that? That's because noone was interested.
LT
Such definition would necessarily be circular.
> does the Dart language specification look circular to you?It has fully defined semantics in the same sense as phone book has fully defined semantics.What's the semantics of the notion of "semantics" you use? :-)
--
This is one of those things that stick to your mind, and I urgently needed to know what people on this forum think, before it grows and my life itself turns too philosophical.Seeing the comments so far, my current feeling is that I haven't made my point, and I would need to elaborate A LOT more.
Am 18.03.2013 15:14 schrieb "Ladislav Thon" <lad...@gmail.com>:
>>
>> Such definition would necessarily be circular.
>
>
> If it would, we would never have programming languages with fully defined semantics.
Hmm AFAIU he was talking about something like the meta-levels of MDA. There you have a MOF level where MOF is defined in its own terms coming to a circle in meta-meta.
If you have found a solution that suits every possible case perfectly for everyone, I bet we would all love to know about it and have it integrated in Dart.
For now, you are just critizising Dart for not offering this miracle solution which is unknown to the field of computer science.
Is there any mechanism of dynamic code generation in dart?E.g. it's easy to produce dart source and put it in a file, but loading this file would be a problem: import is a static statement.
Any way around it?
>>Oh, but if you are fine with dynamically generated code that runs in new isolate, then you can have that, you can spawn an isolate that will run code loaded from given URI.Hurrah!!!
Hopefully, URI includes also "data:" URI? Or no such luck?
--
Wow, it is nice to see someone who understood the issue, you should post this to Google+
My understanding of data evolved a bit since the original post, in general, it will be nice if we have Standard Data Processing Instructions (SDPI), not just SQL, well SQL does a lot of processing, and some people hate it and they started the NOSQL that also does a lot of processing too :-)
And it is not required to be understood the same at every level, I mean the programming language can have a basic understanding of SDPI and a database server can have a complex understanding of it, a file system can understand it a bit differently there as well, etc.
SDPI will eventually collide with principals like the data must be separate from the code, I don’t know why people put such unrealistic things and they complain that there is no AI yet, or why is it hard to do voice recognition or image recognition; well the human brain is data and instructions together, the data evolves the instructions, and the instructions evolve the data, even the hardware itself is affected by the data and instructions.
My biggest problem the past many years is the lack of innovation, people say that to work with data in a programming language you need a database, but to work with memory you don’t, well that is not true, the memory management module is a kind of a database as well, a very simple one.
Software developers just invented too many limitations in the last two decades, such as the separation of data and code, the many useless layers of abstracting and separating things, and the security limitations, things are designed in a way that instead of using cars everyone must have a tank :-)
To whoever is designing languages and working with data, look at the nature, because it shows what is possible, the human eye is an object, it looks separate from the nerve, and yet the nerve is very integrated with the eye, the nerve is somehow separate from the brain and still very integrated with the brain, the blood moved freely between them, etc.
Every object knows a lot about many other objects, and every object brakes the separation rules when needed to achieve the total goal.
Good luck
I see this topic took place a considerable amount of time ago... so sorry for tackle it now again, but I just found it, and thought it is very interesting. Data is in my opinion an unseen and important issue of today's IT. It's something I tried to sort out in my head many times. I think I see what GT was trying to go. I'm going to expose some abstracts (and maybe not that abstract) thoughts here, so be warned!I can hardly think of an application that's not data-centric. And the way in which data is structured is pretty much the same always... which is ABSTRACTION. Even if you call it tables with rows and columns, or you call it classes or you call it object stores... to me is similar, the point is, you are going to end up having a collections of instances with a common set of properties. Object Orientation gives you a plus, Class Inheritance, which in my opinion is another unavoidable concept. When we go to eBay, we are accessing a database of bids, in YouTube you will find a collection of videos, IMDB, needless to say, movies information, and so on and so forth. And what you are going to pretty much be willing to do with them, is listing, adding, changing, filtering, sorting, cross reference them, you want to go statistical on data, you want to do data mining, etc, etc. You want to be able to manipulate data in the most intuitive and nonetheless complete and intricate ways possible. Seeing so much in common between application needs, it's striking that there still has to be one ad-hoc very complicated and costly implementation for each data set that needs to be represented and manipulated out there, no widely common way on how to do that. And then maintain, right?So what I'm saying here? Create another SQL? Another database engine? Hmm... a database engine is designed to run underneath a computer program, but there is no real seamless integration. Why do we still have to OPEN or CONNECT TO a database? Do we have to open a file or folder to start using them? Do we have to open a variable? (of course there are differences, a variable is ephemeral and runs in memory, data on db has constraints and simultaneous access requirements, you need to trigger transactions, but the same principle of data structure applies, right?) When programming over a database, there are many other things that make it obvious that you are dealing with something external to the programming language, it's a database API after all, not the programming language itself. What I'm saying is the structure of data and its store format could be a well written standard. How we access, and manipulate it, can be a set of tools running on top of it... that can't exist without the former. And the programming language, which is one the cornerstone of those tools, today it has little or nothing to do with the data we want to store. Maybe because just the programming language alone, wouldn't close the deal, as I will expand later.I'm starting to use Dart, because I'm not that experienced on web developing and I'm turned to think it is going to make it easier for me. What I want to do in principle is a price list (simple right?), of course that's the first milestone. You can see very easily that my application IS ALMOST the data... or showing it up, anyways. So first off, I need to know HTML and CSS for the interface. Say I'm not very enthusiast about Javascript, so I go learn Dart for the interface dynamics. In my case I need offline access, so I added IndexedDB to the pile. Then I need to put the information on a server. Dart is still green on that regards, that I know of. I can either go with PostgreSQL, or MongoDB or MySQL API's that I've seen out there, or use PHP and MySQL, or another combination. I'm sure I will end up searching the Internet for examples, templates, adding things to my code based on other approaches. In other words, copy/paste a good amount of stuff, so to speak. Let me say what I think of copy/pase: is TECHNOLOGY OVERHEAD. Every time you have to do that a lot, chances are there's something the technology is not doing the best for you. And going back to my little project... you have HTML, CSS, Dart, IndexedDB, PHP, MySQL, and that's just the coding part, nothing about the infrastructure underneath that... needless to say, it feels like too much effort for a humble price list. I think Dart can be great, but no, it was not aimed to go that further on innovation, in my opinion, and you will probably feel disappointed if you think it as such. In one hand, I would like to see a ground breaking change with this regards, someday. In the other hand, if I'm going to invest time (maybe years) on this, then it better last!! I'm IT engineer and I know how it is to waste a lot of time of my life on obsolete technologies.Here is one of my fundamental questions: Why do we still store information in files? Is it always has to be that encapsulated and 'mysterious'? It sounds reasonable for a sound, a video, or an image which cannot be structured in terms of objects or tables with rows right? Those are analogical data, it can only be understood by a decoder and available to human sense through the specific physical interface, so you have a beginning, a length, and everything in between is somebody else's business... so this is a FILE or BLOB, whatever you want to call it. Then you will have the edge cases, the unconsidered, data that just wont fit the standard, a compiled binary, some sort of encrypted information, or simply a document with its proprietary structure. So we create our ad-hoc data store, a consecutive stream of bits, which is only understood by our application... a FILE or BLOB again. And to be more specific, I would say just a BLOB. The difference between a file and a blob is that the blob is on top of a database. In turns a database runs on top of a file system. So a database is essentially a file, used by the db engine (put in terms of what most people can understand). But anyways, that's the wrong way for all the rest, MOST INFORMATION. If we do a SUBTLE SWITCH, instead of data on top of file systems, we do files (or blobs, if any) on top of data systems, (and by data system I mean very solid technology that can handle the concept of abstraction pretty well) things are going to converge towards a world where true data is widely used and comprehended in the same way. And that's what languages are about.** Sorry for this is getting waaay too long for an email, but I haven't completed my point yet.Everything that's not analogical in nature and not an edge case, it can be represented using abstractions and instances (classes and objects, tables and rows, whatever you want to call it). That's the rule, and with little effort you can see it everywhere we browse on the web (and the informational world in general). Now, the average dude might know nothing about IT, but he will sure at least know what is a file, an extension and a folder. For them, that is IT fundamentals. WHAT IF, INSTEAD, they know what are classes, objects and properties (or call it another way if you are not fond of OOP, but abstraction is what is). This is eventually what's going to be taught in schools, because is the atomic structure of information, no doubt about it. What if in addition to the ability to make ambiguous search with different terms in our favorite search engine, we are also given with the possibility to do specific data oriented queries, sort of SQL like (maybe more user-friendly), directly from our Internet browser. Wouldn't it be nice that Chrome or Firefox in addition to be the language virtual machine and HTML renderer, etc, could also be a query interpreter that shows us data in the most fine-grained way possible and let us manipulate it (with all the security vicissitudes of course)? Browsers already include many tools for the local stored data, anyways.Take this example, we are very picky with a color so we want to look for blue smartphones on the web. Do we really want the websites relevant to the term "blue smartphones"? No... what we truthfully want too see is the list of BLUE SMARTPHONES, we want the actual thing!!Something likedata://ebay.com smarphone: color = blueOr you want a list of videos in which appears Jim Carrey, but you want to make sure is not that longdata://youtube.com video: (involved = 'Jim Carrey', duration < 5)** These are hypothetical URL's showing a new imaginary "data" protocol, and imaginary query language.Maybe the examples are not the greatest. The information can be or not that well structured, but for the sake of a getting matches it will better be. Most probably even the user will contribute to that end. It can seem to you that you don't need that level of structure on all your searches and data, or even looks silly now.... Let me tell you, it is very unlikely that you feel the necessity of something that doesn't even exist yet. Some years ago a friend of mine, was convinced that he did not need Internet on his phone. I told him, of course you don't need, you don't even know what's going to do for you. You can imagine how dependent is of his full-internet-featured smartphone now. Point is, once you achieve that level of tools, there's no going back.In addition you would be able to share URL's which holds a collection of things, data. First you might think of, are FTP URL's, which have some analogies, although is not by far a fair comparison. We want to manipulate data, not files. Either when programming or generally speaking, that's what we ultimately want to do. From the end user perspective we would still have access to the webpage, but say I'm tired of having to access data the way I've been imposed. I have a shortcut, I can skip that and see the data directly, the way I would be used to, because I could do it everywhere else the same way. Of course some webs already offer powerful ad-hoc tools to make refined searches, but is no as nearly good as it could be if it were a standard, besides you can't re-use that knowledge, it's just for that webpage, that domain. In the other hand, then you want to do it for your own data-centric application, right? It is going to be a struggle, to say the least.Imagine something impossible now. Say we not only standardize data fundamentals, we start standardizing classes as well, 'federated classes' if you will. I'm giving this very unlikely but I think illustrative example. You have contacts from Facebook and contacts from Google with the same footprint. You list them all together likedata://google.com contact, facebook.com contactThe system will make you notice the domain they come from, plus all the properties/columns they have in common, you can sort them the way you want (given the correct indexation is set), see duplicated information and stuff. Even if they don't have the same structure, the system would show you the properties from an upper class they descend from. Every instance have a creation date, user, type, etc, at least. See, when you take it to the Object level, it resembles a file system.I will go a bit borderline. Imagine if the standard go that spread, so we get to see cross features on HTML. How powerful would it be to do<table src="data://evernote.com note" rows="20"><colgroup><col property="title"><col property="snippet"></colgroup><tr><th>Title</th><th>Snippet</th></tr></table>** 'src', 'property' and 'rows' are imaginary.In this example we have a list of notes of our Evernote notebook embed on HTML. (one way or another everything can appear on screen, even a sound) This way, you can embed data from a database on any HTML interface, that simply, no code.Truth is, options are always good, for instance, skipping the presentation layer (interface, HTML) is to me, very appealing in more than one way. And this is also mostly desirable on a business environment, where the tools and applications were developed in a very sucky way, many times due to that sense of urgency and only-needs-to-work philosophy. Or take it to the basic, every Tom, Dick and Harry that simply want to make an inventory (something very trivial), today they need an spreadsheet, or maybe Microsoft Access, if they are pro's. And from the developer point of view, it would simplify things, big time. Developing learning curve, would be shorter, because you already know largely how the "data layer" works. My off-line access issue on my website would possibly have a more straight forward approach, I don't need 2 different database technologies, I would just cache objects, classes, etc, the same way I can today cache files on a web application (which by the way, is fairly easy to do, but not as useful as one might think, in my opinion). Same way as files are files, whether on the server or on my PC, objects would be objects equally, assuming is a standard. Other things that encompasses a database, will start to be closer to normal people. I'm not saying everyone would know what an index and a unique key is, but much more people would, for sure. Most people knows that a building is made of bricks, but the same does not apply to IT, and I think is because we still have not exposed clearly which is the fundamental brick of information (again, abstraction). If more people is closer, technology evolves faster.The web is based on standards right? HTML might not be that 'state of the art' in comparison to other technologies, but if you need to do an interface, that's what most probably you are going to use (plus CSS, plus Javascript... or Dart ;) ). And it does a good job, is easy and compatible. And is surviving everything else, period. In my opinion the current open data solutions out there go half the way down, being too generous, but mainly they are blind on one goal, which is to make data somewhat easy for normal people. I think once we do the switch, we are going to see back in time and say 'Hey, where the hell was the data layer before??'If you think about it, most people are still seeing information the same way we always did, back to DOS times (that's how further I can go given my age, anyways). I might be dreaming more than John Lennon and Martin Luther King combined, but I still think that the change is most desirable. Sort of IT 2.0, if you will. It would not be in principle a dramatical game changer for websites itself (HTTP and HTML will stand the same), it would make it much much easier to access, manipulate, understand data and develop new tools, all across the web, and that indeed can be a game changer. So is not just a programming language, is also a data server and engine, a standard protocol that runs on top of TCP (just like SMTP, HTTP, FTP), a standard structure for the data, a couple of components embed on the browser, and possibly more. Unless someone create all powerful open tools in a suite that support that new perspective, that's is not going to happen. I would eagerly develop applications in a platform like this. And that's what is about, making it appealing to developers to create a complete full-featured application from the ground up. So it has to fit economically in individuals and companies lives, with the risk that involves such a long shot approach.
Software developers just invented too many limitations in the last two decades, such as the separation of data and code, the many useless layers of abstracting and separating things, and the security limitations, things are designed in a way that instead of using cars everyone must have a tank :-)