首页 > 最新文献

SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software最新文献

英文 中文
Cognitive architectures: a way forward for the psychology of programming 认知架构:编程心理学的前进之路
Michael E. Hansen, A. Lumsdaine, Robert L. Goldstone
Programming language and library designers often debate the usability of particular design choices. These choices may impact many developers, yet scientific evidence for them is rarely provided. Cognitive models of program comprehension have existed for over thirty years, but the lack of quantitative (operational) validations for their internal components limits their utility for usability studies. To ease the burden of quantifying these existing models, we recommend using the ACT-R cognitive architecture - a simulation framework for psychological models. In this paper, we review the history of cognitive modeling in the psychology of programming. We provide an overview of the ACT-R cognitive architecture, and show how it could be used to fill in the gaps of an existing, yet incomplete, quantitative model (the Cognitive Complexity Metric). Lastly, we discuss the potential benefits and challenges associated with building a comprehensive cognitive model on top of a cognitive architecture.
编程语言和库的设计者经常争论特定设计选择的可用性。这些选择可能会影响许多开发人员,但很少有科学证据支持这些选择。程序理解的认知模型已经存在了30多年,但缺乏对其内部组件的定量(可操作)验证限制了它们在可用性研究中的效用。为了减轻量化这些现有模型的负担,我们建议使用ACT-R认知架构-心理模型的模拟框架。在本文中,我们回顾了认知建模在程序设计心理学中的历史。我们提供了ACT-R认知架构的概述,并展示了如何使用它来填补现有但不完整的定量模型(认知复杂性度量)的空白。最后,我们讨论了在认知架构之上构建一个全面的认知模型的潜在好处和挑战。
{"title":"Cognitive architectures: a way forward for the psychology of programming","authors":"Michael E. Hansen, A. Lumsdaine, Robert L. Goldstone","doi":"10.1145/2384592.2384596","DOIUrl":"https://doi.org/10.1145/2384592.2384596","url":null,"abstract":"Programming language and library designers often debate the usability of particular design choices. These choices may impact many developers, yet scientific evidence for them is rarely provided. Cognitive models of program comprehension have existed for over thirty years, but the lack of quantitative (operational) validations for their internal components limits their utility for usability studies. To ease the burden of quantifying these existing models, we recommend using the ACT-R cognitive architecture - a simulation framework for psychological models. In this paper, we review the history of cognitive modeling in the psychology of programming. We provide an overview of the ACT-R cognitive architecture, and show how it could be used to fill in the gaps of an existing, yet incomplete, quantitative model (the Cognitive Complexity Metric). Lastly, we discuss the potential benefits and challenges associated with building a comprehensive cognitive model on top of a cognitive architecture.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128811617","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 22
MOST-flexiPL: modular, statically typed, flexibly extensible programming language MOST-flexiPL:模块化、静态类型、灵活扩展的编程语言
C. Heinlein
Even though extensible programming languages have been around for decades, they have not received much attention so far. To obtain a more attractive solution, where extending the language is almost as easy as writing normal programs, extensibility should not be provided as a separate add-on, but rather as the very heart of the language. Furthermore, syntactic flexibility should not only allow to extend, but also to completely change the syntax when desired. MOSTflexiPL follows this approach by allowing users to define new operators, control structures, type constructors, and even declaration forms almost as easily as functions without sacrificing static type safety. This is achieved by encoding all constructs as generalized operators possessing any number of names and operands in an arbitrary order, where users have full control over associativity, precedence, and even scoping rules. Even though the language is still under development, there is a working compiler that translates MOSTflexiPL programs to equivalent C++ code.
尽管可扩展编程语言已经存在了几十年,但到目前为止还没有受到太多关注。为了获得更有吸引力的解决方案,扩展语言几乎和编写普通程序一样容易,不应该将可扩展性作为单独的附加组件提供,而应该将其作为语言的核心。此外,语法灵活性不仅应该允许扩展,还应该允许在需要时完全更改语法。MOSTflexiPL遵循这种方法,允许用户定义新的操作符、控制结构、类型构造函数,甚至声明表单,几乎和函数一样简单,而不会牺牲静态类型安全。这是通过将所有结构编码为具有任意数量的名称和操作数的通用操作符来实现的,其中用户可以完全控制结合性、优先级甚至范围规则。尽管该语言仍在开发中,但有一个编译器可以将大多数flexpl程序翻译成等效的c++代码。
{"title":"MOST-flexiPL: modular, statically typed, flexibly extensible programming language","authors":"C. Heinlein","doi":"10.1145/2384592.2384608","DOIUrl":"https://doi.org/10.1145/2384592.2384608","url":null,"abstract":"Even though extensible programming languages have been around for decades, they have not received much attention so far. To obtain a more attractive solution, where extending the language is almost as easy as writing normal programs, extensibility should not be provided as a separate add-on, but rather as the very heart of the language. Furthermore, syntactic flexibility should not only allow to extend, but also to completely change the syntax when desired. MOSTflexiPL follows this approach by allowing users to define new operators, control structures, type constructors, and even declaration forms almost as easily as functions without sacrificing static type safety. This is achieved by encoding all constructs as generalized operators possessing any number of names and operands in an arbitrary order, where users have full control over associativity, precedence, and even scoping rules. Even though the language is still under development, there is a working compiler that translates MOSTflexiPL programs to equivalent C++ code.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"157 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127367391","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Realising software development as a lived experience 将软件开发作为一种生活体验来实现
M. Beynon
This essay discusses software development from the perspective of Empirical Modelling (EM) [4], an approach to computing that draws on the construals of David Gooding [52], Bruno Latour's vexing notion of construction [70] and William James's radical empiricism [63]. It argues that effective software development must embrace semantic principles radically different from those endorsed by the traditional perspective on software that is based on computational thinking. Of paramount importance is the immediacy of the developer's experience of the relationship between software as an artefact on the computer and software as an agency in the world.
本文从经验建模(Empirical modeling, EM)[4]的角度讨论了软件开发,这是一种计算方法,它借鉴了David Gooding[52]、Bruno Latour令人烦恼的构造概念[70]和William James的激进经验主义[63]的解释。它认为,有效的软件开发必须包含语义原则,这些原则与基于计算思维的传统软件观点所支持的原则截然不同。最重要的是开发人员对作为计算机上的人工制品的软件和作为世界中的代理的软件之间关系的直接体验。
{"title":"Realising software development as a lived experience","authors":"M. Beynon","doi":"10.1145/2384592.2384613","DOIUrl":"https://doi.org/10.1145/2384592.2384613","url":null,"abstract":"This essay discusses software development from the perspective of Empirical Modelling (EM) [4], an approach to computing that draws on the construals of David Gooding [52], Bruno Latour's vexing notion of construction [70] and William James's radical empiricism [63]. It argues that effective software development must embrace semantic principles radically different from those endorsed by the traditional perspective on software that is based on computational thinking. Of paramount importance is the immediacy of the developer's experience of the relationship between software as an artefact on the computer and software as an agency in the world.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125717250","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Managed data: modular strategies for data abstraction 管理数据:数据抽象的模块化策略
A. Loh, T. Storm, W. Cook
Managed Data is a two-level approach to data abstraction in which programmers first define data description and manipulation mechanisms, and then use these mechanisms to define specific kinds of data. Managed Data allows programmers to take control of many important aspects of data, including persistence, access/change control, reactivity, logging, bidirectional relationships, resource management, invariants and validation. These features are implemented once as reusable strategies that can apply to many different data types. Managed Data is a general concept that can be implemented in several ways, including reflection, metaclasses, and macros. In this paper we argue for the importance of Managed Data and present a novel implementation of Managed Data based on interpretation of data models. We show how to inherit and compose interpreters to implement the features described above. Our approach allows Managed Data to be used in object-oriented languages that support reflection over field access (overriding the "dot" operator) or dynamic method creation. We also show how self-describing data models are useful for bootstrapping, allowing Managed Data to be used definition of Data Managers themselves. As a case study, we used Managed Data in a web development framework from the Ensō project to reuse database management and access control mechanisms across different data definitions.
托管数据是一种两层的数据抽象方法,在这种方法中,程序员首先定义数据描述和操作机制,然后使用这些机制定义特定类型的数据。托管数据允许程序员控制数据的许多重要方面,包括持久性、访问/变更控制、反应性、日志记录、双向关系、资源管理、不变量和验证。这些特性作为可重用策略实现一次,可以应用于许多不同的数据类型。托管数据是一个通用概念,可以通过多种方式实现,包括反射、元类和宏。在本文中,我们论证了管理数据的重要性,并提出了一种基于数据模型解释的管理数据的新实现。我们将展示如何继承和组合解释器来实现上述特性。我们的方法允许在支持字段访问反射(覆盖“点”操作符)或动态方法创建的面向对象语言中使用托管数据。我们还展示了自描述数据模型对引导是如何有用的,允许使用Managed data定义数据管理器本身。作为一个案例研究,我们在ensei项目的web开发框架中使用了托管数据,以跨不同的数据定义重用数据库管理和访问控制机制。
{"title":"Managed data: modular strategies for data abstraction","authors":"A. Loh, T. Storm, W. Cook","doi":"10.1145/2384592.2384609","DOIUrl":"https://doi.org/10.1145/2384592.2384609","url":null,"abstract":"Managed Data is a two-level approach to data abstraction in which programmers first define data description and manipulation mechanisms, and then use these mechanisms to define specific kinds of data. Managed Data allows programmers to take control of many important aspects of data, including persistence, access/change control, reactivity, logging, bidirectional relationships, resource management, invariants and validation. These features are implemented once as reusable strategies that can apply to many different data types. Managed Data is a general concept that can be implemented in several ways, including reflection, metaclasses, and macros. In this paper we argue for the importance of Managed Data and present a novel implementation of Managed Data based on interpretation of data models. We show how to inherit and compose interpreters to implement the features described above. Our approach allows Managed Data to be used in object-oriented languages that support reflection over field access (overriding the \"dot\" operator) or dynamic method creation. We also show how self-describing data models are useful for bootstrapping, allowing Managed Data to be used definition of Data Managers themselves. As a case study, we used Managed Data in a web development framework from the Ensō project to reuse database management and access control mechanisms across different data definitions.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"117 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126694945","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 20
Liberating the programmer with prorogued programming 通过延长编程时间来解放程序员
M. Afshari, Earl T. Barr, Z. Su
Programming is the process of expressing and refining ideas in a programming language. Ideally, we want our programming language to flexibly fit our natural thought process. Language innovations, such as procedural abstraction, object and aspect orientation, have helped increase programming agility. However, they still lack important features that a programmer could exploit to quickly experiment with design and implementation choices. We propose prorogued programming, a new paradigm more closely aligned with a programmer's thought process. A prorogued programming language (PPL) supports three basic principles: 1) proroguing concerns: the ability to defer a concern, to focus on and finish the current concern; 2) hybrid computation: the ability to involve the programmer as an integral part of computation; and 3) executable refinement: the ability to execute any intermediate program refinements. Working in a PPL, the programmer can run and experiment with an incomplete program, and gradually and iteratively reify the missing parts while catching design and implementation mistakes early. We describe the prorogued programming paradigm, our design and realization of the paradigm using Prorogued C#, our extension to C#, and demonstrate its utility through a few use cases.
编程是用编程语言表达和提炼思想的过程。理想情况下,我们希望我们的编程语言能够灵活地适应我们的自然思维过程。语言创新,如过程抽象、面向对象和面向方面,有助于提高编程的敏捷性。然而,它们仍然缺乏重要的功能,程序员可以利用这些功能来快速试验设计和实现选择。我们提出延期编程,这是一种更贴近程序员思维过程的新范式。延期编程语言(PPL)支持三个基本原则:1)延期关注点:延迟关注点的能力,关注并完成当前关注点;2)混合计算:将程序员作为计算的组成部分的能力;3)可执行的细化:执行任何中间程序细化的能力。在PPL中工作,程序员可以运行和试验不完整的程序,并逐步迭代地完善缺失的部分,同时尽早发现设计和实现错误。我们描述了延期编程范例,我们使用延期c#设计和实现的范例,我们对c#的扩展,并通过几个用例展示了它的实用性。
{"title":"Liberating the programmer with prorogued programming","authors":"M. Afshari, Earl T. Barr, Z. Su","doi":"10.1145/2384592.2384595","DOIUrl":"https://doi.org/10.1145/2384592.2384595","url":null,"abstract":"Programming is the process of expressing and refining ideas in a programming language. Ideally, we want our programming language to flexibly fit our natural thought process. Language innovations, such as procedural abstraction, object and aspect orientation, have helped increase programming agility. However, they still lack important features that a programmer could exploit to quickly experiment with design and implementation choices.\u0000 We propose prorogued programming, a new paradigm more closely aligned with a programmer's thought process. A prorogued programming language (PPL) supports three basic principles: 1) proroguing concerns: the ability to defer a concern, to focus on and finish the current concern; 2) hybrid computation: the ability to involve the programmer as an integral part of computation; and 3) executable refinement: the ability to execute any intermediate program refinements. Working in a PPL, the programmer can run and experiment with an incomplete program, and gradually and iteratively reify the missing parts while catching design and implementation mistakes early. We describe the prorogued programming paradigm, our design and realization of the paradigm using Prorogued C#, our extension to C#, and demonstrate its utility through a few use cases.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130749560","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
Escaping the maze of twisty classes 逃离错综复杂的课堂
Sean McDirmid
Programmers demand more extensive class libraries so they can reuse more code and write less of their own. However, these libraries are often so large that programmers get lost in deep hierarchies of classes and their members that are very broad in number. Yet language designers continue to focus on computation, leaving tools to solve library exploration problems without much help from the language. This paper applies language design to improve IDE code completion that enables in-situ library exploration. Inference tackles depth by listing completions as long as the program can be "fixed" to support their selection; e.g. "pressed" can be listed as a widget completion since a widget can be a button. Influence mitigates breadth by leveraging types as completion selection models; e.g. a pressed event is more likely to be used on a button than a mouse event. We apply this design to YinYang, a language for programming simulations on tablets using touch-based menus.
程序员需要更广泛的类库,这样他们就可以重用更多的代码,减少自己编写的代码。然而,这些库通常非常大,以至于程序员会迷失在类及其成员的深层层次结构中,而这些类及其成员的数量非常广泛。然而,语言设计者继续关注计算,留下工具来解决库探索问题,而没有语言的太多帮助。本文应用语言设计来改进IDE代码完成,从而实现库的原位探索。推理通过列出补全来解决深度问题,只要程序可以“固定”以支持它们的选择;如。“pressed”可以被列为小部件完成,因为小部件可以是按钮。影响通过利用类型作为完井选择模型来减轻广度;例如,按下的事件比鼠标事件更有可能用于按钮。我们将这种设计应用于YinYang,这是一种在平板电脑上使用触控菜单进行编程模拟的语言。
{"title":"Escaping the maze of twisty classes","authors":"Sean McDirmid","doi":"10.1145/2384592.2384605","DOIUrl":"https://doi.org/10.1145/2384592.2384605","url":null,"abstract":"Programmers demand more extensive class libraries so they can reuse more code and write less of their own. However, these libraries are often so large that programmers get lost in deep hierarchies of classes and their members that are very broad in number. Yet language designers continue to focus on computation, leaving tools to solve library exploration problems without much help from the language.\u0000 This paper applies language design to improve IDE code completion that enables in-situ library exploration. Inference tackles depth by listing completions as long as the program can be \"fixed\" to support their selection; e.g. \"pressed\" can be listed as a widget completion since a widget can be a button. Influence mitigates breadth by leveraging types as completion selection models; e.g. a pressed event is more likely to be used on a button than a mouse event. We apply this design to YinYang, a language for programming simulations on tablets using touch-based menus.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125274538","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
Grace: the absence of (inessential) difficulty 优雅:没有(不必要的)困难
A. Black, Kim B. Bruce, Michael Homer, J. Noble
We are engaged in the design of a small, simple programming language for teaching novices object-oriented programming. This turns out to be far from a small, simple task. We focus on three of the problems that we encountered, and how we believe we have solved them. The problems are (1) gracefully combining object initialization, inheritance, and immutable objects, (2) reconciling apparently irreconcilable views on type-checking, and (3) providing a family of languages, each suitable for students at different levels of mastery, while ensuring conceptual integrity of their designs. In each case our solutions are based on existing research; our contribution is, by design, consolidation rather than innovation.
我们致力于设计一种小型、简单的编程语言,用于教授新手面向对象编程。事实证明,这远非一项小而简单的任务。我们将集中讨论我们遇到的三个问题,以及我们认为我们是如何解决它们的。问题是(1)优雅地结合对象初始化、继承和不可变对象,(2)调和显然不可调和的类型检查观点,以及(3)提供一系列语言,每种语言适合不同掌握水平的学生,同时确保其设计的概念完整性。在每种情况下,我们的解决方案都是基于现有的研究;通过设计,我们的贡献是整合,而不是创新。
{"title":"Grace: the absence of (inessential) difficulty","authors":"A. Black, Kim B. Bruce, Michael Homer, J. Noble","doi":"10.1145/2384592.2384601","DOIUrl":"https://doi.org/10.1145/2384592.2384601","url":null,"abstract":"We are engaged in the design of a small, simple programming language for teaching novices object-oriented programming. This turns out to be far from a small, simple task. We focus on three of the problems that we encountered, and how we believe we have solved them. The problems are (1) gracefully combining object initialization, inheritance, and immutable objects, (2) reconciling apparently irreconcilable views on type-checking, and (3) providing a family of languages, each suitable for students at different levels of mastery, while ensuring conceptual integrity of their designs. In each case our solutions are based on existing research; our contribution is, by design, consolidation rather than innovation.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127673196","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 46
The structure of a programming language revolution 编程语言的结构革命
Richard P. Gabriel
Engineering often precedes science. Incommensurability is real.
工程往往先于科学。不可通约性是真实的。
{"title":"The structure of a programming language revolution","authors":"Richard P. Gabriel","doi":"10.1145/2384592.2384611","DOIUrl":"https://doi.org/10.1145/2384592.2384611","url":null,"abstract":"Engineering often precedes science. Incommensurability is real.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132536513","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Socio-PLT: principles for programming language adoption 社会- plt:编程语言采用的原则
Leo A. Meyerovich, A. Rabkin
Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for examining the sociological groundings of programming language theory: socio-PLT. Researchers in the social sciences have studied adoption in many contexts. We show how their findings are applicable to programming language design. For example, many programming language features provide benefits that programmers cannot directly or immediately observe and therefore may not find compelling. From clean water to safe sex, the health community has repeatedly identified and surmounted similar observability barriers. We use such results from outside of programming language theory to frame a research agenda that should help us understand the social foundations of languages. Finally, we examine implications of our approach, such as for the design space of language features and the assessment of scientific research into programming languages.
为什么有些编程语言失败了,有些却成功了?关于编程语言的设计、实现和原则,这个答案告诉了我们什么?为了帮助回答这些问题和其他问题,我们主张检查编程语言理论的社会学基础:社会- plt。社会科学领域的研究人员在许多情况下研究了收养问题。我们展示了他们的发现如何适用于编程语言设计。例如,许多编程语言特性提供了程序员无法直接或立即观察到的好处,因此可能不觉得有吸引力。从清洁饮水到安全性行为,卫生界一再发现并克服了类似的可观察性障碍。我们使用这些来自编程语言理论之外的结果来构建一个研究议程,这将有助于我们理解语言的社会基础。最后,我们研究了我们的方法的含义,例如语言特征的设计空间和对编程语言的科学研究的评估。
{"title":"Socio-PLT: principles for programming language adoption","authors":"Leo A. Meyerovich, A. Rabkin","doi":"10.1145/2384592.2384597","DOIUrl":"https://doi.org/10.1145/2384592.2384597","url":null,"abstract":"Why do some programming languages fail and others succeed? What does the answer tell us about programming language design, implementation, and principles? To help answer these and other questions, we argue for examining the sociological groundings of programming language theory: socio-PLT.\u0000 Researchers in the social sciences have studied adoption in many contexts. We show how their findings are applicable to programming language design. For example, many programming language features provide benefits that programmers cannot directly or immediately observe and therefore may not find compelling. From clean water to safe sex, the health community has repeatedly identified and surmounted similar observability barriers. We use such results from outside of programming language theory to frame a research agenda that should help us understand the social foundations of languages. Finally, we examine implications of our approach, such as for the design space of language features and the assessment of scientific research into programming languages.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127770386","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 37
On the language metaphor 论语言隐喻
Paul Adamczyk
There are many more similarities than distinctions between natural languages and the languages used in computer science. The term "language" has been used liberally as a metaphor in the discipline in terms of language creation, evolution and concept of elegance. Examples are presented to show that the language metaphor serves the discipline well. Branching off, resulting in the development of new languages, is an inevitable progression in the evolution of natural languages. The implications of this aspect of the language metaphor are considered in the form of domain-specific fields which share a common base of computing.
自然语言和计算机科学中使用的语言之间有更多的相似之处,而不是区别。在语言的创造、演变和优雅的概念方面,“语言”一词在学科中被广泛地用作隐喻。通过实例说明,语言隐喻在这门学科中发挥了很好的作用。分支,导致新语言的发展,是自然语言进化的必然过程。语言隐喻的这一方面的含义以特定领域的形式考虑,这些领域共享一个共同的计算基础。
{"title":"On the language metaphor","authors":"Paul Adamczyk","doi":"10.1145/2089131.2089133","DOIUrl":"https://doi.org/10.1145/2089131.2089133","url":null,"abstract":"There are many more similarities than distinctions between natural languages and the languages used in computer science. The term \"language\" has been used liberally as a metaphor in the discipline in terms of language creation, evolution and concept of elegance. Examples are presented to show that the language metaphor serves the discipline well.\u0000 Branching off, resulting in the development of new languages, is an inevitable progression in the evolution of natural languages. The implications of this aspect of the language metaphor are considered in the form of domain-specific fields which share a common base of computing.","PeriodicalId":168332,"journal":{"name":"SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software","volume":"283 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131920658","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 24
期刊
SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1