{"id":"https://openalex.org/W3005653651","doi":"https://doi.org/10.22152/programming-journal.org/2020/4/11","title":"Bacat\u00e1: Notebooks for DSLs, Almost for Free","display_name":"Bacat\u00e1: Notebooks for DSLs, Almost for Free","publication_year":2020,"publication_date":"2020-02-14","ids":{"openalex":"https://openalex.org/W3005653651","doi":"https://doi.org/10.22152/programming-journal.org/2020/4/11","mag":"3005653651"},"language":"en","primary_location":{"id":"doi:10.22152/programming-journal.org/2020/4/11","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2020/4/11","pdf_url":"https://arxiv.org/pdf/2002.06180v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://arxiv.org/pdf/2002.06180v1","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"Mauricio Verano Merino","orcid":null},"institutions":[{"id":"https://openalex.org/I83019370","display_name":"Eindhoven University of Technology","ror":"https://ror.org/02c2kyt77","country_code":"NL","type":"education","lineage":["https://openalex.org/I83019370"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Mauricio Verano Merino","raw_affiliation_strings":["Eindhoven University of Technology, Netherlands"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Eindhoven University of Technology, Netherlands","institution_ids":["https://openalex.org/I83019370"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Jurgen Vinju","orcid":null},"institutions":[{"id":"https://openalex.org/I1341640284","display_name":"Centrum Wiskunde & Informatica","ror":"https://ror.org/00x7ekv49","country_code":"NL","type":"facility","lineage":["https://openalex.org/I1341640284","https://openalex.org/I2800991832","https://openalex.org/I4405262988"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Jurgen Vinju","raw_affiliation_strings":["Centrum Wiskunde & Informatica - TU Eindhoven, Netherlands"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Centrum Wiskunde & Informatica - TU Eindhoven, Netherlands","institution_ids":["https://openalex.org/I1341640284"]}]},{"author_position":"last","author":{"id":null,"display_name":"Tijs van der Storm","orcid":null},"institutions":[{"id":"https://openalex.org/I169381384","display_name":"University of Groningen","ror":"https://ror.org/012p63287","country_code":"NL","type":"education","lineage":["https://openalex.org/I169381384"]}],"countries":["NL"],"is_corresponding":false,"raw_author_name":"Tijs van der Storm","raw_affiliation_strings":["CWI - University of Groningen, Netherlands"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"CWI - University of Groningen, Netherlands","institution_ids":["https://openalex.org/I169381384"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":3.3233,"has_fulltext":true,"cited_by_count":9,"citation_normalized_percentile":{"value":0.91172214,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":"4","issue":"3","first_page":null,"last_page":null},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T11450","display_name":"Model-Driven Software Engineering Techniques","score":0.3416999876499176,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T11450","display_name":"Model-Driven Software Engineering Techniques","score":0.3416999876499176,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.2897000014781952,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.16089999675750732,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/digital-subscriber-line","display_name":"Digital subscriber line","score":0.8240000009536743},{"id":"https://openalex.org/keywords/domain-specific-language","display_name":"Domain-specific language","score":0.7057999968528748},{"id":"https://openalex.org/keywords/executable","display_name":"Executable","score":0.5936999917030334},{"id":"https://openalex.org/keywords/domain","display_name":"Domain (mathematical analysis)","score":0.42579999566078186},{"id":"https://openalex.org/keywords/reuse","display_name":"Reuse","score":0.41769999265670776},{"id":"https://openalex.org/keywords/software-development","display_name":"Software development","score":0.4117000102996826},{"id":"https://openalex.org/keywords/leverage","display_name":"Leverage (statistics)","score":0.4002000093460083},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.3847000002861023},{"id":"https://openalex.org/keywords/context","display_name":"Context (archaeology)","score":0.3788999915122986}],"concepts":[{"id":"https://openalex.org/C201374245","wikidata":"https://www.wikidata.org/wiki/Q104534","display_name":"Digital subscriber line","level":2,"score":0.8240000009536743},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.7706999778747559},{"id":"https://openalex.org/C135257023","wikidata":"https://www.wikidata.org/wiki/Q691358","display_name":"Domain-specific language","level":2,"score":0.7057999968528748},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6872000098228455},{"id":"https://openalex.org/C160145156","wikidata":"https://www.wikidata.org/wiki/Q778586","display_name":"Executable","level":2,"score":0.5936999917030334},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.4927000105381012},{"id":"https://openalex.org/C36503486","wikidata":"https://www.wikidata.org/wiki/Q11235244","display_name":"Domain (mathematical analysis)","level":2,"score":0.42579999566078186},{"id":"https://openalex.org/C206588197","wikidata":"https://www.wikidata.org/wiki/Q846574","display_name":"Reuse","level":2,"score":0.41769999265670776},{"id":"https://openalex.org/C529173508","wikidata":"https://www.wikidata.org/wiki/Q638608","display_name":"Software development","level":3,"score":0.4117000102996826},{"id":"https://openalex.org/C153083717","wikidata":"https://www.wikidata.org/wiki/Q6535263","display_name":"Leverage (statistics)","level":2,"score":0.4002000093460083},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.3847000002861023},{"id":"https://openalex.org/C2779343474","wikidata":"https://www.wikidata.org/wiki/Q3109175","display_name":"Context (archaeology)","level":2,"score":0.3788999915122986},{"id":"https://openalex.org/C179603123","wikidata":"https://www.wikidata.org/wiki/Q1941921","display_name":"Modeling language","level":3,"score":0.3458999991416931},{"id":"https://openalex.org/C61423126","wikidata":"https://www.wikidata.org/wiki/Q187432","display_name":"Scripting language","level":2,"score":0.3456000089645386},{"id":"https://openalex.org/C113843644","wikidata":"https://www.wikidata.org/wiki/Q901882","display_name":"Interface (matter)","level":4,"score":0.34360000491142273},{"id":"https://openalex.org/C107457646","wikidata":"https://www.wikidata.org/wiki/Q207434","display_name":"Human\u2013computer interaction","level":1,"score":0.32580000162124634},{"id":"https://openalex.org/C89505385","wikidata":"https://www.wikidata.org/wiki/Q47146","display_name":"User interface","level":2,"score":0.3000999987125397},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.2939999997615814},{"id":"https://openalex.org/C48859967","wikidata":"https://www.wikidata.org/wiki/Q6486712","display_name":"Language construct","level":2,"score":0.2709999978542328},{"id":"https://openalex.org/C180152950","wikidata":"https://www.wikidata.org/wiki/Q2904257","display_name":"Software development process","level":4,"score":0.2705000042915344},{"id":"https://openalex.org/C509989072","wikidata":"https://www.wikidata.org/wiki/Q15188241","display_name":"Model-driven architecture","level":4,"score":0.2678999900817871},{"id":"https://openalex.org/C15077461","wikidata":"https://www.wikidata.org/wiki/Q7248507","display_name":"Programming language specification","level":5,"score":0.2651999890804291},{"id":"https://openalex.org/C51929080","wikidata":"https://www.wikidata.org/wiki/Q2425187","display_name":"Codebase","level":3,"score":0.2621999979019165},{"id":"https://openalex.org/C92548554","wikidata":"https://www.wikidata.org/wiki/Q2262868","display_name":"Domain model","level":3,"score":0.2614000141620636},{"id":"https://openalex.org/C145644426","wikidata":"https://www.wikidata.org/wiki/Q169411","display_name":"Unified Modeling Language","level":3,"score":0.2542000114917755}],"mesh":[],"locations_count":6,"locations":[{"id":"doi:10.22152/programming-journal.org/2020/4/11","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2020/4/11","pdf_url":"https://arxiv.org/pdf/2002.06180v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},{"id":"pmh:oai:pure.rug.nl:openaire/95399be8-64d8-4dbb-a6ac-683343727fbc","is_oa":true,"landing_page_url":"https://research.rug.nl/en/publications/95399be8-64d8-4dbb-a6ac-683343727fbc","pdf_url":null,"source":{"id":"https://openalex.org/S4306400420","display_name":"University of Groningen research database (University of Groningen / Centre for Information Technology)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I169381384","host_organization_name":"University of Groningen","host_organization_lineage":["https://openalex.org/I169381384"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Verano Merino, M, Vinju, J & van der Storm, T 2020, 'Bacat\u00e1 : Notebooks for DSLs, Almost for Free', The Art, Science, and Engineering of Programming, vol. 4, no. 3, 11. https://doi.org/10.22152/programming-journal.org/2020/4/11","raw_type":"info:eu-repo/semantics/article"},{"id":"pmh:oai:pure.tue.nl:openaire/c8c48fa4-bbd2-4cc7-8365-c31fb27e9a05","is_oa":true,"landing_page_url":"https://research.tue.nl/en/publications/c8c48fa4-bbd2-4cc7-8365-c31fb27e9a05","pdf_url":null,"source":{"id":"https://openalex.org/S4406922641","display_name":"TU/e Research Portal","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Merino, M V, Vinju, J & van der Storm, T 2020, 'Bacat\u00e1: notebooks for DSLs, almost for free', The Art, Science, and Engineering of Programming, vol. 4, no. 3, 11. https://doi.org/10.22152/programming-journal.org/2020/4/11","raw_type":"info:eu-repo/semantics/article"},{"id":"pmh:oai:arXiv.org:2002.06180","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2002.06180","pdf_url":"https://arxiv.org/pdf/2002.06180","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":"2331-8422","issn":["2331-8422"],"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"pmh:tue:oai:pure.tue.nl:publications/c8c48fa4-bbd2-4cc7-8365-c31fb27e9a05","is_oa":true,"landing_page_url":"https://research.tue.nl/nl/publications/c8c48fa4-bbd2-4cc7-8365-c31fb27e9a05","pdf_url":"https://research.tue.nl/nl/publications/c8c48fa4-bbd2-4cc7-8365-c31fb27e9a05","source":{"id":"https://openalex.org/S4306401843","display_name":"Data Archiving and Networked Services (DANS)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I1322597698","host_organization_name":"Royal Netherlands Academy of Arts and Sciences","host_organization_lineage":["https://openalex.org/I1322597698"],"host_organization_lineage_names":[],"type":"repository"},"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"The Art, Science, and Engineering of Programming, 4(3):11. AOSA","raw_type":"info:eu-repo/semantics/article"},{"id":"pmh:vu:oai:research.vu.nl:publications/e79e195b-4ab2-4c8f-8175-96596c9e72ec","is_oa":false,"landing_page_url":"https://research.vu.nl/en/publications/e79e195b-4ab2-4c8f-8175-96596c9e72ec","pdf_url":null,"source":{"id":"https://openalex.org/S4306401843","display_name":"Data Archiving and Networked Services (DANS)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I1322597698","host_organization_name":"Royal Netherlands Academy of Arts and Sciences","host_organization_lineage":["https://openalex.org/I1322597698"],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"The Art, Science, and Engineering of Programming, 4(3):11","raw_type":"info:eu-repo/semantics/article"}],"best_oa_location":{"id":"doi:10.22152/programming-journal.org/2020/4/11","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2020/4/11","pdf_url":"https://arxiv.org/pdf/2002.06180v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3005653651.pdf","grobid_xml":"https://content.openalex.org/works/W3005653651.grobid-xml"},"referenced_works_count":0,"referenced_works":[],"related_works":[],"abstract_inverted_index":{"Context:":[0],"Computational":[1],"notebooks":[2,99,351,391],"are":[3,44,85,100,227,375,392],"a":[4,26,34,51,77,154,164,171,195,228,248,251,256,291],"contemporary":[5],"style":[6],"of":[7,68,97,103,117,137,207,247,258,294,306,334,337,345,350],"literate":[8],"programming,":[9,367],"in":[10,25,94,163,170,173,267,361],"which":[11,174],"users":[12,43],"can":[13,177,219],"communicate":[14],"and":[15,23,114,119,140,146,203,231,308,330,354,372,413],"transfer":[16],"knowledge":[17],"by":[18,217,237,279,352],"interleaving":[19],"executable":[20],"code,":[21],"output,":[22],"prose":[24],"single":[27],"rich":[28],"document.A":[29],"Domain-Specific":[30],"Language":[31],"(DSL)":[32],"is":[33,79,111,168,315,381],"software":[35,52],"language":[36,175,181,186,201,204,238,243,265,270],"tailored":[37],"for":[38,74,123,156,160,250,285,298,312,395,402],"an":[39,101,112],"application":[40],"domain.Usually,":[41],"DSL":[42,78,82,138,252,297,311],"domain":[45],"experts":[46],"that":[47,70,199,213,233,240,262,339],"may":[48],"not":[49,57],"have":[50],"engineering":[53],"background.Therefore,":[54],"they":[55,376],"might":[56,129],"be":[58,130,220,235],"familiar":[59],"with":[60,76,222,253,272,411],"Integrated":[61],"Development":[62],"Environments":[63],"(IDEs).In":[64],"brief,":[65],"the":[66,95,135,142,260,268,273,332,399,406],"development":[67,136],"tools":[69],"offer":[71],"different":[72,287],"interfaces":[73,122,159,215,284],"interacting":[75,410],"relevant.Inquiry:":[80],"However,":[81],"designers'":[83],"resources":[84],"limited.We":[86],"want":[87],"to":[88,132,317,383,404,414],"leverage":[89],"General-purpose":[90],"Languages":[91],"(GPLs)":[92],"tooling":[93],"context":[96],"DSLs.Computational":[98],"example":[102],"such":[104,364],"tools.Then,":[105],"our":[106],"main":[107],"question":[108],"is:":[109],"What":[110],"efficient":[113],"effective":[115],"method":[116],"designing":[118],"implementing":[120,323],"notebook":[121,158,214,249,283,319,400],"DSLs?By":[124],"addressing":[125],"this":[126,149],"question,":[127],"we":[128,151,193,328,340],"able":[131],"speed":[133],"up":[134],"tools,":[139],"ease":[141],"interaction":[143],"between":[144],"end-users":[145,355],"DSLs.Approach:":[147],"In":[148],"paper,":[150],"present":[152,194],"Bacat\u00e1,":[153],"mechanism":[155,167],"generating":[157,280],"external":[161],"DSLs":[162,403,416],"language-parametric":[165],"fashion.This":[166],"designed":[169],"way":[172],"engineers":[176,239],"reuse":[178],"as":[179,183,365,387,389],"many":[180],"components":[182,266],"possible":[184],"(e.g.,":[185],"processors,":[187],"type":[188],"checkers,":[189],"code":[190,261,338,412],"generators).In":[191],"addition,":[192],"Feature-Oriented":[196],"Domain":[197],"Analysis":[198],"depicts":[200],"dependent":[202],"independent":[205],"features":[206],"computational":[208,282],"notebooks.Knowledge:":[209],"Our":[210],"results":[211,385],"show":[212],"generated":[216],"Bacat\u00e1":[218,254,278],"used":[221],"little":[223],"manual":[224],"configuration.However,":[225],"there":[226],"few":[229],"considerations":[230],"caveats":[232],"should":[234],"addressed":[236],"rely":[241],"on":[242],"design":[244],"aspects.The":[245],"creation":[246],"becomes":[255],"matter":[257],"writing":[259],"wires":[263],"existing":[264,343],"Rascal":[269],"workbench":[271],"Jupyter":[274],"platform.Grounding:":[275],"We":[276],"evaluate":[277],"functional":[281],"three":[286],"non-trivial":[288],"DSLs,":[289],"namely:":[290],"small":[292],"subset":[293],"Halide":[295],"(a":[296,310],"digital":[299],"image":[300],"processing),":[301],"SweeterJS":[302],"(an":[303],"extended":[304],"version":[305],"JavaScript),":[307],"QL":[309],"questionnaires).Additionally,":[313],"it":[314,380],"relevant":[316],"generate":[318],"implementations":[320,344],"rather":[321],"than":[322],"them":[324,358],"manually.To":[325],"illustrate":[326],"this,":[327],"measured":[329],"compared":[331],"number":[333],"source":[335],"lines":[336],"reused":[341],"from":[342],"those":[346],"languages.Importance:":[347],"The":[348],"adoption":[349],"novice-programmers":[353],"has":[356],"made":[357],"very":[359],"popular":[360],"several":[362],"domains":[363],"exploratory":[366],"data":[368,370],"science,":[369,379],"journalism,":[371],"machine":[373],"learning.Why":[374],"popular?In":[377],"(data)":[378],"essential":[382],"make":[384],"reproducible":[386],"well":[388],"understandable.However,":[390],"only":[393],"available":[394],"GPLs.This":[396],"paper":[397],"opens":[398],"metaphor":[401],"improve":[405],"end-user":[407],"experience":[408],"when":[409],"increase":[415],"adoption.":[417]},"counts_by_year":[{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":4},{"year":2021,"cited_by_count":1},{"year":2020,"cited_by_count":1}],"updated_date":"2026-08-08T01:25:22.217667","created_date":"2020-02-24T00:00:00"}
