372:
47:
as possible to the user's descriptions, so that the mapping between requirements and implementation is as direct as possible. A measure of the closeness of this isomorphism is the "redundancy" of the language, defined as the number of editing operations needed to implement a stand-alone change in
52:
what is the best language for implementing the new language. Rather, the developer can choose among options created by analysis of the information flows — what information is acquired, what its structure is, when it is acquired, from whom, and what is done with it.
497:
23:) is a software-development paradigm where "language" is a software building block with the same status as objects, modules and components, and rather than solving problems in
43:
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
31:(DSLs) for the problem first, and solves the problem in those languages. Language-oriented programming was first described in detail in Martin Ward's 1994 paper
403:
467:
416:
204:
Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (March 2018).
141:
566:
501:
396:
630:
980:
842:
368:
986:
389:
322:
182:
205:
1171:
919:
24:
639:
263:
1011:
691:
635:
255:
871:
744:
675:
610:
533:
1232:
1049:
812:
442:
827:
595:
1211:
1191:
1121:
1064:
1026:
1016:
976:
901:
837:
807:
734:
723:
620:
600:
575:
538:
94:
1166:
929:
896:
791:
767:
729:
709:
605:
514:
492:
477:
62:
1113:
1099:
1006:
966:
891:
797:
777:
644:
523:
457:
1206:
971:
881:
861:
847:
365:
In: Proceedings of the 6th
International Conference on Software Language Engineering (SLE'13). 2013.
1186:
1146:
1089:
1021:
759:
590:
104:
28:
1196:
1176:
1117:
1104:
1084:
911:
648:
552:
510:
381:
362:
114:
363:
The State of the Art in
Language Workbenches. Conclusions from the Language Workbench Challenge.
1156:
1131:
1125:
1069:
1031:
719:
714:
666:
561:
462:
434:
425:
109:
1058:
1054:
996:
948:
518:
1201:
1181:
1141:
943:
802:
671:
658:
412:
280:
44:
8:
1136:
1074:
886:
866:
852:
584:
452:
447:
953:
906:
876:
822:
681:
580:
472:
356:
328:
225:
70:
1109:
1001:
856:
832:
772:
739:
701:
686:
625:
318:
259:
178:
991:
923:
787:
528:
332:
310:
229:
217:
170:
85:
provide the tools to design and implement DSLs and language-oriented programming.
1041:
915:
781:
482:
314:
174:
69:
were designed to support language-oriented programming from the ground up. Other
1093:
749:
615:
375:
The system used the very same Top Down
Parsing Language algorithm that powered
1226:
1079:
74:
961:
252:
Building Better
Applications: a Theory of Efficient Software Development
309:. Lecture Notes in Computer Science. Vol. 8225. pp. 197–217.
99:
376:
281:"Language Workbenches: The Killer-App for Domain Specific Languages?"
66:
221:
411:
203:
78:
302:
82:
357:
Language
Oriented Programming: The Next Programming Paradigm
165:
Pickering, Robert (2010). "Language-Oriented
Programming".
359:
Sergey
Dmitriev's paper that further explored the topic.
1224:
199:
197:
303:"The State of the Art in Language Workbenches"
397:
194:
404:
390:
468:Programming in the large and in the small
369:Language Oriented Programming in MetaLisp
164:
272:
249:
1225:
300:
278:
169:. Berkeley: Apress. pp. 327–349.
385:
294:
206:"A Programmable Programming Language"
132:
130:
27:, the programmer creates one or more
25:general-purpose programming languages
139:
13:
127:
14:
1244:
350:
1012:Partitioned global address space
256:International Thomson Publishing
48:requirements. It is not assumed
373:thesis 1992 University of Leeds
279:Fowler, Martin (12 June 2005).
142:"Language-Oriented Programming"
243:
56:
1:
307:Software Language Engineering
146:Software - Concepts and Tools
120:
33:Language Oriented Programming
17:Language-oriented programming
539:Uniform Function Call Syntax
315:10.1007/978-3-319-02654-1_11
175:10.1007/978-1-4302-2390-0_12
95:Grammar-oriented programming
7:
1007:Parallel programming models
981:Concurrent constraint logic
88:
63:Racket programming language
10:
1249:
1100:Metalinguistic abstraction
967:Automatic mutual exclusion
301:Erdweg, Sebastian (2013).
38:
1155:
1040:
972:Choreographic programming
942:
758:
700:
657:
560:
551:
491:
433:
424:
210:Communications of the ACM
29:domain-specific languages
1022:Relativistic programming
105:Domain-specific language
115:Intentional programming
1032:Structured concurrency
417:Comparison by language
110:Extensible programming
1233:Programming paradigms
997:Multitier programming
813:Interface description
413:Programming paradigms
140:Ward, Martin (1994).
1137:Self-modifying code
745:Probabilistic logic
676:Functional reactive
631:Expression-oriented
585:Partial application
1050:Attribute-oriented
823:List comprehension
768:Algebraic modeling
581:Anonymous function
473:Design by contract
443:Jackson structures
71:language workbench
1220:
1219:
1110:Program synthesis
1002:Organic computing
938:
937:
843:Non-English-based
818:Language-oriented
596:Purely functional
547:
546:
324:978-3-319-02653-4
250:Dunlavey (1994).
184:978-1-4302-2389-4
1240:
1122:by demonstration
1027:Service-oriented
1017:Process-oriented
992:Macroprogramming
977:Concurrent logic
848:Page description
838:Natural language
808:Grammar-oriented
735:Nondeterministic
724:Constraint logic
626:Point-free style
621:Functional logic
558:
557:
529:Immutable object
448:Block-structured
431:
430:
406:
399:
392:
383:
382:
344:
343:
341:
339:
298:
292:
291:
289:
287:
276:
270:
269:
247:
241:
240:
238:
236:
201:
192:
188:
161:
159:
157:
134:
1248:
1247:
1243:
1242:
1241:
1239:
1238:
1237:
1223:
1222:
1221:
1216:
1158:
1151:
1042:Metaprogramming
1036:
952:
947:
934:
916:Graph rewriting
754:
730:Inductive logic
710:Abductive logic
696:
653:
616:Dependent types
564:
543:
515:Prototype-based
495:
493:Object-oriented
487:
483:Nested function
478:Invariant-based
420:
410:
353:
348:
347:
337:
335:
325:
299:
295:
285:
283:
277:
273:
266:
248:
244:
234:
232:
222:10.1145/3127323
202:
195:
191:
185:
155:
153:
135:
128:
123:
91:
59:
41:
12:
11:
5:
1246:
1236:
1235:
1218:
1217:
1215:
1214:
1209:
1204:
1199:
1194:
1189:
1184:
1179:
1174:
1169:
1163:
1161:
1153:
1152:
1150:
1149:
1144:
1139:
1134:
1129:
1107:
1102:
1097:
1087:
1082:
1077:
1072:
1067:
1062:
1052:
1046:
1044:
1038:
1037:
1035:
1034:
1029:
1024:
1019:
1014:
1009:
1004:
999:
994:
989:
984:
974:
969:
964:
958:
956:
940:
939:
936:
935:
933:
932:
927:
912:Transformation
909:
904:
899:
894:
889:
884:
879:
874:
869:
864:
859:
850:
845:
840:
835:
830:
825:
820:
815:
810:
805:
800:
798:Differentiable
795:
785:
778:Automata-based
775:
770:
764:
762:
756:
755:
753:
752:
747:
742:
737:
732:
727:
717:
712:
706:
704:
698:
697:
695:
694:
689:
684:
679:
669:
663:
661:
655:
654:
652:
651:
645:Function-level
642:
633:
628:
623:
618:
613:
608:
603:
598:
593:
588:
578:
572:
570:
555:
549:
548:
545:
544:
542:
541:
536:
531:
526:
521:
507:
505:
489:
488:
486:
485:
480:
475:
470:
465:
460:
458:Non-structured
455:
450:
445:
439:
437:
428:
422:
421:
409:
408:
401:
394:
386:
380:
379:
371:Gyuri Lajos's
366:
360:
352:
351:External links
349:
346:
345:
323:
293:
271:
264:
242:
193:
190:
189:
183:
162:
136:
125:
124:
122:
119:
118:
117:
112:
107:
102:
97:
90:
87:
73:tools such as
58:
55:
40:
37:
9:
6:
4:
3:
2:
1245:
1234:
1231:
1230:
1228:
1213:
1210:
1208:
1205:
1203:
1200:
1198:
1195:
1193:
1190:
1188:
1185:
1183:
1182:Data-oriented
1180:
1178:
1175:
1173:
1170:
1168:
1165:
1164:
1162:
1160:
1154:
1148:
1145:
1143:
1140:
1138:
1135:
1133:
1130:
1127:
1123:
1119:
1115:
1111:
1108:
1106:
1103:
1101:
1098:
1095:
1091:
1088:
1086:
1083:
1081:
1080:Homoiconicity
1078:
1076:
1073:
1071:
1068:
1066:
1063:
1060:
1056:
1053:
1051:
1048:
1047:
1045:
1043:
1039:
1033:
1030:
1028:
1025:
1023:
1020:
1018:
1015:
1013:
1010:
1008:
1005:
1003:
1000:
998:
995:
993:
990:
988:
987:Concurrent OO
985:
982:
978:
975:
973:
970:
968:
965:
963:
960:
959:
957:
955:
950:
945:
941:
931:
928:
925:
921:
917:
913:
910:
908:
905:
903:
900:
898:
895:
893:
890:
888:
885:
883:
882:Set-theoretic
880:
878:
875:
873:
870:
868:
865:
863:
862:Probabilistic
860:
858:
854:
851:
849:
846:
844:
841:
839:
836:
834:
831:
829:
826:
824:
821:
819:
816:
814:
811:
809:
806:
804:
801:
799:
796:
793:
789:
786:
783:
779:
776:
774:
771:
769:
766:
765:
763:
761:
757:
751:
748:
746:
743:
741:
738:
736:
733:
731:
728:
725:
721:
718:
716:
713:
711:
708:
707:
705:
703:
699:
693:
690:
688:
685:
683:
680:
677:
673:
670:
668:
665:
664:
662:
660:
656:
650:
646:
643:
641:
640:Concatenative
637:
634:
632:
629:
627:
624:
622:
619:
617:
614:
612:
609:
607:
604:
602:
599:
597:
594:
592:
589:
586:
582:
579:
577:
574:
573:
571:
568:
563:
559:
556:
554:
550:
540:
537:
535:
532:
530:
527:
525:
522:
520:
516:
512:
509:
508:
506:
503:
499:
494:
490:
484:
481:
479:
476:
474:
471:
469:
466:
464:
461:
459:
456:
454:
451:
449:
446:
444:
441:
440:
438:
436:
432:
429:
427:
423:
418:
414:
407:
402:
400:
395:
393:
388:
387:
384:
378:
374:
370:
367:
364:
361:
358:
355:
354:
334:
330:
326:
320:
316:
312:
308:
304:
297:
282:
275:
267:
265:0-442-01740-5
261:
257:
253:
246:
231:
227:
223:
219:
215:
211:
207:
200:
198:
186:
180:
176:
172:
168:
163:
151:
147:
143:
138:
137:
133:
131:
126:
116:
113:
111:
108:
106:
103:
101:
98:
96:
93:
92:
86:
84:
80:
76:
75:JetBrains MPS
72:
68:
64:
54:
51:
46:
36:
34:
30:
26:
22:
18:
1187:Event-driven
817:
591:Higher-order
519:Object-based
336:. Retrieved
306:
296:
284:. Retrieved
274:
251:
245:
233:. Retrieved
216:(3): 62–71.
213:
209:
167:Beginning F#
166:
154:. Retrieved
152:(4): 147–161
149:
145:
60:
49:
42:
32:
20:
16:
15:
1197:Intentional
1177:Data-driven
1159:of concerns
1118:Inferential
1105:Multi-stage
1085:Interactive
962:Actor-based
949:distributed
892:Stack-based
692:Synchronous
649:Value-level
636:Applicative
553:Declarative
511:Class-based
57:Development
1172:Components
1157:Separation
1132:Reflective
1126:by example
1070:Extensible
944:Concurrent
920:Production
907:Templating
887:Simulation
872:Scientific
792:Spacecraft
720:Constraint
715:Answer set
667:Flow-based
567:comparison
562:Functional
534:Persistent
498:comparison
463:Procedural
435:Structured
426:Imperative
121:References
100:Dialecting
45:isomorphic
1059:Inductive
1055:Automatic
877:Scripting
576:Recursive
377:Tree-Meta
67:RascalMPL
1227:Category
1212:Subjects
1202:Literate
1192:Features
1147:Template
1142:Symbolic
1114:Bayesian
1094:Hygienic
954:parallel
833:Modeling
828:Low-code
803:End-user
740:Ontology
672:Reactive
659:Dataflow
286:14 April
89:See also
50:a-priori
1167:Aspects
1075:Generic
1065:Dynamic
924:Pattern
902:Tactile
867:Quantum
857:filters
788:Command
687:Streams
682:Signals
453:Modular
333:5234848
230:3887010
79:Kermeta
39:Concept
930:Visual
897:System
782:Action
606:Strict
338:4 July
331:
321:
262:
235:15 May
228:
181:
156:15 May
1207:Roles
1090:Macro
853:Pipes
773:Array
750:Query
702:Logic
611:GADTs
601:Total
524:Agent
329:S2CID
226:S2CID
83:Xtext
81:, or
855:and
502:list
340:2023
319:ISBN
288:2015
260:ISBN
237:2019
179:ISBN
158:2019
65:and
61:The
760:DSL
311:doi
218:doi
171:doi
21:LOP
1229::
1124:,
1120:,
1116:,
922:,
918:,
647:,
638:,
517:,
513:,
500:,
327:.
317:.
305:.
258:.
254:.
224:.
214:61
212:.
208:.
196:^
177:.
150:15
148:.
144:.
129:^
77:,
35:.
1128:)
1112:(
1096:)
1092:(
1061:)
1057:(
983:)
979:(
951:,
946:,
926:)
914:(
794:)
790:(
784:)
780:(
726:)
722:(
678:)
674:(
587:)
583:(
569:)
565:(
504:)
496:(
419:)
415:(
405:e
398:t
391:v
342:.
313::
290:.
268:.
239:.
220::
187:.
173::
160:.
19:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.