-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathThesis.bib
2074 lines (1900 loc) · 160 KB
/
Thesis.bib
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
@inproceedings{abadTaskInterruptionSoftware2018,
title = {Task {{Interruption}} in {{Software Development Projects}}: {{What Makes}} Some {{Interruptions More Disruptive}} than {{Others}}?},
shorttitle = {Task {{Interruption}} in {{Software Development Projects}}},
booktitle = {Proceedings of the 22nd {{International Conference}} on {{Evaluation}} and {{Assessment}} in {{Software Engineering}} 2018},
author = {Abad, Zahra Shakeri Hossein and Karras, Oliver and Schneider, Kurt and Barker, Ken and Bauer, Mike},
year = {2018},
month = jun,
series = {{{EASE}}'18},
pages = {122--132},
publisher = {{Association for Computing Machinery}},
address = {{New York, NY, USA}},
doi = {10.1145/3210459.3210471},
url = {https://doi.org/10.1145/3210459.3210471},
urldate = {2022-03-14},
abstract = {Multitasking has always been an inherent part of software development and is known as the primary source of interruptions due to task switching in software development teams. Developing software involves a mix of analytical and creative work, and requires a significant load on brain functions, such as working memory and decision making. Thus, task switching in the context of software development imposes a cognitive load that causes software developers to lose focus and concentration while working thereby taking a toll on productivity. To investigate the disruptiveness of task switching and interruptions in software development projects, and to understand the reasons for and perceptions of the disruptiveness of task switching we used a mixed-methods approach including a longitudinal data analysis on 4,910 recorded tasks of 17 professional software developers, and a survey of 132 software developers. We found that, compared to task-specific factors (e.g. priority, level, and temporal stage), contextual factors such as interruption type (e.g. self/external), time of day, and task type and context are a more potent determinant of task switching disruptiveness in software development tasks. Furthermore, while most survey respondents believe external interruptions are more disruptive than self-interruptions, the results of our retrospective analysis reveals otherwise. We found that self-interruptions (i.e. voluntary task switchings) are more disruptive than external interruptions and have a negative effect on the performance of the interrupted tasks. Finally, we use the results of both studies to provide a set of comparative vulnerability and interaction patterns which can be used as a mean to guide decision-making and forecasting the consequences of task switching in software development teams.},
isbn = {978-1-4503-6403-4},
keywords = {Empirical software engineering,Multitasking,Productivity,Retrospective analysis,Task interruption,Task switching},
file = {/Users/ysander/Zotero/storage/IA8QEIVW/Abad et al. - 2018 - Task Interruption in Software Development Projects.pdf}
}
@inproceedings{abadTaskInterruptionSoftware2018a,
title = {Task {{Interruption}} in {{Software Development Projects}}: {{What Makes}} Some {{Interruptions More Disruptive}} than {{Others}}?},
shorttitle = {Task {{Interruption}} in {{Software Development Projects}}},
booktitle = {Proceedings of the 22nd {{International Conference}} on {{Evaluation}} and {{Assessment}} in {{Software Engineering}} 2018},
author = {Abad, Zahra Shakeri Hossein and Karras, Oliver and Schneider, Kurt and Barker, Ken and Bauer, Mike},
year = {2018},
month = jun,
pages = {122--132},
publisher = {{ACM}},
address = {{Christchurch New Zealand}},
doi = {10.1145/3210459.3210471},
url = {https://dl.acm.org/doi/10.1145/3210459.3210471},
urldate = {2022-03-14},
abstract = {Multitasking has always been an inherent part of so ware development and is known as the primary source of interruptions due to task switching in so ware development teams. Developing so ware involves a mix of analytical and creative work, and requires a signi cant load on brain functions, such as working memory and decision making. us, task switching in the context of so ware development imposes a cognitive load that causes so ware developers to lose focus and concentration while working thereby taking a toll on productivity. To investigate the disruptiveness of task switching and interruptions in so ware development projects, and to understand the reasons for and perceptions of the disruptiveness of task switching we used a mixed-methods approach including a longitudinal data analysis on 4,910 recorded tasks of 17 professional so ware developers, and a survey of 132 so ware developers. We found that, compared to task-speci c factors (e.g. priority, level, and temporal stage), contextual factors such as interruption type (e.g. self/external), time of day, and task type and context are a more potent determinant of task switching disruptiveness in so ware development tasks. Furthermore, while most survey respondents believe external interruptions are more disruptive than self-interruptions, the results of our retrospective analysis reveals otherwise. We found that self-interruptions (i.e. voluntary task switchings) are more disruptive than external interruptions and have a negative e ect on the performance of the interrupted tasks. Finally, we use the results of both studies to provide a set of comparative vulnerability and interaction pa erns which can be used as a mean to guide decision-making and forecasting the consequences of task switching in so ware development teams.},
isbn = {978-1-4503-6403-4},
langid = {english},
file = {/Users/ysander/Zotero/storage/27AV3E53/Abad et al. - 2018 - Task Interruption in Software Development Projects.pdf}
}
@misc{adermannComposer,
title = {Composer},
author = {Adermann, Nils and Boggiano, Jordi},
url = {https://getcomposer.org/},
urldate = {2022-05-24},
abstract = {A Dependency Manager for PHP},
file = {/Users/ysander/Zotero/storage/V9BBE2SY/getcomposer.org.html}
}
@misc{AllDeveloperTools,
title = {All {{Developer Tools}} and {{Products}} by {{JetBrains}}},
journal = {JetBrains},
url = {https://www.jetbrains.com/products/},
urldate = {2022-02-19},
langid = {english},
file = {/Users/ysander/Zotero/storage/72YCIQTQ/products.html}
}
@misc{amannRustDynamicDispatching2020,
title = {Rust {{Dynamic Dispatching}} Deep-Dive},
author = {Amann, Marco},
year = {2020},
month = feb,
journal = {Digital Frontiers{$\mkern1mu$}\textemdash{$\mkern1mu$}Das Blog},
url = {https://medium.com/digitalfrontiers/rust-dynamic-dispatching-deep-dive-236a5896e49b},
urldate = {2021-10-19},
abstract = {Rust praises itself as being capable of creating some of the fastest executables, but does this hold for dynamic dispatching? A deep-dive.},
langid = {english},
file = {/Users/ysander/Zotero/storage/T94HTCH4/rust-dynamic-dispatching-deep-dive-236a5896e49b.html}
}
@misc{ArchitectureOpenSource,
title = {The {{Architecture}} of {{Open Source Applications}}: {{LLVM}}},
url = {http://www.aosabook.org/en/llvm.html},
urldate = {2022-02-24},
file = {/Users/ysander/Zotero/storage/CCH2G8TR/llvm.html}
}
@article{arefeen2019continuous,
title = {Continuous Integration Using Gitlab},
author = {Arefeen, Mohammed Shamsul and Schiller, Michael},
year = {2019},
journal = {Undergraduate Research in Natural and Clinical Science and Technology Journal},
volume = {3},
pages = {1--6}
}
@misc{authoritySetuptoolsEasilyDownload,
title = {Setuptools: {{Easily}} Download, Build, Install, Upgrade, and Uninstall {{Python}} Packages},
shorttitle = {Setuptools},
author = {Authority, Python Packaging},
url = {https://github.com/pypa/setuptools},
urldate = {2022-01-02},
copyright = {MIT License},
keywords = {CPAN;,distutils;,eggs;,management,package;,PyPI;,Software Development - Libraries - Python Modules,System - Archiving - Packaging,System - Systems Administration,Utilities}
}
@misc{AWSConsoleSignup,
title = {{{AWS Console}} - {{Signup}}},
url = {https://portal.aws.amazon.com/billing/signup#/start},
urldate = {2022-01-03}
}
@book{bettiniImplementingDomainspecificLanguages2016,
title = {Implementing Domain-Specific Languages with {{Xtext}} and {{Xtend}}: Learn How to Implement a {{DSL}} with {{Xtext}} and {{Xtend}} Using Easy-to-Understand Examples and Best Practices},
shorttitle = {Implementing Domain-Specific Languages with {{Xtext}} and {{Xtend}}},
author = {Bettini, Lorenzo and Efftinge, Sven},
year = {2016},
series = {Packt Open Source Community Experience Distilled},
edition = {Second edition},
publisher = {{Packt Publishing}},
address = {{Birmingham Mumbai}},
isbn = {978-1-78646-496-5},
langid = {english},
file = {/Users/ysander/Zotero/storage/I9NIWQ47/Bettini and Efftinge - 2016 - Implementing domain-specific languages with Xtext .pdf}
}
@article{beyerCPAcheckerToolConfigurable2009,
title = {{{CPAchecker}}: {{A Tool}} for {{Configurable Software Verification}}},
shorttitle = {{{CPAchecker}}},
author = {Beyer, Dirk and Keremoglu, M. Erkan},
year = {2009},
month = jan,
journal = {arXiv:0902.0019 [cs]},
eprint = {0902.0019},
eprinttype = {arxiv},
primaryclass = {cs},
url = {http://arxiv.org/abs/0902.0019},
urldate = {2022-02-24},
abstract = {Configurable software verification is a recent concept for expressing different program analysis and model checking approaches in one single formalism. This paper presents CPAchecker, a tool and framework that aims at easy integration of new verification components. Every abstract domain, together with the corresponding operations, is required to implement the interface of configurable program analysis (CPA). The main algorithm is configurable to perform a reachability analysis on arbitrary combinations of existing CPAs. The major design goal during the development was to provide a framework for developers that is flexible and easy to extend. We hope that researchers find it convenient and productive to implement new verification ideas and algorithms using this platform and that it advances the field by making it easier to perform practical experiments. The tool is implemented in Java and runs as command-line tool or as Eclipse plug-in. We evaluate the efficiency of our tool on benchmarks from the software model checker BLAST. The first released version of CPAchecker implements CPAs for predicate abstraction, octagon, and explicit-value domains. Binaries and the source code of CPAchecker are publicly available as free software.},
archiveprefix = {arXiv},
keywords = {Computer Science - Programming Languages,Computer Science - Software Engineering,D.2.4,F.3.1},
file = {/Users/ysander/Zotero/storage/2D6KGBDE/Beyer and Keremoglu - 2009 - CPAchecker A Tool for Configurable Software Verif.pdf;/Users/ysander/Zotero/storage/NKETYEQT/0902.html}
}
@misc{beyerCPAcheckerVerifierCloud,
title = {{{CPAchecker In}} the {{VerifierCloud}}},
author = {Beyer, Dirk},
url = {https://vcloud.sosy-lab.org/cpachecker/webclient/help/},
urldate = {2022-02-24},
howpublished = {Software Systems Lab LMU},
file = {/Users/ysander/Zotero/storage/VJXFLWW4/help.html}
}
@book{beyerSiteReliabilityWorkbook2018,
title = {The {{Site Reliability Workbook}}: {{Practical Ways}} to {{Implement SRE}}},
shorttitle = {The {{Site Reliability Workbook}}},
author = {Beyer, Betsy and Murphy, Niall Richard and Rensin, David K. and Kawahara, Kent and Thorne, Stephen},
year = {2018},
month = jul,
publisher = {{"O'Reilly Media, Inc."}},
abstract = {In 2016, Google's Site Reliability Engineering book ignited an industry discussion on what it means to run production services today\textemdash and why reliability considerations are fundamental to service design. Now, Google engineers who worked on that bestseller introduce The Site Reliability Workbook, a hands-on companion that uses concrete examples to show you how to put SRE principles and practices to work in your environment.This new workbook not only combines practical examples from Google's experiences, but also provides case studies from Google's Cloud Platform customers who underwent this journey. Evernote, The Home Depot, The New York Times, and other companies outline hard-won experiences of what worked for them and what didn't.Dive into this workbook and learn how to flesh out your own SRE practice, no matter what size your company is.You'll learn:How to run reliable services in environments you don't completely control\textemdash like cloudPractical applications of how to create, monitor, and run your services via Service Level ObjectivesHow to convert existing ops teams to SRE\textemdash including how to dig out of operational overloadMethods for starting SRE from either greenfield or brownfield},
googlebooks = {fElmDwAAQBAJ},
isbn = {978-1-4920-2945-8},
langid = {english}
}
@incollection{beyerSoftwareVerificationGoogle2014,
title = {Software {{Verification}} in the {{Google App-Engine Cloud}}},
booktitle = {Computer {{Aided Verification}}},
author = {Beyer, Dirk and Dresler, Georg and Wendler, Philipp},
editor = {Hutchison, David and Kanade, Takeo and Kittler, Josef and Kleinberg, Jon M. and Kobsa, Alfred and Mattern, Friedemann and Mitchell, John C. and Naor, Moni and Nierstrasz, Oscar and Pandu Rangan, C. and Steffen, Bernhard and Terzopoulos, Demetri and Tygar, Doug and Weikum, Gerhard and Biere, Armin and Bloem, Roderick},
year = {2014},
volume = {8559},
pages = {327--333},
publisher = {{Springer International Publishing}},
address = {{Cham}},
doi = {10.1007/978-3-319-08867-9_21},
url = {http://link.springer.com/10.1007/978-3-319-08867-9_21},
urldate = {2022-02-24},
abstract = {Software verification often requires a large amount of computing resources. In the last years, cloud services emerged as an inexpensive, flexible, and energy-efficient source of computing power. We have investigated if such cloud resources can be used effectively for verification. We chose the platform-as-a-service offer Google App Engine and ported the open-source verification framework CPAchecker to it. We provide our new verification service as a web front-end to users who wish to solve single verification tasks (tutorial usage), and an API for integrating the service into existing verification infrastructures (massively parallel bulk usage). We experimentally evaluate the effectiveness of this service and show that it can be successfully used to offload verification work to the cloud, considerably sparing local verification resources.},
isbn = {978-3-319-08866-2 978-3-319-08867-9},
langid = {english},
file = {/Users/ysander/Zotero/storage/H6THGF84/Beyer et al. - 2014 - Software Verification in the Google App-Engine Clo.pdf}
}
@article{birrellImplementingRemoteProcedure1984,
title = {Implementing {{Remote Procedure Calls}}},
author = {Birrell, Andrew D and Nelson, Bruce Jay},
year = {1984},
journal = {ACM Transactions on Computer Systems},
volume = {2},
number = {1},
pages = {21},
langid = {english},
file = {/Users/ysander/Zotero/storage/DTAFTJ6N/Birrell and Nelson - 1984 - Implementing Remote Procedure Calls.pdf}
}
@misc{BlazingFastCloud,
title = {Blazing Fast Cloud Developer Environments},
journal = {GitHub},
url = {https://github.com/features/codespaces},
urldate = {2021-12-21},
abstract = {Codespaces has the full power of Visual Studio Code, including the editor, terminal, debugger, settings sync, and any extension.},
langid = {english},
file = {/Users/ysander/Zotero/storage/JXXGJSKB/codespaces.html}
}
@article{bourMerlinLanguageServer2018a,
title = {Merlin: {{A Language Server}} for {{OCaml}} ({{Experience Report}})},
shorttitle = {Merlin},
author = {Bour, Fr{\'e}d{\'e}ric and Refis, Thomas and Scherer, Gabriel},
year = {2018},
month = jul,
journal = {Proceedings of the ACM on Programming Languages},
volume = {2},
number = {ICFP},
eprint = {1807.06702},
eprinttype = {arxiv},
pages = {1--15},
issn = {2475-1421},
doi = {10.1145/3236798},
url = {http://arxiv.org/abs/1807.06702},
urldate = {2021-11-12},
abstract = {We report on the experience of developing Merlin, a language server for the OCaml programming language in development since 2013. Merlin is a daemon that connects to your favourite text editor and provides services that require a fine-grained understanding of the programming language syntax and static semantics: instant feedback on warnings and errors, autocompletion, `type of the code under the cursor', `go to definition', etc. Language servers need to handle incomplete and partially-incorrect programs, and try to be incremental to minimize recomputation after small editing actions. Merlin was built by carefully adapting the existing tools (the OCamllex lexer and Menhir parser generators) to better support incrementality, incompleteness and error handling. These extensions are elegant and general, as demonstrated by the interesting, unplanned uses that the OCaml community found for them. They could be adapted to other frontends -- in any language. Besides incrementality, we discuss the way Merlin communicates with editors, describe the design decisions that went into some demanding features and report on some of the non-apparent difficulties in building good editor support, emerging from expressive programming languages or frustrating tooling ecosystems. We expect this experience report to be of interest to authors of interactive language tooling for any programming language; many design choices may be reused, and some hard-won lessons can serve as warnings.},
archiveprefix = {arXiv},
langid = {english},
keywords = {Computer Science - Programming Languages},
file = {/Users/ysander/Zotero/storage/GSC8FGYR/Bour et al. - 2018 - Merlin A Language Server for OCaml (Experience Re.pdf}
}
@misc{BrowseSearchPackages,
title = {Browse and Search Packages | {{Hackage}}},
url = {https://hackage.haskell.org/packages/browse?terms=hls},
urldate = {2022-05-23},
file = {/Users/ysander/Zotero/storage/BWBSGX4B/browse.html}
}
@book{bucchiaroneDomainSpecificLanguagesPractice2021,
title = {Domain-{{Specific Languages}} in {{Practice}}: With {{JetBrains MPS}}},
shorttitle = {Domain-{{Specific Languages}} in {{Practice}}},
editor = {Bucchiarone, Antonio and Cicchetti, Antonio and Ciccozzi, Federico and Pierantonio, Alfonso},
year = {2021},
publisher = {{Springer International Publishing}},
address = {{Cham}},
doi = {10.1007/978-3-030-73758-0},
url = {https://link.springer.com/10.1007/978-3-030-73758-0},
urldate = {2022-05-08},
isbn = {978-3-030-73757-3 978-3-030-73758-0},
langid = {english},
file = {/Users/ysander/Zotero/storage/37UK94ZK/Bucchiarone et al. - 2021 - Domain-Specific Languages in Practice with JetBra.pdf}
}
@misc{BuildingLSIFIndexer,
title = {Building an {{LSIF Indexer}} for a {{Low-Code Platform}}},
journal = {Airkit},
url = {https://www.airkit.com/building-language-server-index-format-indexer/},
urldate = {2022-02-17},
abstract = {Engineer Brian Shih shares his thoughts on what low-code is and takes us on his journey of building a LSIF (Language Server Index Format) indexer},
langid = {american},
keywords = {rw}
}
@inproceedings{bunderDecouplingLanguageEditor2019,
title = {Decoupling {{Language}} and {{Editor}} - {{The Impact}} of the {{Language Server Protocol}} on {{Textual Domain-Specific Languages}}:},
shorttitle = {Decoupling {{Language}} and {{Editor}} - {{The Impact}} of the {{Language Server Protocol}} on {{Textual Domain-Specific Languages}}},
booktitle = {Proceedings of the 7th {{International Conference}} on {{Model-Driven Engineering}} and {{Software Development}}},
author = {B{\"u}nder, Hendrik},
year = {2019},
pages = {129--140},
publisher = {{SCITEPRESS - Science and Technology Publications}},
address = {{Prague, Czech Republic}},
doi = {10.5220/0007556301290140},
url = {http://www.scitepress.org/DigitalLibrary/Link.aspx?doi=10.5220/0007556301290140},
urldate = {2021-09-07},
isbn = {978-989-758-358-2},
langid = {english},
file = {/Users/ysander/Zotero/storage/JRD64FEI/Bünder - 2019 - Decoupling Language and Editor - The Impact of the.pdf}
}
@inproceedings{bunderMultieditorSupportDomainSpecific2020,
title = {Towards {{Multi-editor Support}} for {{Domain-Specific Languages Utilizing}} the {{Language Server Protocol}}},
booktitle = {Model-{{Driven Engineering}} and {{Software Development}}},
author = {B{\"u}nder, Hendrik and Kuchen, Herbert},
editor = {Hammoudi, Slimane and Pires, Lu{\'i}s Ferreira and Seli{\'c}, Bran},
year = {2020},
series = {Communications in {{Computer}} and {{Information Science}}},
pages = {225--245},
publisher = {{Springer International Publishing}},
address = {{Cham}},
doi = {10.1007/978-3-030-37873-8_10},
abstract = {In model-driven software development (MDSD) projects, frequently domain experts and developers work together on the same model. However, they have quite different preferences concerning tools for working with a model. While developers require a powerful integrated development environment (IDE), domain experts are overwhelmed by the amount of functionality of an IDE and its confusing user interface. They prefer a simple editor, often provided as a web application, which does not require a local installation. Currently, both stakeholders typically agree on a common tool, which is frustrating for at least one of them. The Language Server Protocol (LSP) is a standard that aims to include language smarts into simple editors without turning them into IDEs. Originally, it has been designed for programming languages. In the present paper, we will give evidence based on a case study and a corresponding SWOT analysis that it is even more beneficial for a textual domain-specific language (DSL) as it is often used in MDSD. We will focus on the language workbench Xtext which supports the LSP. In particular, we will investigate how the LSP can be used to integrate a DSL into different development tools (editors and IDEs). Supplementing the SWOT analysis, we have also evaluated the practical relevance of the LSP.},
isbn = {978-3-030-37873-8},
langid = {english},
keywords = {Case study,Model-driven development language server protocol,Textual domain-specific languages},
file = {/Users/ysander/Zotero/storage/9Q9JDDBE/Bünder and Kuchen - 2020 - Towards Multi-editor Support for Domain-Specific L.pdf}
}
@book{burnetteEclipseIDEPocket2005,
title = {Eclipse {{IDE}}: Pocket Guide},
shorttitle = {Eclipse {{IDE}}},
author = {Burnette, Ed},
year = {2005},
edition = {1st ed},
publisher = {{O'Reilly}},
address = {{Sebastopol, CA}},
isbn = {978-0-596-10065-0},
lccn = {MLCS 2006/10700 (Q)}
}
@article{burnsKubernetesRunning,
title = {Kubernetes: {{Up}} and {{Running}}},
author = {Burns, Brendan and Beda, Joe and Hightower, Kelsey},
pages = {277},
langid = {english},
file = {/Users/ysander/Zotero/storage/J4LY2X7M/Burns et al. - Kubernetes Up and Running.pdf}
}
@misc{cebronCustomLanguageSupport,
title = {Custom {{Language Support}}},
author = {C{\'e}bron, Yann},
journal = {IntelliJ Platform Plugin SDK Help},
url = {https://plugins.jetbrains.com/docs/intellij/custom-language-support.html},
urldate = {2022-02-20},
langid = {american},
file = {/Users/ysander/Zotero/storage/BZDZMX5Y/custom-language-support.html}
}
@article{charollaisECMA4042ndEdition2017,
title = {{{ECMA-404}}, 2nd Edition, {{December}} 2017},
author = {Charollais, Patrick},
year = {2017},
pages = {16},
langid = {english},
file = {/Users/ysander/Zotero/storage/DUAZJPCR/Charollais - 2017 - ECMA-404, 2nd edition, December 2017.pdf}
}
@article{chenEmpiricalStudyProgramming2005,
title = {An Empirical Study of Programming Language Trends},
author = {Chen, Yaofei and Dios, R. and Mili, A. and Wu, Lan and Wang, Kefei},
year = {2005},
month = may,
journal = {IEEE Software},
volume = {22},
number = {3},
pages = {72--79},
issn = {1937-4194},
doi = {10.1109/MS.2005.55},
abstract = {Predicting software engineering trends is a strategically important asset for both developers and managers, but it's also difficult, due to the wide range of factors involved and the complexity of their interactions. This paper reveals some interesting trends and a method for studying other important software engineering trends. This article trades breadth for depth by focusing on a small, compact set of trends involving 17 high-level programming languages. We quantified many of their relevant factors, and then collected data on their evolution over 10 years. By applying statistical methods to this data, we aim to gain insight into what does and does not make a language successful.},
keywords = {Computer languages,empirical software engineering,Engineering management,History,ISO standards,Java,programming languages,Programming profession,Software development management,Software engineering,software engineering trends,statistical modeling},
file = {/Users/ysander/Zotero/storage/ZS4FW7Y5/Chen et al. - 2005 - An empirical study of programming language trends.pdf;/Users/ysander/Zotero/storage/HTAG5DY9/1438333.html}
}
@misc{ClangLanguageFamily,
title = {Clang {{C Language Family Frontend}} for {{LLVM}}},
url = {https://clang.llvm.org/},
urldate = {2022-05-01},
file = {/Users/ysander/Zotero/storage/P72RNFNP/clang.llvm.org.html}
}
@misc{CodenvyMicrosoftRed2016,
title = {Red {{Hat}}, {{Codenvy}} and {{Microsoft Collaborate}} on {{Language Server Protocol}}},
author = {{Red Hat}},
year = {2016},
month = jun,
url = {https://www.redhat.com/en/about/press-releases/red-hat-codenvy-and-microsoft-collaborate-language-server-protocol},
urldate = {2022-05-22},
abstract = {Today, Codenvy, Microsoft and Red Hat, Inc. announced adoption of a language server protocol project representing a collaborative effort to provide a common way to integrate programming languages across code editors and integrated development environments (IDEs). Announced during DevNation 2016, this protocol extends developer flexibility and productivity by enabling a rich editing experience within a variety of tools for different programming languages.``Historically, most programming languages have only been optimized for a single tool. This has prevented developers from using the editors they know and love, and has limited opportunities for language providers to reach a wide audience,'' said Tyler Jewell, Codenvy CEO and Eclipse Che project lead. ``With a common protocol supported by Microsoft, Red Hat and Codenvy, developers can gain access to intelligence for any language within their favorite tools."The Language Server Protocol is an open source project that defines a JSON-based data exchange protocol for language servers, hosted on GitHub and licensed under the creative commons and MIT licenses. By promoting interoperability between editors and language servers, the protocol enables developers to access intelligent programming language assistants \textendash{} such as find by symbol, syntax analysis, code completion, go to definition, outlining and refactoring \textendash{} within their editor or IDE of choice.``We have defined the common language server protocol after integrating the OmniSharp for C\# and TypeScript servers into VS Code,'' said Erich Gamma, Microsoft Distinguished Engineer. ``Having done a language server integration twice, it became obvious that a common protocol is a win-win for both tool and language providers: in this way, any language provider can make their language support available so that it is easily consumable by any tool provider.''The Language Server Protocol collaboration enables: Developer flexibility and choice: Developers can access rich editing experiences across new programming languages, while continuing to use their preferred tools. Multiple operating systems: Programming language providers can support multiple tools across a variety of operating systems, maximizing their reach and relevance. Editor support: Microsoft Visual Studio Code and Eclipse Che, the next-generation Eclipse IDE, have added support for the protocol. Many programming languages: A number of programming language servers are available today, including JSON, C++, and Powershell, which are available in VS Code or VS Code extensions. In addition, more language servers are planned to support the protocol later this year, including C\# by the Omnisharp project, xText and R by Typefox, JavaFX by Ensime and CSS by Microsoft. Red Hat has open sourced a project working to provide the first standalone Java language server which it proposes to donate to the Eclipse Foundation. Open collaboration: Codenvy, Microsoft and Red Hat are committed to developing this protocol in collaboration with the open source community. Hosted on a public repository, anyone can submit feedback or contribute pull requests to enhance and refine the project. Language server registry: Language servers are published as part of a global registry, built by Codenvy as an Eclipse project and hosted by the Eclipse Foundation, to make language servers discoverable for any tool to consume.``We see a tremendous opportunity to improve the way software is created, especially in the cloud, and we are focused on bringing that innovation to our customers in a way they can more easily adopt. Developer choice is a key area for us and interoperability of programming languages and tools is an important part of Red Hat's developer strategy,'' said Harry Mower, senior director, Developer Programs, Red Hat.The language server protocol is available today. For more information, visit: Protocol Repository Visual Studio Code blog post Videos of Eclipse Che FAQConnect with Red Hat Learn more about Red Hat Get more news in the Red Hat newsroom Read the Red Hat blog Follow Red Hat on Twitter Join Red Hat on Facebook Watch Red Hat videos on YouTube Join Red Hat on Google+ Follow Red Hat on LinkedIn},
langid = {english},
file = {/Users/ysander/Zotero/storage/CIZXW5EM/red-hat-codenvy-and-microsoft-collaborate-language-server-protocol.html}
}
@misc{CodeSandbox,
title = {{{CodeSandbox}}},
journal = {CodeSandbox},
url = {https://codesandbox.io/s/pensive-cerf-wof3l?file=/elm.json},
urldate = {2021-12-25},
abstract = {CodeSandbox is an online editor tailored for web applications.},
langid = {english},
file = {/Users/ysander/Zotero/storage/IVF6JM7G/pensive-cerf-wof3l.html}
}
@book{combemaleSoftwareLanguageEngineering2014,
title = {Software {{Language Engineering}}: 7th {{International Conference}}, {{SLE}} 2014, {{V\"aster\aa s}}, {{Sweden}}, {{September}} 15-16, 2014. {{Proceedings}}},
shorttitle = {Software {{Language Engineering}}},
editor = {Combemale, Beno{\^i}t and Pearce, David J. and Barais, Olivier and Vinju, Jurgen J.},
year = {2014},
series = {Lecture {{Notes}} in {{Computer Science}}},
volume = {8706},
publisher = {{Springer International Publishing}},
address = {{Cham}},
doi = {10.1007/978-3-319-11245-9},
url = {http://link.springer.com/10.1007/978-3-319-11245-9},
urldate = {2022-02-20},
isbn = {978-3-319-11244-2 978-3-319-11245-9},
langid = {english},
file = {/Users/ysander/Zotero/storage/XKDSTILI/Combemale et al. - 2014 - Software Language Engineering 7th International C.pdf}
}
@misc{ConfigurationReferenceVue,
title = {Configuration {{Reference}} | {{Vue CLI}}},
url = {https://cli.vuejs.org/config/#vue-config-js},
urldate = {2022-01-02},
file = {/Users/ysander/Zotero/storage/SNBCT5MR/config.html}
}
@inproceedings{coulonModularDistributedIDE2020c,
title = {Modular and Distributed {{IDE}}},
booktitle = {Proceedings of the 13th {{ACM SIGPLAN International Conference}} on {{Software Language Engineering}}},
author = {Coulon, Fabien and Auvolat, Alex and Combemale, Benoit and Bromberg, Y{\'e}rom-David and Ta{\"i}ani, Fran{\c c}ois and Barais, Olivier and Plouzeau, No{\"e}l},
year = {2020},
month = nov,
pages = {270--282},
publisher = {{ACM}},
address = {{Virtual USA}},
doi = {10.1145/3426425.3426947},
url = {https://dl.acm.org/doi/10.1145/3426425.3426947},
urldate = {2021-12-21},
abstract = {Integrated Development Environments (IDEs) are indispensable companions to programming languages. They are increasingly turning towards Web-based infrastructure. The rise of a protocol such as the Language Server Protocol (LSP) that standardizes the separation between a languageagnostic IDE, and a language server that provides all language services (e.g., auto completion, compiler...) has allowed the emergence of high quality generic Web components to build the IDE part that runs in the browser. However, all language services require different computing capacities and response times to guarantee a user-friendly experience within the IDE. The monolithic distribution of all language services prevents to leverage on the available execution platforms (e.g., local platform, application server, cloud). In contrast with the current approaches that provide IDEs in the form of a monolithic client-server architecture, we explore in this paper the modularization of all language services to support their individual deployment and dynamic adaptation within an IDE. We evaluate the performance impact of the distribution of the language services across the available execution platforms on four EMF-based languages, and demonstrate the benefit of a custom distribution.},
isbn = {978-1-4503-8176-5},
langid = {english},
file = {/Users/ysander/Zotero/storage/Z6LUXX9T/Coulon et al. - 2020 - Modular and distributed IDE.pdf}
}
@misc{CUE,
title = {{{CUE}}},
url = {https://cuelang.org/},
urldate = {2022-01-01},
abstract = {Validate and define text-based and dynamic configuration},
howpublished = {Cue Language Community},
keywords = {rw},
file = {/Users/ysander/Zotero/storage/9C3GEL7V/cuelang.org.html}
}
@inproceedings{dalmassoSurveyComparisonEvaluation2013,
title = {Survey, Comparison and Evaluation of Cross Platform Mobile Application Development Tools},
booktitle = {2013 9th {{International Wireless Communications}} and {{Mobile Computing Conference}} ({{IWCMC}})},
author = {Dalmasso, Isabelle and Datta, Soumya Kanti and Bonnet, Christian and Nikaein, Navid},
year = {2013},
month = jul,
pages = {323--328},
issn = {2376-6506},
doi = {10.1109/IWCMC.2013.6583580},
abstract = {Mobile application development is becoming more challenging with diverse platforms and their software development kits. In order to reduce the cost of development and reach out to maximum users across several platforms, developers are migrating to cross platform application development tools. In this paper, we provide several decision criteria beyond the portability concerns for choosing suitable cross platform tool for application development. The desirable requirements in a cross platform framework are identified. A general architecture for cross platform application development is discussed. Then a survey of several write once run anywhere tools (PhoneGap, Titanium, Sencha Touch) are provided along with a classification and comparison among the tools. To examine the performance in terms of CPU, memory usage, power consumption, Android test applications are developed using such tools. It is found that PhoneGap consumes less memory, CPU and power since it does not included dedicated UI components. Finally the paper summarizes the contributions and concludes with some future directions.},
keywords = {Android,Cascading style sheets,cross platform tools,Documentation,HTML,Mobile communication,mobile development,PhoneGap,Power demand,Smart phones,Titanium},
file = {/Users/ysander/Zotero/storage/5AGAHT6N/Dalmasso et al. - 2013 - Survey, comparison and evaluation of cross platfor.pdf;/Users/ysander/Zotero/storage/XMPHGGE8/6583580.html}
}
@misc{DebugAdapters,
title = {Debug {{Adapter Protocol}}},
author = {{Microsoft}},
journal = {Official page for Debug Adapter Protocol},
url = {https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/},
urldate = {2022-03-03},
file = {/Users/ysander/Zotero/storage/5PCEXNC6/adapters.html}
}
@inproceedings{dejongeCosteffectiveMaintenanceTools2001,
title = {Cost-Effective Maintenance Tools for Proprietary Languages},
booktitle = {Proceedings {{IEEE International Conference}} on {{Software Maintenance}}. {{ICSM}} 2001},
author = {{de Jonge}, M. and Monajemi, R.},
year = {2001},
month = nov,
pages = {240--249},
issn = {1063-6773},
doi = {10.1109/ICSM.2001.972737},
abstract = {Maintenance of proprietary languages and corresponding tooling is expensive. Postponing maintenance to reduce these costs is an often applied, short-term solution which eventually may lead to an unoperational toolset. The paper describes a case study carried out in cooperation with Lucent Technologies where maintenance cost is decreased by simplifying the development process of languages and tools. The development process is simplified by using a language-centered software engineering approach which increases software reuse and language dependent code generation. The case study was concerned with Lucent's proprietary SDL dialect and involved the re-engineering of an SDL grammar and the construction of an SDL documentation generator.},
keywords = {Computer industry,Computer languages,Construction industry,Costs,Documentation,Software engineering,Software maintenance,Software standards,Software tools,Standards development},
file = {/Users/ysander/Zotero/storage/VTUGFZI4/de Jonge and Monajemi - 2001 - Cost-effective maintenance tools for proprietary l.pdf;/Users/ysander/Zotero/storage/AK4W6E98/972737.html}
}
@article{desrivieresEclipsePlatformIntegrating2004,
title = {Eclipse: {{A}} Platform for Integrating Development Tools. {{IBM Systems Journal}}, 43(2), 371-383},
shorttitle = {Eclipse},
author = {{des Rivieres}, Jim and Wiegand, J.},
year = {2004},
month = jan,
journal = {IBM Systems Journal},
volume = {43},
pages = {371--383},
doi = {10.1147/sj.432.0371},
abstract = {Modern n-tier applications are developed using components implemented in many different technologies, including HTML, Java\texttrademark, JavaServer Pages\texttrademark{} (JSP\texttrademark ), Enterprise JavaBeans\texttrademark, connectors, COBOL or PL/1 programs, and relational database schemas. Creating an effective integrated development environment (IDE) for use in programming these applications presents some special challenges because a large number of different tool technologies have to be tightly integrated in support of development task flows. In order to meet these challenges, the Eclipse Platform was designed to serve as the common basis for diverse IDE-based products, providing open APIs (application programming interfaces) to facilitate this integration. This paper describes the overall architecture of the Eclipse Platform and the www.eclipse.org open source organization and consortium created to facilitate broad industry adoption of this platform.}
}
@misc{DhallConfigurationLanguage,
title = {The {{Dhall}} Configuration Language},
url = {https://dhall-lang.org/},
urldate = {2022-01-01},
abstract = {Maintainable configuration files},
howpublished = {Dhall}
}
@article{dolstraNixSafePolicyFree2004,
title = {Nix: {{A Safe}} and {{Policy-Free System}} for {{Software Deployment}}},
author = {Dolstra, Eelco and {de Jonge}, Merijn and Visser, Eelco},
year = {2004},
pages = {14},
abstract = {Existing systems for software deployment are neither safe nor sufficiently flexible. Primary safety issues are the inability to enforce reliable specification of component dependencies, and the lack of support for multiple versions or variants of a component. This renders deployment operations such as upgrading or deleting components dangerous and unpredictable. A deployment system must also be flexible (i.e., policy-free) enough to support both centralised and local package management, and to allow a variety of mechanisms for transferring components. In this paper we present Nix, a deployment system that addresses these issues through a simple technique of using cryptographic hashes to compute unique paths for component instances.},
langid = {english},
file = {/Users/ysander/Zotero/storage/TSISEHXN/Dolstra et al. - 2004 - Nix A Safe and Policy-Free System for Software De.pdf}
}
@phdthesis{dolstraPurelyFunctionalSoftware2006,
title = {The Purely Functional Software Deployment Model},
author = {Dolstra, Eelco},
year = {2006},
address = {{S.l.}},
isbn = {9789039341308},
langid = {english},
school = {[s.n.]},
annotation = {OCLC: 71702886},
file = {/Users/ysander/Zotero/storage/W9GNXV8W/Dolstra - 2006 - The purely functional software deployment model.pdf}
}
@article{dosreisPrincipledCompleteEfficient2011,
title = {A {{Principled}}, {{Complete}}, and {{Efficient Representation}} of {{C}}++},
author = {Dos Reis, Gabriel and Stroustrup, Bjarne},
year = {2011},
month = sep,
journal = {Mathematics in Computer Science},
volume = {5},
number = {3},
pages = {335--356},
issn = {1661-8270, 1661-8289},
doi = {10.1007/s11786-011-0094-1},
url = {http://link.springer.com/10.1007/s11786-011-0094-1},
urldate = {2021-08-16},
abstract = {We present a systematic representation of C++, called IPR, for complete semantic analysis and semantics-based program transformations. We describe the ideas and design principles that shaped the IPR. In particular, we describe how general type-based unification is key to minimal compact representation, fast type-safe traversal, and scalability. For example, the representation of a fairly typical non-trivial C++ program in GCC 3.4.2 was 32 times larger than its IPR representation; this led to significant improvements to GCC. IPR is general enough to handle real-world programs involving many translation units, archaic programming styles, and generic programming using C++0x extensions that affect the type system. The difficult issue of how to represent irregular (ad hoc) features in a systematic (non ad hoc) manner is among the key contributions of this paper. The IPR data structure can represent all of C++ with just 157 simple node types; to compare the ISO C++ grammar has over 700 productions. The IPR is used for a variety of program analysis and transformation tasks, such as visualization, loop simplification, and concept extraction. Finally, we report impacts of this work on existing C++ compilers.},
langid = {english},
file = {/Users/ysander/Zotero/storage/GD5BCKAX/Dos Reis and Stroustrup - 2011 - A Principled, Complete, and Efficient Representati.pdf}
}
@incollection{duarteRetrofittingTypestatesRust2021,
title = {Retrofitting {{Typestates}} into {{Rust}}},
booktitle = {25th {{Brazilian Symposium}} on {{Programming Languages}}},
author = {Duarte, Jos{\'e} and Ravara, Ant{\'o}nio},
year = {2021},
month = sep,
pages = {83--91},
publisher = {{Association for Computing Machinery}},
address = {{New York, NY, USA}},
url = {https://doi.org/10.1145/3475061.3475082},
urldate = {2022-01-09},
abstract = {As software permeates our lives, bugs become increasingly expensive; the best way to reduce their cost is to reduce the number of bugs. Of course, this is easier said than done and, at best, we can go after their root causes to mitigate them. One of such causes is state, whether it is the state of a light bulb (i.e. on/off), or the state of a complex protocol, reasoning about state is a complex process which developers are required to do with subpar tools. Ideally, we want to specify constraints and have the computer reason for us; typestates enable developers to describe states using the type system and allow the compiler to reason about them. We propose an approach to bring typestates to Rust, without any external tools, leveraging only Rust's type and macro systems. Our approach provides a macro-based domain-specific language which enables developers to easily express and implement typestates, along with certain state machine safety guarantees, it is open-source and available at https://github.com/rustype/typestate-rs.},
isbn = {978-1-4503-9062-0},
keywords = {Behavioral Typing,Domain-specific Languages,Macros,Protocol Compliance,Rust,Session Types,Typestates},
file = {/Users/ysander/Zotero/storage/V9VQI2W5/Duarte and Ravara - 2021 - Retrofitting Typestates into Rust.pdf}
}
@misc{EclipseCheKubernetesNative,
title = {Eclipse {{Che}} | {{The Kubernetes-Native IDE}} for {{Developer Teams}}},
url = {https://www.eclipse.org/che/},
urldate = {2021-12-21},
file = {/Users/ysander/Zotero/storage/NEDSPG5F/che.html}
}
@misc{EclipseFP,
title = {{{EclipseFP The Haskell}} Plug-in for {{Eclipse}}},
author = {Moresmau},
url = {https://eclipsefp.github.io/index.html},
urldate = {2022-05-01},
file = {/Users/ysander/Zotero/storage/HHFUMAGP/index.html}
}
@misc{ecmaECMA404,
title = {{{ECMA-404}}},
author = {{ECMA}},
journal = {Ecma International},
url = {https://www.ecma-international.org/publications-and-standards/standards/ecma-404/},
urldate = {2022-05-24},
abstract = {The JSON data interchange syntax - JSON defines a small set of structuring rules for the portable representation of structured data},
langid = {american},
file = {/Users/ysander/Zotero/storage/2Z7EGC97/ecma-404.html}
}
@article{ellisWriteExecuteAssess,
title = {Write, {{Execute}}, {{Assess}}: {{Program Synthesis}} with a {{REPL}}},
author = {Ellis, Kevin and Nye, Maxwell and Pu, Yewen and Sosa, Felix and Tenenbaum, Josh and {Solar-Lezama}, Armando},
pages = {10},
abstract = {We present a neural program synthesis approach integrating components which write, execute, and assess code to navigate the search space of possible programs. We equip the search process with an interpreter or a read-eval-print-loop (REPL), which immediately executes partially written programs, exposing their semantics. The REPL addresses a basic challenge of program synthesis: tiny changes in syntax can lead to huge changes in semantics. We train a pair of models, a policy that proposes the new piece of code to write, and a value function that assesses the prospects of the code written so-far. At test time we can combine these models with a Sequential Monte Carlo algorithm. We apply our approach to two domains: synthesizing text editing programs and inferring 2D and 3D graphics programs.},
langid = {english},
file = {/Users/ysander/Zotero/storage/3E4QL6TK/Ellis et al. - Write, Execute, Assess Program Synthesis with a R.pdf}
}
@misc{ExoticallySizedTypes,
title = {Exotically {{Sized Types}} - {{The Rustonomicon}}},
url = {https://doc.rust-lang.org/nomicon/exotic-sizes.html#zero-sized-types-zsts},
urldate = {2022-03-26},
file = {/Users/ysander/Zotero/storage/RDR6ATL6/exotic-sizes.html}
}
@article{farshidiDecisionModelProgramming2021,
title = {A Decision Model for Programming Language Ecosystem Selection: {{Seven}} Industry Case Studies},
shorttitle = {A Decision Model for Programming Language Ecosystem Selection},
author = {Farshidi, Siamak and Jansen, Slinger and Deldar, Mahdi},
year = {2021},
month = nov,
journal = {Information and Software Technology},
volume = {139},
pages = {106640},
issn = {0950-5849},
doi = {10.1016/j.infsof.2021.106640},
url = {https://www.sciencedirect.com/science/article/pii/S0950584921001051},
urldate = {2021-12-21},
abstract = {Context: Software development is a continuous decision-making process that mainly relies on the software engineer's experience and intuition. One of the essential decisions in the early stages of the process is selecting the best fitting programming language ecosystem based on the project requirements. A significant number of criteria, such as developer availability and consistent documentation, in addition to the number of available options in the market, lead to a challenging decision-making process. As the selection of programming language ecosystems depends on the application to be developed and its environment, a decision model is required to analyze the selection problem using systematic identification and evaluation of potential alternatives for a development project. Method: Recently, we introduced a framework to build decision models for technology selection problems in software production. Furthermore, we designed and implemented a decision support system that uses such decision models to support software engineers with their decision-making problems. This study presents a decision model based on the framework for the programming language ecosystem selection problem. Results: The decision model has been evaluated through seven real-world case studies at seven software development companies. The case study participants declared that the approach provides significantly more insight into the programming language ecosystem selection process and decreases the decision-making process's time and cost. Conclusion: With the decision model, software engineers can more rapidly evaluate and select programming language ecosystems. Having the knowledge in the decision model readily available supports software engineers in making more efficient and effective decisions that meet their requirements and priorities. Furthermore, such reusable knowledge can be employed by other researchers to develop new concepts and solutions for future challenges.},
langid = {english},
keywords = {Decision model,Decision support system,Industry case study,Multi-criteria decision-making,Programming language ecosystem selection,Software production},
file = {/Users/ysander/Zotero/storage/SRNKLTUD/Farshidi et al. - 2021 - A decision model for programming language ecosyste.pdf}
}
@inproceedings{findlerContractsHigherorderFunctions2002,
title = {Contracts for Higher-Order Functions},
booktitle = {Proceedings of the Seventh {{ACM SIGPLAN}} International Conference on {{Functional}} Programming},
author = {Findler, Robert Bruce and Felleisen, Matthias},
year = {2002},
month = sep,
series = {{{ICFP}} '02},
pages = {48--59},
publisher = {{Association for Computing Machinery}},
address = {{New York, NY, USA}},
doi = {10.1145/581478.581484},
url = {https://doi.org/10.1145/581478.581484},
urldate = {2022-02-06},
abstract = {Assertions play an important role in the construction of robust software. Their use in programming languages dates back to the 1970s. Eiffel, an object-oriented programming language, wholeheartedly adopted assertions and developed the "Design by Contract" philosophy. Indeed, the entire object-oriented community recognizes the value of assertion-based contracts on methods.In contrast, languages with higher-order functions do not support assertion-based contracts. Because predicates on functions are, in general, undecidable, specifying such predicates appears to be meaningless. Instead, the functional languages community developed type systems that statically approximate interesting predicates.In this paper, we show how to support higher-order function contracts in a theoretically well-founded and practically viable manner. Specifically, we introduce {$\lambda$}con, a typed lambda calculus with assertions for higher-order functions. The calculus models the assertion monitoring system that we employ in DrScheme. We establish basic properties of the model (type soundness, etc.) and illustrate the usefulness of contract checking with examples from DrScheme's code base.We believe that the development of an assertion system for higher-order functions serves two purposes. On one hand, the system has strong practical potential because existing type systems simply cannot express many assertions that programmers would like to state. On the other hand, an inspection of a large base of invariants may provide inspiration for the direction of practical future type system research.},
isbn = {978-1-58113-487-2},
keywords = {behavioral specifications,contracts,higher-order functions,predicate typing,solfware reliability},
file = {/Users/ysander/Zotero/storage/RZRXGHDM/Findler and Felleisen - 2002 - Contracts for higher-order functions.pdf}
}
@incollection{findlerContractsPairsProjections2006,
title = {Contracts as {{Pairs}} of {{Projections}}},
booktitle = {Functional and {{Logic Programming}}},
author = {Findler, Robert Bruce and Blume, Matthias},
editor = {Hagiya, Masami and Wadler, Philip},
year = {2006},
volume = {3945},
pages = {226--241},
publisher = {{Springer Berlin Heidelberg}},
address = {{Berlin, Heidelberg}},
doi = {10.1007/11737414_16},
url = {http://link.springer.com/10.1007/11737414_16},
urldate = {2022-02-06},
abstract = {Assertion-based contracts provide a powerful mechanism for stating invariants at module boundaries and for enforcing them uniformly. In 2002, Findler and Felleisen showed how to add contracts to higher-order functional languages, allowing programmers to assert invariants about functions as values. Following up in 2004, Blume and McAllester provided a quotient model for contracts. Roughly speaking, their model equates a contract with the set of values that cannot violate the contract. Their studies raised interesting questions about the nature of contracts and, in particular, the nature of the any contract.},
isbn = {978-3-540-33438-5 978-3-540-33439-2},
langid = {english},
file = {/Users/ysander/Zotero/storage/XP9XERUB/Findler and Blume - 2006 - Contracts as Pairs of Projections.pdf}
}
@article{findlerICFP2002Contracts2013a,
title = {{{ICFP}} 2002: {{Contracts}} for Higher-Order Functions},
shorttitle = {{{ICFP}} 2002},
author = {Findler, Robert Bruce and Felleisen, Matthias},
year = {2013},
month = jul,
journal = {ACM SIGPLAN Notices},
volume = {48},
number = {4S},
pages = {34--45},
issn = {0362-1340, 1558-1160},
doi = {10.1145/2502508.2502521},
url = {https://dl.acm.org/doi/10.1145/2502508.2502521},
urldate = {2022-02-06},
abstract = {Assertions play an important role in the construction of robust software. Their use in programming languages dates back to the 1970s. Eiffel, an object-oriented programming language, wholeheartedly adopted assertions and developed the ``Design by Contract'' philosophy. Indeed, the entire object-oriented community recognizes the value of assertion-based contracts on methods.},
langid = {english},
file = {/Users/ysander/Zotero/storage/VRX9JSEF/Findler and Felleisen - 2013 - ICFP 2002 Contracts for higher-order functions.pdf}
}
@article{fluriChangeDistillingTree2007,
title = {Change {{Distilling}}:{{Tree Differencing}} for {{Fine-Grained Source Code Change Extraction}}},
shorttitle = {Change {{Distilling}}},
author = {Fluri, Beat and Wursch, Michael and PInzger, Martin and Gall, Harald},
year = {2007},
month = nov,
journal = {IEEE Transactions on Software Engineering},
volume = {33},
number = {11},
pages = {725--743},
issn = {0098-5589, 1939-3520, 2326-3881},
doi = {10.1109/TSE.2007.70731},
url = {https://ieeexplore.ieee.org/document/4339230/},
urldate = {2021-08-31},
abstract = {A key issue in software evolution analysis is the identification of particular changes that occur across several versions of a program. We present change distilling, a tree differencing algorithm for fine-grained source code change extraction. For that, we have improved the existing algorithm by Chawathe et al. for extracting changes in hierarchically structured data [8]. Our algorithm extracts changes by finding both a match between the nodes of the compared two abstract syntax trees and a minimum edit script that can transform one tree into the other given the computed matching. As a result, we can identify fine-grained change types between program versions according to our taxonomy of source code changes. We evaluated our change distilling algorithm with a benchmark that we developed, which consists of 1,064 manually classified changes in 219 revisions of eight methods from three different open source projects. We achieved significant improvements in extracting types of source code changes: Our algorithm approximates the minimum edit script 45 percent better than the original change extraction approach by Chawathe et al. We are able to find all occurring changes and almost reach the minimum conforming edit script, that is, we reach a mean absolute percentage error of 34 percent, compared to the 79 percent reached by the original algorithm. The paper describes both our change distilling algorithm and the results of our evaluation.},
langid = {english},
file = {/Users/ysander/Zotero/storage/F827A9BC/Fluri et al. - 2007 - Change DistillingTree Differencing for Fine-Grain.pdf}
}
@article{frenzelExperienceReportBuilding2007,
title = {Experience Report: Building an Eclipse-Based {{IDE}} for {{Haskell}}},
shorttitle = {Experience Report},
author = {Frenzel, Leif},
year = {2007},
month = oct,
journal = {ACM SIGPLAN Notices},
volume = {42},
number = {9},
pages = {220--222},
issn = {0362-1340},
doi = {10.1145/1291220.1291186},
url = {https://doi.org/10.1145/1291220.1291186},
urldate = {2022-02-19},
abstract = {This paper summarizes experiences from an open source project that builds a free Haskell IDE based on Eclipse (an open source IDE platform). Eclipse is extensible and has proved to be a good basis for IDEs for several programming languages. Difficulties arise mainly because it is written in Java and requires extensions to be written in Java. This made it hard to reuse existing development tools implemented in Haskell, and turned out to be a considerable obstacle to finding contributors. Several approaches to resolve these issues are described and their advantages and disadvantages discussed.},
file = {/Users/ysander/Zotero/storage/68IZJ66I/Frenzel - 2007 - Experience report building an eclipse-based IDE f.pdf}
}
@article{gagnauxDevelopingMinimalLanguage,
title = {Developing a {{Minimal Language Server}} for the {{Frege Programming Language}}: An {{Experience Report}}},
author = {Gagnaux, Thibault and Konig, Dierk},
pages = {7},
abstract = {Language servers provide features such as code completion and documentation on hover to text editors and integrated developer environments. These features help developers to write software more efficiently but take a significant time to build. The language server protocol addresses this problem by allowing to write a language server once and reuse it with many popular text editors. In this experience report, I present the steps needed to develop a minimal language server for the Frege programming language communicating with a Visual Studio Code plugin over the language server protocol. I start with Microsoft's example language server and gradually extend it. Firstly, I port the example server from Typescript to Java and secondly, I integrate the Frege compiler to show compiler errors and type signatures on hover. This experience report should help others to estimate the work of developing a language server and how to approach this task.},
langid = {english},
keywords = {rw},
file = {/Users/ysander/Zotero/storage/YAPE252T/Gagnaux and Konig - Developing a Minimal Language Server for the Frege.pdf}
}
@misc{GollumGitbasedWiki2022,
title = {Gollum -- {{A}} Git-Based {{Wiki}}},
year = {2022},
month = jan,
url = {https://github.com/gollum/gollum},
urldate = {2022-01-04},
abstract = {A simple, Git-powered wiki with a sweet API and local frontend.},
copyright = {MIT},
howpublished = {Gollum},
keywords = {documentation-tool,gollum,jruby-support,wiki}
}
@misc{guindonReleaseEclipseIDE,
title = {Release - {{Eclipse IDE}} | {{The Eclipse Foundation}}},
author = {Guindon, Christopher},
journal = {eclipseide.org},
url = {https://eclipseide.org/release/},
urldate = {2022-05-01},
langid = {english},
file = {/Users/ysander/Zotero/storage/LN8Z83N9/release.html}
}
@techreport{hamdaouiRFC001Overriding2022,
title = {{{RFC-001 Overriding}}},
author = {Hamdaoui, Yann},
year = {2022},
month = may,
institution = {{Tweag}},
url = {https://github.com/tweag/nickel/blob/f0dc86bd35241ddcb8e9d8482bdc2724ac1b2b19/rfcs/001-overriding.md},
urldate = {2022-05-24},
abstract = {This document is a proposal for an overriding mechanism in Nickel. It is expected to evolve while we put these ideas in practice, but shall serve as a design and implementation baseline.},
copyright = {MIT}
}
@misc{HaskellMacIDE,
title = {Haskell for {{Mac IDE}} \textemdash{} {{Learn Functional Programming}} with {{Haskell}}},
url = {http://haskellformac.com/},
urldate = {2021-12-28},
file = {/Users/ysander/Zotero/storage/AK5PYMPV/haskellformac.com.html}
}
@misc{HaskForceHaskellPlugin,
title = {{{HaskForce}} - {{The Haskell}} Plugin for {{IntelliJ IDEA}}},
url = {https://haskforce.com/},
urldate = {2022-02-19},
file = {/Users/ysander/Zotero/storage/F4USGFHV/haskforce.com.html}
}
@book{hellerAutomatingWorkflowsGitHub2021,
title = {Automating {{Workflows}} with {{GitHub Actions}}: {{Automate}} Software Development Workflows and Seamlessly Deploy Your Applications Using {{GitHub Actions}}},
shorttitle = {Automating {{Workflows}} with {{GitHub Actions}}},
author = {Heller, Priscila},
year = {2021},
month = nov,
publisher = {{Packt Publishing}},
isbn = {978-1-80056-040-6},
langid = {english}
}
@phdthesis{hessDafnyLanguageServer2019,
type = {Srp},
title = {Dafny {{Language Server Redesign}}},
author = {Hess, Marcel and Kistler, Thomas},
year = {2019},
month = dec,
url = {https://eprints.ost.ch/id/eprint/842/},
urldate = {2022-02-18},
abstract = {Dafny is a formal programming language to proof a program's correctness with preconditions, postconditions, loop invariants and loop variants. In a previous bachelor thesis, a plugin for Visual Studio Code was created to support Dafny. Developers can profit by several features from this plugin. For example, if Dafny cannot prove a postcondition, the code will be highlighted and a counter example can be shown. Other features include code compilation, auto completion suggestions and various refactoring tools. The plugin communicates with a language server. This interface was realized with the language server protocol. This protocol is a specification which allows an easy communication between an IDE and a language server. The language server itself was using an additional JSON-interface to request information from the actual Dafny library. The goal of this thesis was to rewrite the language server and directly integrate it into the Dafny library to save one of the communication paths. In order to simplify the development of further features, the tighter integration was inevitable. Instead of making complex adjustments to the server API, one can just use the language server protocol standard to increase functionality. For this, the new language server had to be rewritten from TypeScript to C\#. The old language server could be completely superseded by our new, rewritten server in C\#. Since we are using the same project solution as the Dafny library, Dafny's methods and classes are directly accessible. That means, that the interface from the old language server to the Dafny library is now obsolete. Most features of the previous bachelor thesis are supported with the new language server. These include code verification, error highlighting, making suggestions for auto completion, code lens, go to definition, compilation, as well as syntax highlighting. Since the language server is integrated with the Dafny library, new features can be added in a convenient way.},
collaborator = {Corbat, Thomas},
langid = {english},
school = {HSR Hochschule f\"ur Technik Rapperswil},
file = {/Users/ysander/Zotero/storage/P7W7JCWF/Hess and Kistler - 2019 - Dafny Language Server Redesign.pdf;/Users/ysander/Zotero/storage/5GKIRTGL/842.html}
}
@book{hintjensZeroMQMessagingMany2013,
title = {{{ZeroMQ}}: {{Messaging}} for {{Many Applications}}},
shorttitle = {{{ZeroMQ}}},
author = {Hintjens, Pieter},
year = {2013},
month = mar,
publisher = {{"O'Reilly Media, Inc."}},
abstract = {Dive into \O MQ (aka ZeroMQ), the smart socket library that gives you fast, easy, message-based concurrency for your applications. With this quick-paced guide, you'll learn hands-on how to use this scalable, lightweight, and highly flexible networking tool for exchanging messages among clusters, the cloud, and other multi-system environments.\O MQ maintainer Pieter Hintjens takes you on a tour of real-world applications, using extended examples in C to help you work with \O MQ's API, sockets, and patterns. Learn how to use specific \O MQ programming techniques, build multithreaded applications, and create your own messaging architectures. You'll discover how \O MQ works with several programming languages and most operating systems\textemdash with little or no cost.Learn \O MQ's main patterns: request-reply, publish-subscribe, and pipelineWork with \O MQ sockets and patterns by building several small applicationsExplore advanced uses of \O MQ's request-reply pattern through working examplesBuild reliable request-reply patterns that keep working when code or hardware failsExtend \O MQ's core pub-sub patterns for performance, reliability, state distribution, and monitoringLearn techniques for building a distributed architecture with \O MQDiscover what's required to build a general-purpose framework for distributed applications},
googlebooks = {KWtT5CJc6FYC},
isbn = {978-1-4493-3406-2},
langid = {english},
keywords = {Computers / Internet / Web Services \& APIs,Computers / Languages / C}
}
@misc{HowWriteGreat,
title = {How to Write a Great Research Paper},
journal = {Microsoft Research},
url = {https://www.microsoft.com/en-us/research/academic-program/write-great-research-paper/},
urldate = {2021-11-24},
abstract = {This talk offers seven simple, concrete suggestions for how to improve your research papers. You may also find my talks on how to write a great research proposal and how to give a great research talk useful.},
langid = {american},
file = {/Users/ysander/Zotero/storage/BH5M3R38/write-great-research-paper.html}
}
@misc{IDECodeReifying,
title = {{{IDE}} as {{Code}}: {{Reifying Language Protocols}} as {{First-Class Citizens}} | 14th {{Innovations}} in {{Software Engineering Conference}} (Formerly Known as {{India Software Engineering Conference}})},
url = {https://dl.acm.org/doi/abs/10.1145/3452383.3452406?casa_token=v3kB1B5yot4AAAAA:Jyslsfa9urSl9RdEgHwSIBID7HFDmXz6ocP-RMMjIKw6gwVXJsjQ7Z6awwbNP8Vm2loot6jeRsSL},
urldate = {2022-03-03},
file = {/Users/ysander/Zotero/storage/DKZHCFGH/3452383.html}
}
@misc{incCommunityOpenInnovation,
title = {The {{Community}} for {{Open Innovation}} and {{Collaboration}} | {{The Eclipse Foundation}}},
author = {Inc, Eclipse Foundation},
url = {https://www.eclipse.org/},
urldate = {2022-05-01},
abstract = {The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.},
langid = {english},
file = {/Users/ysander/Zotero/storage/NIJUJ6SW/www.eclipse.org.html}
}
@misc{IncrementalAnalysisReal,
title = {Incremental Analysis of Real Programming Languages | {{Proceedings}} of the {{ACM SIGPLAN}} 1997 Conference on {{Programming}} Language Design and Implementation},
url = {https://dl.acm.org/doi/10.1145/258915.258920},
urldate = {2021-11-12},
file = {/Users/ysander/Zotero/storage/XKEVSWVU/Wagner and Graham - 2000 - Incremental Analysis of Real Programming Languages.pdf}
}
@misc{IntelliJHaskellIntelliJIDEs,
title = {{{IntelliJ-Haskell}} - {{IntelliJ IDEs Plugin}} | {{Marketplace}}},
journal = {JetBrains Marketplace},
url = {https://plugins.jetbrains.com/plugin/8258-intellij-haskell},
urldate = {2022-05-01},
abstract = {Haskell language support.},
file = {/Users/ysander/Zotero/storage/4AS55KVT/8258-intellij-haskell.html}
}
@misc{IntelliJIDEACapable,
title = {{{IntelliJ IDEA}}: {{The Capable}} \& {{Ergonomic Java IDE}} by {{JetBrains}}},
shorttitle = {{{IntelliJ IDEA}}},
journal = {JetBrains},
url = {https://www.jetbrains.com/idea/},
urldate = {2022-05-01},
abstract = {A Capable and Ergonomic Java IDE for Enterprise Java, Scala, Kotlin and much more...},
langid = {english},
file = {/Users/ysander/Zotero/storage/5FMAVJRN/idea.html}
}
@article{iungSystematicMappingStudy2020,
title = {Systematic Mapping Study on Domain-Specific Language Development Tools},
author = {Iung, An{\'i}bal and Carbonell, Jo{\~a}o and Marchezan, Luciano and Rodrigues, Elder and Bernardino, Maicon and Basso, Fabio Paulo and Medeiros, Bruno},
year = {2020},
month = sep,
journal = {Empirical Software Engineering},
volume = {25},
number = {5},
pages = {4205--4249},
issn = {1382-3256, 1573-7616},
doi = {10.1007/s10664-020-09872-1},
url = {https://link.springer.com/10.1007/s10664-020-09872-1},
urldate = {2021-12-15},
abstract = {Domain-specific languages (DSL) are programming or modeling languages devoted to a given application domain. There are many tools used to support the implementation of a DSL, making hard the decision-making process for one or another. In this sense, identifying and mapping their features is relevant for decision-making by academic and industrial initiative on DSL development. Objective: The goal of this work is to identify and map the tools, Language Workbenches (LW), or frameworks that were proposed to develop DSLs discussed and referenced in publications between 2012 and 2019. Method: A Systematic Mapping Study (SMS) of the literature scoping tools for DSL development. Results: We identified 59 tools, including 9 under a commercial license and 41 with non-commercial licenses, and analyzed their features from 230 papers. Conclusion: There is a substantial amount of tools that cover a large number of features. Furthermore, we observed that usually, the developer adopts one type of notation to implement the DSL: textual or graphical. We also discuss research gaps, such as a lack of tools that allow meta-meta model transformations and that support modeling tools interoperability.},
langid = {english},
file = {/Users/ysander/Zotero/storage/YJRILR6I/Iung et al. - 2020 - Systematic mapping study on domain-specific langua.pdf}
}
@book{jamesturnbullTerraformBook2016,
title = {The {{Terraform Book}}},
author = {{James Turnbull}},
year = {2016},
month = nov,
url = {https://learning.oreilly.com/library/view/the-terraform-book/9780988820258/},
urldate = {2022-05-24},
abstract = {Updated for Terraform 0.12! A hands-on, introductory book about managing infrastructure with HashiCorp's Terraform tool. Start small and then build on what you learn to scale up to complex...},
isbn = {978-0-9888202-5-8},
langid = {english},
file = {/Users/ysander/Zotero/storage/6P8TC5RW/9780988820258.html}
}
@incollection{Jangla2018,
title = {Docker Compose},
booktitle = {Accelerating Development Velocity Using Docker: {{Docker}} across Microservices},
author = {Jangla, Kinnary},
year = {2018},
pages = {77--98},
publisher = {{Apress}},
address = {{Berkeley, CA}},
doi = {10.1007/978-1-4842-3936-0_6},
url = {https://doi.org/10.1007/978-1-4842-3936-0_6},
abstract = {In the previous chapter, we studied Dockerfiles and Docker images, how to build images, and run them in Docker containers. But if you think about practical day-to-day workflows, they are seldom going to occur on a single service. A workflow is usually a composition of multiple services or microservices. So, in order to get an application running on Docker from end to end, you have to link multiple Docker containers running different services, in such a way that they can talk to one another.},
isbn = {978-1-4842-3936-0}
}
@inproceedings{jeanjeanIDECodeReifying2021,
title = {{{IDE}} as {{Code}}: {{Reifying Language Protocols}} as {{First-Class Citizens}}},
shorttitle = {{{IDE}} as {{Code}}},
booktitle = {14th {{Innovations}} in {{Software Engineering Conference}} (Formerly Known as {{India Software Engineering Conference}})},
author = {Jeanjean, Pierre and Combemale, Benoit and Barais, Olivier},
year = {2021},
month = feb,
pages = {1--5},
publisher = {{ACM}},
address = {{Bhubaneswar, Odisha India}},
doi = {10.1145/3452383.3452406},
url = {https://dl.acm.org/doi/10.1145/3452383.3452406},
urldate = {2022-03-03},
abstract = {To cope with the ever-growing number of programming languages, manufacturers of Integrated Development Environments (IDE) have recently defined protocols as a way to use and share multiple language services (e.g., auto-completion, type checker, language runtime) in language-agnostic environments (i.e., the user interface provided by the IDE): the most notable are the Language Server Protocol (LSP) for textual editors, and the Debug Adapter Protocol (DAP) for debugging facilities. These protocols rely on a proper specification of the services that are commonly found in the tool support of general-purpose languages, and define a fixed set of capabilities to offer in the IDE. However, new languages appear regularly offering unique constructs (e.g., Domain-Specific Languages), and supported by dedicated services to be offered as new capabilities in IDEs. This trend leads to the multiplication of new protocols, hard to combine and possibly incompatible (e.g., overlap, different technological stacks). Beyond the proposition of specific protocols, the goal of this paper is to stress out the importance of being able to specify language protocols and to offer IDEs to be configured with such protocol specifications. We present our vision by discussing the main concepts for the specification of language protocols, and an approach that can make use of these specifications in order to deploy an IDE as a set of coordinated, individually deployed, language capabilities (e.g., microservice choreography). IDEs went from directly supporting languages to protocols, and we envision in this paper the next step: IDE as Code, where language protocols are created or inferred on demand and serve as support of an adaptation loop taking in charge of the (re)configuration of the IDE.},
isbn = {978-1-4503-9046-0},
langid = {english},
file = {/Users/ysander/Zotero/storage/E5J2IGSH/Jeanjean et al. - 2021 - IDE as Code Reifying Language Protocols as First-.pdf}
}
@article{jenkinsConcerningInterruptions2006,
title = {Concerning {{Interruptions}}},
author = {Jenkins, Stephen},
year = {2006},
month = nov,
journal = {Computer},
volume = {39},
number = {11},
pages = {116--115},
issn = {1558-0814},
doi = {10.1109/MC.2006.378},
abstract = {Peak productivity depends on dealing with interruptions effectively.},
keywords = {Computing profession,Electronic mail,Frequency,HTML,Information filtering,Information filters,Optimized production technology,Productivity,Telephony,Voice mail,Web server},
file = {/Users/ysander/Zotero/storage/YYM6ZS76/Jenkins - 2006 - Concerning Interruptions.pdf;/Users/ysander/Zotero/storage/G2HGJA67/4014785.html}
}
@article{jonesHowWriteGreat,
title = {How to Write a Great Research Paper {{Seven}} Simple Suggestions},
author = {Jones, Simon Peyton},
pages = {52},
langid = {english},
file = {/Users/ysander/Zotero/storage/KWQKMIU4/Jones - How to write a great research paper Seven simple s.pdf}
}
@misc{JSON,
title = {{{JSON}}},
url = {https://www.json.org/json-en.html},
urldate = {2022-01-01},
file = {/Users/ysander/Zotero/storage/FY6F8PQD/json-en.html}
}
@misc{JsonnetDataTemplating,
title = {Jsonnet - {{The Data Templating Language}}},
url = {https://jsonnet.org/},
urldate = {2022-01-01},
howpublished = {Code owned by Google},
file = {/Users/ysander/Zotero/storage/4L7VGS5Q/jsonnet.org.html}
}
@techreport{JSONRPCSpecification2013,
type = {Specification},
title = {{{JSON-RPC}} 2.0 {{Specification}}},
year = {2013},
month = jan,
institution = {{JSON-RPC Working Group}},
url = {https://www.jsonrpc.org/specification},
urldate = {2021-12-15},
abstract = {JSON-RPC is a stateless, light-weight remote procedure call (RPC) protocol. Primarily this specification defines several data structures and the rules around their processing. It is transport agnostic in that the concepts can be used within the same process, over sockets, over http, or in many various message passing environments. It uses JSON (RFC 4627) as data format. It is designed to be simple!},
file = {/Users/ysander/Zotero/storage/XB4PL6I9/specification.html}
}
@misc{JSONSchema,
title = {{{JSON Schema}}},
journal = {JSON Schema},
url = {https://json-schema.org/},
urldate = {2022-01-02},
abstract = {The home of JSON Schema},
langid = {english},
file = {/Users/ysander/Zotero/storage/7T7MQF4H/json-schema.org.html}
}
@inproceedings{justoProgrammingDistributedSystems1992,
title = {Programming Distributed Systems with Configuration Languages},
booktitle = {1992 {{International Workshop}} on {{Configurable Distributed Systems}}},
author = {Justo, G.R.R. and Cunha, P.R.F.},
year = {1992},
month = may,
pages = {118--127},
abstract = {The importance of using languages to specify the structure of a system as a set of components and their interconnections separately from the functional description of the components has been widely recognised. These languages, sometimes called configuration languages, have a natural application in the description of the structural topology of concurrent and distributed systems. The design of these languages has focussed on developing simple declarative languages only for specification of the structure of the system. The authors present a different approach to configuration languages where they use them as a framework to exploit dynamic restructuring to give elegant and modular solutions to concurrent and distributed problems. They present the programming model CL, study its properties and give some examples. A run-time support for the implementation of the model is also presented.{$<>$}},
keywords = {High-level languages,Parallel architectures,Parallel programming,Software requirements and specifications},
file = {/Users/ysander/Zotero/storage/7PMYZVK7/Justo and Cunha - 1992 - Programming distributed systems with configuration.pdf}
}
@inproceedings{katsSpoofaxLanguageWorkbench2010,
title = {The Spoofax Language Workbench: Rules for Declarative Specification of Languages and {{IDEs}}},
shorttitle = {The Spoofax Language Workbench},
booktitle = {Proceedings of the {{ACM}} International Conference on {{Object}} Oriented Programming Systems Languages and Applications},
author = {Kats, Lennart C.L. and Visser, Eelco},
year = {2010},
month = oct,
series = {{{OOPSLA}} '10},
pages = {444--463},
publisher = {{Association for Computing Machinery}},
address = {{New York, NY, USA}},
doi = {10.1145/1869459.1869497},
url = {https://doi.org/10.1145/1869459.1869497},
urldate = {2021-12-21},
abstract = {Spoofax is a language workbench for efficient, agile development of textual domain-specific languages with state-of-the-art IDE support. Spoofax integrates language processing techniques for parser generation, meta-programming, and IDE development into a single environment. It uses concise, declarative specifications for languages and IDE services. In this paper we describe the architecture of Spoofax and introduce idioms for high-level specifications of language semantics using rewrite rules, showing how analyses can be reused for transformations, code generation, and editor services such as error marking, reference resolving, and content completion. The implementation of these services is supported by language-parametric editor service classes that can be dynamically loaded by the Eclipse IDE, allowing new languages to be developed and used side-by-side in the same Eclipse environment.},
isbn = {978-1-4503-0203-6},
keywords = {domain-specific language,dsl,eclipse,IDE,language workbench,meta-tooling,sdf,sglr,spoofax,stratego},