-
Language-oriented Programming and Language Workbenches (64 messages)
- Posted by: Joseph Ottinger
- Posted on: August 23 2007 12:46 EDT
"Language-oriented Programming and Language Workbenches: Shifting Paradigms" is a presentation given by Neal Ford and Martin Fowler on the growing appeal and application of domain-specific languages, and a little on what they look like. DSLs, surprisingly, take forms beyond what one might imagine: Rails, for example, is a DSL. So are many libraries for Java, although calling some of them "DSLs" might be a stretch - but thinking of them in that way can help streamline their design. Altogether, this is a great presentation to watch.Threaded Messages (64)
- Re: Language-oriented Programming and Language Workbenches by Paul Beckford on August 23 2007 15:04 EDT
- Slides by Justin Forder on August 25 2007 09:29 EDT
- Re: Language-oriented Programming and Language Workbenches by Konstantin Ignatyev on August 23 2007 15:22 EDT
- Re: Language-oriented Programming and Language Workbenches by James Watson on August 23 2007 18:00 EDT
- Re: Language-oriented Programming and Language Workbenches by Michael Neale on August 23 2007 19:34 EDT
-
does MF get paid by the buzzword? by Dhanji Prasanna on August 23 2007 10:13 EDT
-
Coding by Abdul Samad Karar on September 04 2012 07:10 EDT
- depends by Darin Sand on September 17 2012 05:29 EDT
-
Coding by Abdul Samad Karar on September 04 2012 07:10 EDT
-
does MF get paid by the buzzword? by Dhanji Prasanna on August 23 2007 10:13 EDT
- Interesting follow on reading by Derek Alexander on August 24 2007 06:18 EDT
- Re: Language-oriented Programming and Language Workbenches by Daniel Manaan on May 20 2010 23:36 EDT
- Re: Language-oriented Programming and Language Workbenches by Michael Neale on August 23 2007 19:34 EDT
- Re: Language-oriented Programming and Language Workbenches by Thiago Concei????o on August 23 2007 19:11 EDT
- Re: Language-oriented Programming and Language Workbenches by Paul Beckford on August 24 2007 01:58 EDT
-
Re: Language-oriented Programming and Language Workbenches by Thiago Concei????o on August 24 2007 03:54 EDT
-
Re: Language-oriented Programming and Language Workbenches by Paul Beckford on August 24 2007 06:46 EDT
-
Re: Language-oriented Programming and Language Workbenches by Thiago Concei????o on August 24 2007 09:07 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 09:24 EDT
-
Re: Language-oriented Programming and Language Workbenches by peter lin on August 24 2007 10:35 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 10:59 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 24 2007 11:43 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 11:50 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 24 2007 12:10 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 12:26 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 24 2007 12:54 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 01:31 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 27 2007 09:40 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 27 2007 03:49 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 27 2007 04:05 EDT
- Re: Language-oriented Programming and Language Workbenches by James Watson on August 27 2007 04:06 EDT
- Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 27 2007 04:13 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 27 2007 04:05 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 27 2007 03:49 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 27 2007 09:40 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 01:31 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 24 2007 12:54 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 12:26 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 24 2007 12:10 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 11:50 EDT
-
Re: Language-oriented Programming and Language Workbenches by Bill Pyne on August 24 2007 11:43 EDT
-
Re: Language-oriented Programming and Language Workbenches by Brian Zhou on August 27 2007 01:12 EDT
- Re: Language-oriented Programming and Language Workbenches by Mark Proctor on September 01 2007 12:13 EDT
- Re: Language-oriented Programming and Language Workbenches by Stevy Jober on January 07 2011 07:48 EST
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 10:59 EDT
- Re: Language-oriented Programming and Language Workbenches by Thiago Concei????o on August 26 2007 10:39 EDT
-
Re: Language-oriented Programming and Language Workbenches by peter lin on August 24 2007 10:35 EDT
-
Re: Language-oriented Programming and Language Workbenches by James Watson on August 24 2007 09:24 EDT
-
Re: Language-oriented Programming and Language Workbenches by Thiago Concei????o on August 24 2007 09:07 EDT
-
Re: Language-oriented Programming and Language Workbenches by Paul Beckford on August 24 2007 06:46 EDT
- Re: Language-oriented Programming and Language Workbenches by Brian Zhou on August 27 2007 12:49 EDT
-
Re: Language-oriented Programming and Language Workbenches by Thiago Concei????o on August 24 2007 03:54 EDT
- Re: Language-oriented Programming and Language Workbenches by Paul Beckford on August 24 2007 01:58 EDT
- Where is my Sanskrit lecturer !! by Ramesh Gajjela on August 25 2007 04:38 EDT
- Re: Where is my Sanskrit lecturer !! by Mark N on August 27 2007 09:02 EDT
- Doesn't anybody read the classics anymore? by Tracy Nelson on August 31 2007 15:29 EDT
- Re: Language-oriented Programming and Language Workbenches by Ke Jin on September 22 2007 13:04 EDT
- Everyone has different opinions by natalie smith on December 11 2009 18:04 EST
- DSL and OO by Yuri Fan on June 03 2010 14:49 EDT
- DCL and C+ by Yuri Fan on June 03 2010 15:02 EDT
- nice effort by niko niko on September 15 2010 06:57 EDT
- Jquerry? by Diane Loden on December 10 2010 02:38 EST
- Language-oriented Programming and Language Workbenches by Stevy Jober on January 07 2011 07:33 EST
- nIce post by mollika7842 dghgf on February 19 2011 00:23 EST
- Thanks by vipin raj on June 10 2012 07:05 EDT
- good view about programming by shimon boi on July 02 2012 05:22 EDT
- great by Apol san on July 10 2012 18:15 EDT
- Language-oriented Programming and Language Workbenches by saon islma on July 16 2012 15:27 EDT
- Language-oriented Programming and Language Workbenches by saon islma on July 16 2012 15:29 EDT
- gamis bahan kaos by prayoga pramanaditia on August 11 2012 10:21 EDT
- bahan bahan by prayoga pramanaditia on August 11 2012 10:24 EDT
- bahan bahan by prayoga pramanaditia on August 11 2012 10:26 EDT
- pistachio nutrition by spieker874 spieker874 on September 02 2012 13:52 EDT
- apartment mailbox by jhone jee on September 24 2012 08:14 EDT
- The concept of Language Oriented Programming by mike rogerson on October 08 2012 11:34 EDT
- thanks by akko nm on November 09 2012 07:45 EST
- This is a very inspiring post ! by Stefanus Ntep on November 10 2012 13:50 EST
- Programming and Language Workbenches by Rizki Yanuar on December 06 2012 05:46 EST
- obat penurun darah tinggi alami by prayoga pramanaditia on April 07 2013 01:02 EDT
- obat tradisional penyakit darah tinggi alami by prayoga pramanaditia on April 07 2013 01:05 EDT
- obat alami hipertensi alami by prayoga pramanaditia on April 07 2013 01:07 EDT
- obat herbal hipertensi alami by prayoga pramanaditia on April 07 2013 01:08 EDT
- obat herbal darah tinggi alam by prayoga pramanaditia on April 07 2013 01:09 EDT
-
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Paul Beckford
- Posted on: August 23 2007 15:04 EDT
- in response to Joseph Ottinger
Great presentation. It's a shame that we can't see the slides. Will the slides be on TSS sometime soon? Paul. -
Slides[ Go to top ]
- Posted by: Justin Forder
- Posted on: August 25 2007 09:29 EDT
- in response to Paul Beckford
You can find the slides here: http://www.nealford.com/downloads/conferences/Neal_Ford_Martin_Fowler-Language_Oriented_Programming-keynote.pdf -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Konstantin Ignatyev
- Posted on: August 23 2007 15:22 EDT
- in response to Joseph Ottinger
Halleluyah! Finally! after 30 years masses started to get the idea of literate programming http://en.wikipedia.org/wiki/Literate_programming Seriously - it makes a lot of sense: the bigger an application the more it "speaks" in terms of application abstractions and less in terms of basic constructs of generic programming language it uses. By the way I suggest using term DSLang (pronounced dee-slang ) for the concept because it does not collide with Telecom term DSL and also hints intent and meaning of the concept. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 23 2007 18:00 EDT
- in response to Joseph Ottinger
DSLs, surprisingly, take forms beyond what one might imagine: Rails, for example, is a DSL. So are many libraries for Java, although calling some of them "DSLs" might be a stretch
This feature of Ruby that accommodates DSL creation is looking more and more like a good enough reason to switch teams from Python to Ruby. As I understand it, Scala also has this (or a similar) feature. Perhaps this thread would be a good place to compile information about languages, tools, and experiences in creating DSLs. I've become very interested in this because I was asked recently 'what language should business logic be written in'. I couldn't really come up with an answer I felt good about. When I started reading the transcript for this, the answer was staring me in the face. I think maybe the right answer is a DSL. If the tools are there to prevent this from becoming a maintenance nightmare it might really be the best answer. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Michael Neale
- Posted on: August 23 2007 19:34 EDT
- in response to James Watson
We have based some of ideas of a "language workbench" (that Martin Fowler wrote about) some time ago in the Drools tooling. (Of course a rule language - by virtue of the fact it revolves around your data objects is kind of a DSL itself). We used a mix of Antlr, Eclipse tools (GEF, its text editing model) and such. There are text based DSLs, graphical (rule flow) and form based (guided editor). None of this is rocket science - but the term "DSL" has suddenly made things much more popular. Part of the idea was to create a "language workbench" http://blog.athico.com/2007/08/drools-features-and-screenshot-page.html We also made heavy use of Antlr3, which is getting easier and easier to use to create a language: http://blog.athico.com/search/label/ANTLR I also believe that IntelliJ were working on a Meta Programming system (but they have dropped it, a far as I know). -
does MF get paid by the buzzword?[ Go to top ]
- Posted by: Dhanji Prasanna
- Posted on: August 23 2007 22:13 EDT
- in response to Michael Neale
Sounds like Martin Fowler's found a new way to charge consulting fees. =P -
Coding[ Go to top ]
- Posted by: Abdul Samad Karar
- Posted on: September 04 2012 07:10 EDT
- in response to Dhanji Prasanna
is it easy to build a big applicatioin for any third party logistics ?
-
depends[ Go to top ]
- Posted by: Darin Sand
- Posted on: September 17 2012 05:29 EDT
- in response to Abdul Samad Karar
is it easy to build a big blog applicatioin for any third party logistics ?
Great question, and it depends... it is easy when you know what you are doing :)
-
Interesting follow on reading[ Go to top ]
- Posted by: Derek Alexander
- Posted on: August 24 2007 06:18 EDT
- in response to James Watson
Perhaps this thread would be a good place to compile information about languages, tools, and experiences in creating DSLs.I also found the presentation interesting. You may find this excellent paper from the JMock developers useful as additional reading: Evolving an Embedded Domain-Specific Language in Java -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Daniel Manaan
- Posted on: May 20 2010 23:36 EDT
- in response to James Watson
I mean when my Sanskrit lecturer said that Sanskrit is a better language for computing...we just laughed !! He may be too lazy to learn C or C++..!!
This DSL and its purpose and design matches most of what a Mantra stands...(Please Google to know what a mantra is).
The old Panini maharishi, wrote a grammar book on Sanskrit which cud be a superset to these DSLs and more abstracted languages..!!
I mean, when we go on abstracting and re-inventing or evolving programming languages, I think, we will end up in future with something very similar to a mantra AND we may not even need a physical computer to do computing, bcoz, programming language is at such a high-level abstraction !! Daniel -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Thiago Concei????o
- Posted on: August 23 2007 19:11 EDT
- in response to Joseph Ottinger
Why do people create new acronyms for old stuff? "Lisp is an horrific language to code in, with all those parentheses and stuff... confusing...". Hahahaha. Lisp is pretty logical, Ruby looks more like some Perl bastard child. I laughed not because of specific remarks, this is entirely subjective and you could find many different opinions about it, but because it was almost an excuse for some very high and unjustifiable hype for Ruby. What does Ruby have that Lisp didn't a long time ago? The coolest thing from Lisp are macros in my opinion. You can get your code really compact, but these days the hype is "closure". I am sure that some time in the future they will come up with some "Fuby" language that will have "macros" and will create a "Macro Oriented Programming". -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Paul Beckford
- Posted on: August 24 2007 01:58 EDT
- in response to Thiago Concei????o
Hi Thiago,I laughed not because of specific remarks, this is entirely subjective and you could find many different opinions about it, but because it was almost an excuse for some very high and unjustifiable hype for Ruby. What does Ruby have that Lisp didn't a long time ago?
Try using Ruby for a while (especially Rails)) and it grows on you. Believe me it's not just hype. Even the inconsistent grammar makes sense once you apply a few coding conventions (standards). Smalltalk use to be my favourite language, but after using Rails for sometime now, the DSLs in Rails are beginning to make me question whether Ruby is ultimately more productive. Matz has done everything in Ruby for a reason, based on practical feel (not conceptual elegance), and his approach works well once you get it. Paul. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Thiago Concei????o
- Posted on: August 24 2007 03:54 EDT
- in response to Paul Beckford
Try using Ruby for a while (especially Rails)) and it grows on you. Believe me it's not just hype. Even the inconsistent grammar makes sense once you apply a few coding conventions (standards).
This is ridiculous. Once I first learned Lisp I also thought it was strange, and gradually while I was coding in Java I thought "hey, if I only had macros I could make this code much smaller" and so on. The fact is that Ruby adds nothing to that, absolutely nothing new, nothing to what people used to do 30 years ago. And they came up with some "it is horrible to code in... they needed to come up with DSLs to escape from Lisp's horrible syntax...". What in the name of God is that!? Do they really know what they are talking about? I am not a hardcore Lisp programmer, but I understand that the very concepts involved in it are different from the Algol descendent languages and that's what makes it different. People do think differently with Lisp, because Lisp works that way, and not because "they were running from something".
Smalltalk use to be my favourite language, but after using Rails for sometime now, the DSLs in Rails are beginning to make me question whether Ruby is ultimately more productive. Matz has done everything in Ruby for a reason, based on practical feel (not conceptual elegance), and his approach works well once you get it. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Paul Beckford
- Posted on: August 24 2007 06:46 EDT
- in response to Thiago Concei????o
Hi Thiago, I think we are in violent agreement. If you look at the words I used not what was mentioned in the presentation then you will see that we mostly agree. Lisp does look wierd at first, but over time it gradually reveals its secrets and you come to appreciate it's power. Ruby is the same IMO. Now I'm not saying that ultimately Ruby is as powerful as Lisp. But you do get a lot of the feel of Lisp. Ruby manages to give you the best of Smalltalk and a lot of Lisp, with one and two things thrown in from Perl too. All I'm saying is that don't let first impressions fool you. To get to know Ruby takes a bit of time. For me, it was only after time, decoding and understanding the DSLs in Rails that I began to appreciate Ruby's strengths. I use to think of it as a lesser Smalltalk. I don't now. BTW. Here is an interesting link that compares what you can do in Ruby versus Lisp: http://www.randomhacks.net/articles/2005/12/03/why-ruby-is-an-acceptable-lisp Paul.Try using Ruby for a while (especially Rails)) and it grows on you. Believe me it's not just hype. Even the inconsistent grammar makes sense once you apply a few coding conventions (standards).
Smalltalk use to be my favourite language, but after using Rails for sometime now, the DSLs in Rails are beginning to make me question whether Ruby is ultimately more productive. Matz has done everything in Ruby for a reason, based on practical feel (not conceptual elegance), and his approach works well once you get it.
This is ridiculous. Once I first learned Lisp I also thought it was strange, and gradually while I was coding in Java I thought "hey, if I only had macros I could make this code much smaller" and so on. The fact is that Ruby adds nothing to that, absolutely nothing new, nothing to what people used to do 30 years ago.
And they came up with some "it is horrible to code in... they needed to come up with DSLs to escape from Lisp's horrible syntax...". What in the name of God is that!? Do they really know what they are talking about?
I am not a hardcore Lisp programmer, but I understand that the very concepts involved in it are different from the Algol descendent languages and that's what makes it different. People do think differently with Lisp, because Lisp works that way, and not because "they were running from something". -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Thiago Concei????o
- Posted on: August 24 2007 09:07 EDT
- in response to Paul Beckford
Perhaps some experienced Lisp developer can correct me if I am wrong, but what struck me about Lisp weren't DSLs or some new acronym. Once you have such flexibility it's not a matter of having small, big or super-size languages, but instead it's the fact that there's no language, in the sense that only with some basic rules you can shape whatever you need. This is not the case of "hiding the ugliness of Lisp behind DSLs", but that doing so is part of the modus operandi there. Its syntax seemed logical and not arbitrary as it is with languages like Java, Ruby or C#. About Ruby, I don't really buy it because it doesn't seem that much powerful in order to justify such hype. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 24 2007 09:24 EDT
- in response to Thiago Concei????o
About Ruby, I don't really buy it because it doesn't seem that much powerful in order to justify such hype.
I don't think it's very sensible to discount a language because there's hype around it. Hype, by itself, doesn't change a language and it can create a powerful community. Just look at what hype has done for Java. If there were no hype around Ruby and it were still the same language, would you then consider it? I also don't really understand how some people who apparently like Lisp don't like languages that emulate Lisp. If you like Lisp, you should be happy to have an option more like Lisp. Wouldn't you rather have a more Lisp-like tool than not? It almost seems like some people want Lisp to remain misunderstood so they can be in a secret club or something. We are creeping towards Lisp. If you like Lisp, this hardly seems like something to complain about. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: peter lin
- Posted on: August 24 2007 10:35 EDT
- in response to James Watson
Having written my own rule engine, which uses LISP syntax, here's my bias take on it. Many people struggle with the syntax of lisp. An obvious example is this. (> ?var1 ?var2) var1 > var2 Most people prefer the non-lisp syntax. I can understand why. From a young age, people are given math problems in the second format, so having to adjust the brain to think in LISP is challenging. I know many people who hate LISP and some who love it. I like LISP syntax, but it does require a significant effort to use. Often I find myself slipping into Java syntax, so I have to consciously make an effort. To me, languages that emulate LISP without using s-expression syntax feels odd. Ruby is a nice language, but I have a hard time with the syntax. I doubt there's any conspiracy from the prolog community towards other languages. If anything, the prolog guys I know think it's funny new languages are recycling old ideas. peter -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 24 2007 10:59 EDT
- in response to peter lin
Having written my own rule engine, which uses LISP syntax, here's my bias take on it.
The thing about LISP is that it doesn't really have any structure. It's almost low-level, in a strange way. It's kind of like what I imagine a really lazy compiler writer would come up with. When I read about the origins of LISP, I realized why. I read somewhere (I think it was Paul Graham) that McCarthy didn't even intend to implement LISP. It was an exercise to create a language that was easier for theoretical work than a Turing machine language. Or something like that. I can't find the page again. Correct me if I'm wrong. So in a way Lisp is very low level. It's axiomatic. But it's hugely powerful. That's what's amazing about and probably why it's seductive. Honestly, I think one of the big problems with Lisp is that in reality most programmers have a hard time think that abstractly about programming. More structured languages are just more comfortable. The keep your feet planted firmly on the ground. You almost need to know how a parser /compiler works to work with Lisp. It seems to me that languages are slowly working out how to get the power of Lisp while keeping users from feeling like they are on their own in the wilderness.
Many people struggle with the syntax of lisp. An obvious example is this.
(> ?var1 ?var2)
var1 > var2
Most people prefer the non-lisp syntax. I can understand why. From a young age, people are given math problems in the second format, so having to adjust the brain to think in LISP is challenging. I know many people who hate LISP and some who love it. I like LISP syntax, but it does require a significant effort to use. Often I find myself slipping into Java syntax, so I have to consciously make an effort. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Bill Pyne
- Posted on: August 24 2007 11:43 EDT
- in response to James Watson
Here's a link to a page supporting your assertion about John McCarthy's intentions. I happened to read it the other day. http://www-formal.stanford.edu/jmc/history/lisp/node3.html -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 24 2007 11:50 EDT
- in response to Bill Pyne
Here's a link to a page supporting your assertion about John McCarthy's intentions. I happened to read it the other day.
There's something interesting McCarthy writes at the bottom of that page [bolding mine]: "Another reason for the initial acceptance of awkwardnesses in the internal form of LISP is that we still expected to switch to writing programs as M-expressions. The project of defining M-expressions precisely and compiling them or at least translating them into S-expressions was neither finalized nor explicitly abandoned." Maybe McCarthy had that right all along. Perhaps the current progression of language paradigms is just a search for a comfortable set of M-expressions. I'm sure I'm not the first person to think of this, of course.
http://www-formal.stanford.edu/jmc/history/lisp/node3.html -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Bill Pyne
- Posted on: August 24 2007 12:10 EDT
- in response to James Watson
There's something interesting McCarthy writes at the bottom of that page [bolding mine]:
It makes me kind of interested to see what Paul Graham is going to do with Arc.
"Another reason for the initial acceptance of awkwardnesses in the internal form of LISP is that we still expected to switch to writing programs as M-expressions. The project of defining M-expressions precisely and compiling them or at least translating them into S-expressions was neither finalized nor explicitly abandoned."
Maybe McCarthy had that right all along. Perhaps the current progression of language paradigms is just a search for a comfortable set of M-expressions. I'm sure I'm not the first person to think of this, of course. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 24 2007 12:26 EDT
- in response to Bill Pyne
I don't know but after reading this: http://www.paulgraham.com/design.html It's clear that he never watched MTV. "Look what happened with the 911. It's so obviously superior to the Cadillac that a child could tell it's better. And so, by the 1980s, even the drug dealers that the Cadillac was designed for wanted 911s instead."There's something interesting McCarthy writes at the bottom of that page [bolding mine]:
"Another reason for the initial acceptance of awkwardnesses in the internal form of LISP is that we still expected to switch to writing programs as M-expressions. The project of defining M-expressions precisely and compiling them or at least translating them into S-expressions was neither finalized nor explicitly abandoned."
Maybe McCarthy had that right all along. Perhaps the current progression of language paradigms is just a search for a comfortable set of M-expressions. I'm sure I'm not the first person to think of this, of course.
It makes me kind of interested to see what Paul Graham is going to do with Arc. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Bill Pyne
- Posted on: August 24 2007 12:54 EDT
- in response to James Watson
It's clear that he never watched MTV.
I don't get the impression that popular culture appeals to Paul as anything more than a curiosity. Just my impression. I think the Cadillac was popular because it looked a lot like a limo. It gave people the feeling of royalty when they rode in it...until they went for a long ride and had to replace the transmission, distributor cap, and fan belt. Languages tend to be like that too.
"Look what happened with the 911. It's so obviously superior to the Cadillac that a child could tell it's better. And so, by the 1980s, even the drug dealers that the Cadillac was designed for wanted 911s instead." -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 24 2007 13:31 EDT
- in response to Bill Pyne
I don't get the impression that popular culture appeals to Paul as anything more than a curiosity. Just my impression.
I got the point. I just thought his example was a little poorly chosen given that cars like that Cadillac are highly prized in a certain segment of the population, way more than a 911. And actually, this one of the things that works against people like Paul Graham and other Lisp advocates. There's a perceived (possibly real) element of superiority and elitism. A lot of people don't really connect with Porshe driving, wine sniffing, classical music lovers. They may be right, but people don't want to listen.
I think the Cadillac was popular because it looked a lot like a limo. It gave people the feeling of royalty when they rode in it...until they went for a long ride and had to replace the transmission, distributor cap, and fan belt. Languages tend to be like that too. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Bill Pyne
- Posted on: August 27 2007 09:40 EDT
- in response to James Watson
I got the point. I just thought his example was a little poorly chosen given that cars like that Cadillac are highly prized in a certain segment of the population, way more than a 911.
We've posted on topics before, so I was certain you had gotten the point. I didn't mean to imply otherwise. Sorry about that. Given Paul's background in art he's highly in touch with form. Cars are items that average people walking on the street, in the US anyway, pay more attention to than say building design. I know you're into woodworking, so you'd probably understand a comparison of great pieces of furniture - sideboards perhaps; how many other readers would though? I'm not sure he could have chosen another subject as an example without losing his audience.
And actually, this one of the things that works against people like Paul Graham and other Lisp advocates. There's a perceived (possibly real) element of superiority and elitism. A lot of people don't really connect with Porshe driving, wine sniffing, classical music lovers. They may be right, but people don't want to listen. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 27 2007 15:49 EDT
- in response to Bill Pyne
Given Paul's background in art he's highly in touch with form. Cars are items that average people walking on the street, in the US anyway, pay more attention to than say building design. I know you're into woodworking, so you'd probably understand a comparison of great pieces of furniture - sideboards perhaps; how many other readers would though? I'm not sure he could have chosen another subject as an example without losing his audience.
I just think he could have used different automobiles. Say: http://en.wikipedia.org/wiki/Nissan_240Z http://en.wikipedia.org/wiki/Plymouth_Superbird I guess there are a still a lot of people who would prefer the superbird but at least these were both sports-cars and targeted to roughly the same market. A 911 and a Caddy are an apple and an orange. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 27 2007 16:05 EDT
- in response to James Watson
Oh, yeah, I also found it weird given that the 911 is a somewhat flawed design. It's prone to spin-out because of engine placement making it difficult to drive (and a bit unsafe.) A lot of the attraction is 'taming' the 911. Maybe that's kind of like what Paul Graham likes about Lisp. But I don't think that is the general understanding of good design i.e. ergonomics. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: James Watson
- Posted on: August 27 2007 16:06 EDT
- in response to James Watson
Oh, yeah, I also found it weird given that the 911 is a somewhat flawed design. It's prone to spin-out because of engine placement making it difficult to drive (and a bit unsafe.) A lot of the attraction is 'taming' the 911. Maybe that's kind of like what Paul Graham likes about Lisp. But I don't think that is the general understanding of good design i.e. ergonomics.
I guess I should say 'fish-tail' here instead of 'spin-out'. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Bill Pyne
- Posted on: August 27 2007 16:13 EDT
- in response to James Watson
I just think he could have used different automobiles. Say:
Although without the Caddy in there, he couldn't have made the drug-dealer knock! Good point on the apples to oranges though. The cars were designed for different markets. It would be interesting to compare the design changes to each - the Porsche and Caddy - throughout time to see if they changed and how much. I would think that a "timeless" design should see few changes over the decades.
http://en.wikipedia.org/wiki/Nissan_240Z
http://en.wikipedia.org/wiki/Plymouth_Superbird
I guess there are a still a lot of people who would prefer the superbird but at least these were both sports-cars and targeted to roughly the same market. A 911 and a Caddy are an apple and an orange. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Brian Zhou
- Posted on: August 27 2007 01:12 EDT
- in response to peter lin
+1. When I was evaluating rule engines, comparing Jess and Drools, I really like CLIPS syntax much better. I cannot bear the thought of writing complex rules in XML. Worked with Jess a bit more, I realized that without pattern matching, it would be hard for other languages to be a good rule DSLang anyway. From a language point of view, maybe Prolog with its unification, or at least Erlang with pattern matching. Most of the mainstream languages do not have pattern matching. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Mark Proctor
- Posted on: September 01 2007 12:13 EDT
- in response to Brian Zhou
+1.
When was the last time you used Drools? The XML syntax is over 2 years old now, we have our own DSL parsed by ANTLR almost everyone prefers it to Clips, which is Lisp based. For example: rule "Rule 3: If there is a field with a value in a row, remove all PossibleValues with this value in this row" salience 15 when $field2 : Field( $row : row, $value : value != 0 ) $possible : PossibleValue( row == $row, value == $value ) then retract( $possible ); #System.out.println("Rule 3 fired."); end Take a look at the features and screenshot page and you'll see that we have come a long way since Drools 2.x, we probably have the most powerful and orthogonal rule language of any system. http://labs.jboss.com/drools/featuresandscreenshots.html Mark http://blog.athico.com
When I was evaluating rule engines, comparing Jess and Drools, I really like CLIPS syntax much better. I cannot bear the thought of writing complex rules in XML.
Worked with Jess a bit more, I realized that without pattern matching, it would be hard for other languages to be a good rule DSLang anyway. From a language point of view, maybe Prolog with its unification, or at least Erlang with pattern matching. Most of the mainstream languages do not have pattern matching. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Stevy Jober
- Posted on: January 07 2011 07:48 EST
- in response to Brian Zhou
After days like much information to swallow, he must return home and enjoy a little relaxation before attacking the job:) Me personally, I found what I need with my masque africain in my living room .. It allows you to change your mind before typing it.
-
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Thiago Concei????o
- Posted on: August 26 2007 10:39 EDT
- in response to James Watson
I don't think it's very sensible to discount a language because there's hype around it. Hype, by itself, doesn't change a language and it can create a powerful community. Just look at what hype has done for Java. If there were no hype around Ruby and it were still the same language, would you then consider it?
I discount it because: - It's horribly ugly; - It's slow; - Doesn't add anything to what we currently have; I wouldn't consider it without the hype, pretty much because of the same reasons. The feature set is not "revolutionary", as some would like you to believe. Now Lisp, with its S expressions and all, is something that challenges you into exploring its limits. Initially you can't see them and think "let's see what I can do". Well, I am not an expert in Lisp. I just play with it in my spare time and like to learn about it.I also don't really understand how some people who apparently like Lisp don't like languages that emulate Lisp. If you like Lisp, you should be happy to have an option more like Lisp. Wouldn't you rather have a more Lisp-like tool than not?
I don't really think Ruby is Lisp-like. It borrows some features, but in the end it looks like Perl. It's just crappy. Now if you had said "Scheme" or some other Lisp dialect, then yes, I would rather work with them rather than not. -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Brian Zhou
- Posted on: August 27 2007 00:49 EDT
- in response to Paul Beckford
Smalltalk use to be my favourite language, but after using Rails for sometime now, the DSLs in Rails are beginning to make me question whether Ruby is ultimately more productive.
Ruby is currently more popular mainly because of Rails, Rails benefits from Ruby being more open, not relying on GUI, and easier to integrate to other systems (such as RDBMS). But in terms of language, Ruby is so ugly; in terms of VM implementation, Ruby is also not so good. I can understand how Ruby appeals to Perl scripters. But those understand Smalltalk or Lisp/Scheme and are using Ruby, how many of them really like Ruby? -
Where is my Sanskrit lecturer !![ Go to top ]
- Posted by: Ramesh Gajjela
- Posted on: August 25 2007 04:38 EDT
- in response to Joseph Ottinger
I mean when my Sanskrit lecturer said that Sanskrit is a better language for computing...we just laughed !! He may be too lazy to learn C or C++..!! This DSL and its purpose and design matches most of what a Mantra stands...(Please Google to know what a mantra is). The old Panini maharishi, wrote a grammar book on Sanskrit which cud be a superset to these DSLs and more abstracted languages..!! I mean, when we go on abstracting and re-inventing or evolving programming languages, I think, we will end up in future with something very similar to a mantra AND we may not even need a physical computer to do computing, bcoz, programming language is at such a high-level abstraction !! If what I posted here, does not sound relevant for a DSL discussion, I wud like to advice to go through the book: Understanding Mantras by Harvey P. Alper. -
Re: Where is my Sanskrit lecturer !![ Go to top ]
- Posted by: Mark N
- Posted on: August 27 2007 09:02 EDT
- in response to Ramesh Gajjela
The old Panini maharishi, wrote a grammar book on Sanskrit which cud be a superset to these DSLs and more abstracted languages..!!
Hmmm. I'll have to "chew" on that one. :) -
Doesn't anybody read the classics anymore?[ Go to top ]
- Posted by: Tracy Nelson
- Posted on: August 31 2007 15:29 EDT
- in response to Joseph Ottinger
I first read about DSLs here. Are we reinventing the past, or just updating it? -
Re: Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Ke Jin
- Posted on: September 22 2007 13:04 EDT
- in response to Joseph Ottinger
Domain specific language and/or modeling (DSL and DSM), as a very effective paradigm, has been around for decades. Other than a newly coined buzzword "LOP", lengthy discussions on common sense, and non-substantial side issues (such as internal vs external grammars), I fail to see this talk presented useful and significant new concepts. The talk does throw out a few non-orthodox but unjustified claims (or they don’t bother to justify them?), such as:“For the past 20 years or so, we have been trying to model the world with trees. That is the way we model the world in object-oriented languages is build hierarchies, trees, trees of how we model things in code and it turns out that that works out pretty well because most of the world is tree shaped. Most of the world is hierarchical. You can fit things into trees pretty easily but that abstraction breaks down sometimes because a lot of times, we try to model the real world. We model it like this with a nice tree abstract picture of trees, and of course this is idealized. This is not the way the world really looks. The world really looks like this, tangled branches and interconnections and all sorts of other things that are really, really hard to model in these kind of idealized pictures. So what we have been trying to do is model the world with hierarchies but hierarchies fall down at some point and so we invent things like aspects.”
They didn’t rationalize why they belive OO was merely about “model the world with trees and/or … build hierarchies.” A plain and obvious fact is that OO programming languages such as C++, Java do not enforce trees and hierarchies except for the inheritance based class extending. In general cases, nothing in these OO languages discourages models and structures of non-tree/non-hierarchy and vice versa. Widely observable from microscope level abstractions (such as linked list) to marcoscope level system designs on UML object diagrams, in the past 20 years, people have been modeling with non-trees/non-hierarchies no less than the opposite. The argument of“hierarchies fall down at some point and so we invent things like aspects”
sound like to say “the file directory tree structure model fall down, and so we invent things like directory/file access control, monitoring, event triggering and logging”, or "relation model fall down at some point and so we invent things like transaction" ... lol. DSL folks never claimed that increasing expressiveness of a language for a specific problem domain was contrary to abstracting by hierarchies and modeling with trees. This argument could be the only "invention" they can safely claim credit, if it could be justified. However, as giving no evidence on their claims of OO discourages modeling with non-trees and non-hierarchies, they did neither bother to justify why designing and using domain specific language grammars was contradictory to modeling with trees and building hierarchies. It is pretty common that DSL grammars, especially declarative DSL grammars (schemas) are defined by their schema trees. An example is defining DSLs using LISP defmacro. An important concept in LISP is “data is code, and code is data”. Therefore, the new DSL schema defined in by a defmacro is effectively expressed in a s-express (data) tree. Therefore, contrary to their claims, tree expressions is not only applicable in defining DSL grammars but also helpful in DSL abstractions. Here, modeling (data) trees is exactly modeling (code) grammars. This makes LISP one of the most effective DSL environments. Besides an individual DSL grammar tree, the inheritance and hierarchies are also applicable and significant in DSL grammar abstraction and reuse. A desirable DSL environment should not force all DSLs to be defined from scratch (including copy-paste) but support extending grammars/schemas by inheritance (and therefore grammar hierarchies) and semantic overriding (change the semantics of a syntax in the child grammar). We are going to release an open source DSL/DSM framework that supports this inheritance as well as containment based schema extending and reuse. The product is going to be shipped with dozen or so DSL/DSM examples (also in open sources). These DSLs/DSMs are extended (using inheritance or containment) either from the core (root) schema or from other extended schemas and therefore present a DSL grammar hierarchy tree. -
Everyone has different opinions[ Go to top ]
- Posted by: natalie smith
- Posted on: December 11 2009 18:04 EST
- in response to Joseph Ottinger
This is great stuff. I found it very helpful. There will always be people that prefer or like oter ways. -
DSL and OO[ Go to top ]
- Posted by: Yuri Fan
- Posted on: June 03 2010 14:49 EDT
- in response to Joseph Ottinger
DSL guys never claimed that increasing expressiveness of a language for a specific problem domain was contrary to abstracting by hierarchies and modeling with trees. This argument could be the only "invention" they can safely claim credit, if it could be justified. However, as giving no evidence on their claims of OO discourages modeling with non-trees and non-hierarchies, they did neither bother to justify why designing and using domain specific language grammars was contradictory to modeling with trees and building hierarchies. Yuri -
DCL and C+[ Go to top ]
- Posted by: Yuri Fan
- Posted on: June 03 2010 15:02 EDT
- in response to Yuri Fan
Also I would never use C+ if I new DSL prior to doing my projects on Sarkari Naukri. This DSL and its purpose and design matches most of what a Mantra stands. Nothing else is needed! Yuri -
nice effort[ Go to top ]
- Posted by: niko niko
- Posted on: September 15 2010 06:57 EDT
- in response to Joseph Ottinger
Thanks for this nice place to share. atlanticOptimize
Edited by: Cameron McKenzie on Sep 15, 2010 8:03 AM -
Jquerry?[ Go to top ]
- Posted by: Diane Loden
- Posted on: December 10 2010 02:38 EST
- in response to Joseph Ottinger
Is Jquerry programing structure is the best today? Please help me out here. I really need to know from you experts.
-
Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: Stevy Jober
- Posted on: January 07 2011 07:33 EST
- in response to Joseph Ottinger
Great information, thanks.
-
nIce post[ Go to top ]
- Posted by: mollika7842 dghgf
- Posted on: February 19 2011 00:23 EST
- in response to Joseph Ottinger
"Language-oriented Programming and Language Workbenches: Shifting Paradigms" is a presentation given by Neal Ford and Martin Fowler on the growing appeal and application of domain-specific languages, and a little on what they look like. DSLs, surprisingly, take forms beyond what one might imagine: Rails, for example, is a DSL. So are many libraries for Java, although calling some of them "DSLs" might be a stretch - but thinking of them in that way can help streamline their design. Altogether, this is a great presentation to watch.
This is really a great post.Thanks for sharing..
-
Thanks[ Go to top ]
- Posted by: vipin raj
- Posted on: June 10 2012 07:05 EDT
- in response to Joseph Ottinger
Great info, thanks a lot!
-
good view about programming[ Go to top ]
- Posted by: shimon boi
- Posted on: July 02 2012 05:22 EDT
- in response to Joseph Ottinger
I like to be here to know and give more inetnsion in programing and website updates
-
great[ Go to top ]
- Posted by: Apol san
- Posted on: July 10 2012 18:15 EDT
- in response to Joseph Ottinger
this is very informative "DSLs, surprisingly, take forms beyond what one might imagine: Rails, for example, is a DSL. So are many libraries for Java, although calling some of them "DSLs" might be a stretch - but thinking of them in that way can help streamline their design. Altogether, this is a great presentation to watch."..thank you so much for sharing
-
Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: saon islma
- Posted on: July 16 2012 15:27 EDT
- in response to Joseph Ottinger
We need this programme yearly. My new post
<a href="http://wahidconnected.co/blog/2012/07/samsung-galaxy-tab-7-7-lte-i815/" title="Samsung galaxy tab"></a> -
Language-oriented Programming and Language Workbenches[ Go to top ]
- Posted by: saon islma
- Posted on: July 16 2012 15:29 EDT
- in response to Joseph Ottinger
Great presentation. Who will visit my new post on samsung galaxy tab
-
gamis bahan kaos[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: August 11 2012 10:21 EDT
- in response to Joseph Ottinger
is simple to relax yourself. abounding humans will anticipate added cast shoes asable-bodied accept the some functions. But you should the credibility that you can own the acclaimed cast nike shoes in such low amount and it is acumenable that you can allow and it just amount the aforementioned analyze with addeds or just added than addeds. To be bluntness, it is account to own them. Air max 2011 advertise able-bodied in Europe and arctic America and Australia. And no amount who you are, man or woman or kids. You can get your “adorableness”(nike air max shoes) calmly actuality, and no amount wactuality you are, if you accept any adjustments at our online boutique, we will forward to you in 7 canicule fast, nice to serve you.Do you still alternate to do it? gamis kaos
-
bahan bahan[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: August 11 2012 10:24 EDT
- in response to Joseph Ottinger
I was very encouraged to find this site. gamis kaos murah I wanted to thank you for this special read. I definitely savored every little bit of it and I have you bookmarked to check out new stuff you post. 2. I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else! 3. Finally, an issue that I am passionate about. I have looked for information of this caliber for the last several hours. Your site is greatly appreciated. 4. Thank you for another essential article. Where else could anyone get that kind of information in such a complete way of writing? I have a presentation incoming week, and I am on the lookout for such information. grosir gamis kaos 5. The beauty of these blogging engines and CMS platforms is the lack of limitations and ease of manipulation that allows developers to implement rich content and 'skin' the site in such a way that with very little effort one would never notice what it is making the site tick all without limiting content and effectiveness.
-
bahan bahan[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: August 11 2012 10:26 EDT
- in response to Joseph Ottinger
6. This is the perfect blog for anyone who gamis pesta murah wants to know about this topic. You know so much its almost hard to argue with you (not that I really would want...HaHa). You definitely put a new spin on a subject thats been written about for years. Great stuff, just great! 7. This is a smart blog. I mean it. You have so much knowledge about this issue, and so much passion. You also know how to make people rally behind it, obviously from the responses. Youve got a design here thats not too flashy, but makes a statement as big as what youre saying. Great job, indeed. 8. What youre saying is completely true. I know that everybody must say the same thing, but I just think that you put it in a way that everyone can understand. I also love the images you put in here. They fit so well with what youre trying to say. Im sure youll reach so many people with what jual baju gamis youve got to say.
-
pistachio nutrition[ Go to top ]
- Posted by: spieker874 spieker874
- Posted on: September 02 2012 13:52 EDT
- in response to Joseph Ottinger
The pistachio tree produces seeds that enclose the edible fruit inside. Pistachio nuts have light brown colored outer shells and the edible portion has a thin light green skin. Typically the seeds are eaten as snacks. Pistachio nutrition has been attributed with cholesterol regulation.
-
apartment mailbox[ Go to top ]
- Posted by: jhone jee
- Posted on: September 24 2012 08:14 EDT
- in response to Joseph Ottinger
Every home needs a email box. All you need to do is select the mail box that suits your needs.apartment mailbox
-
The concept of Language Oriented Programming[ Go to top ]
- Posted by: mike rogerson
- Posted on: October 08 2012 11:34 EDT
- in response to Joseph Ottinger
The concept of Language Oriented Programming takes the approach to capture requirements in the user's terms, and then to try to create an implementation language as isomorphic as possible to the user's descriptions, so that the mapping between requirements and implementation is as direct as possible. njoy pure wand
-
thanks[ Go to top ]
- Posted by: akko nm
- Posted on: November 09 2012 07:45 EST
- in response to Joseph Ottinger
Passing and adding through worthy subject, i am sure that you focused all aspects with real experiences. It's nice that you worked well and gave good material over here. Calendula Salve
-
This is a very inspiring post ![ Go to top ]
- Posted by: Stefanus Ntep
- Posted on: November 10 2012 13:50 EST
- in response to Joseph Ottinger
I just want to say thanks to you for your great post, it give me a lot of ideas for my presentation Baju Wanita Murah and my projects about Training Motivasi and also Pelatihan Hipnoterapi. You really help me out, million thanks to you.
-
Programming and Language Workbenches[ Go to top ]
- Posted by: Rizki Yanuar
- Posted on: December 06 2012 05:46 EST
- in response to Joseph Ottinger
This is a very good opinion! I admire the way you shared this topic! Keep it up a good job! credit report and score
-
obat penurun darah tinggi alami[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: April 07 2013 01:02 EDT
- in response to Joseph Ottinger
Thank you for another essential article. Where else could anyone get that kind of information in such a complete way of writing? I have a presentation incoming week, and I am on the lookout for such obat penurun darah tinggi alami information -
obat tradisional penyakit darah tinggi alami[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: April 07 2013 01:05 EDT
- in response to Joseph Ottinger
Finally, an issue that I am passionate about. I have looked for information of this caliber for the last several hours. Your site is greatly appreciated. obat tradisional penyakit darah tinggi alami -
obat alami hipertensi alami[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: April 07 2013 01:07 EDT
- in response to Joseph Ottinger
I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else! obat alami hipertensi alami -
obat herbal hipertensi alami[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: April 07 2013 01:08 EDT
- in response to Joseph Ottinger
obat herbal hipertensi alami I was very encouraged to find this site. I wanted to thank you for this special read. I definitely savored every little bit of it and I have you bookmarked to check out new stuff you post. -
obat herbal darah tinggi alam[ Go to top ]
- Posted by: prayoga pramanaditia
- Posted on: April 07 2013 01:09 EDT
- in response to Joseph Ottinger
This is a smart blog. I mean it. You have so much knowledge about this issue, and so much passion. You also know how to make people rally behind it, obviously from the responses. Youve got a design here thats not too flashy, but makes a statement as big as what youre saying. Great job, indeed. obat herbal darah tinggi alami