首页 > 最新文献

Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences最新文献

英文 中文
The Cost of Dynamism in Static Languages for Image Processing 静态语言在图像处理中的动态代价
Baptiste Esteban, Edwin Carlinet, G. Tochon, D. Verna
Generic programming is a powerful paradigm abstracting data structures and algorithms to improve their reusability, as long as they respect a given interface. Coupled with a performance-driven language, it is a paradigm of choice for scientific libraries where the implementation of manipulated objects may change depending on their use case, or for performance purposes. In those performance-driven languages, genericity is often implemented statically to perform some optimization. This does not fit well with the dynamism needed to handle objects which may only be known at runtime. Thus, in this article, we evaluate a model that couples static genericity with a dynamic model based on type erasure in the context of image processing. Its cost is assessed by comparing the performance of the implementation of some common image processing algorithms in C++ and Rust, two performance-driven languages supporting some form of genericity. Finally, we demonstrate that compile-time knowledge of some specific information is critical for performance, and also that the runtime overhead depends on the algorithmic scheme in use.
泛型编程是一种强大的范例,它抽象数据结构和算法,以提高它们的可重用性,只要它们尊重给定的接口。与性能驱动的语言相结合,它是科学库的选择范例,在这些库中,被操纵对象的实现可能会根据它们的用例或出于性能目的而改变。在那些性能驱动的语言中,通常静态地实现泛型以执行一些优化。这并不适合处理只有在运行时才知道的对象所需的动态性。因此,在本文中,我们评估了在图像处理的背景下,基于类型擦除的静态泛型与动态模型耦合的模型。它的成本是通过比较c++和Rust中一些常见图像处理算法实现的性能来评估的,这是两种支持某种形式的泛型的性能驱动语言。最后,我们证明了编译时对某些特定信息的了解对性能至关重要,并且运行时开销取决于所使用的算法方案。
{"title":"The Cost of Dynamism in Static Languages for Image Processing","authors":"Baptiste Esteban, Edwin Carlinet, G. Tochon, D. Verna","doi":"10.1145/3564719.3568693","DOIUrl":"https://doi.org/10.1145/3564719.3568693","url":null,"abstract":"Generic programming is a powerful paradigm abstracting data structures and algorithms to improve their reusability, as long as they respect a given interface. Coupled with a performance-driven language, it is a paradigm of choice for scientific libraries where the implementation of manipulated objects may change depending on their use case, or for performance purposes. In those performance-driven languages, genericity is often implemented statically to perform some optimization. This does not fit well with the dynamism needed to handle objects which may only be known at runtime. Thus, in this article, we evaluate a model that couples static genericity with a dynamic model based on type erasure in the context of image processing. Its cost is assessed by comparing the performance of the implementation of some common image processing algorithms in C++ and Rust, two performance-driven languages supporting some form of genericity. Finally, we demonstrate that compile-time knowledge of some specific information is critical for performance, and also that the runtime overhead depends on the algorithmic scheme in use.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122218511","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}
引用次数: 0
A Model-Driven Generative Self Play-Based Toolchain for Developing Games and Players 用于开发游戏和玩家的模型驱动生成自我游戏工具链
Evgeny Kusmenko, Maximilian Münker, Matthias Nadenau, Bernhard Rumpe
Turn-based games such as chess are very popular, but tool-chains tailored for their development process are still rare. In this paper we present a model-driven and generative toolchain aiming to cover the whole development process of rule-based games. In particular, we present a game description language enabling the developer to model the game in a logics-based syntax. An executable game interpreter is generated from the game model and can then act as an environment for reinforcement learning-based self-play training of players. Before the training, the deep neural network can be modeled manually by a deep learning developer or generated using a heuristics estimating the complexity of mapping the state space to the action space. Finally, we present a case study modeling three games and evaluate the language features as well as the player training capabilities of the toolchain.
象棋等回合制游戏非常受欢迎,但为其开发过程量身定制的工具链仍然很少。在本文中,我们提出了一个模型驱动和生成的工具链,旨在涵盖基于规则的游戏的整个开发过程。特别是,我们提出了一种游戏描述语言,使开发者能够以基于逻辑的语法对游戏进行建模。可执行的游戏解释器是从游戏模型中生成的,然后可以作为基于强化学习的玩家自我游戏训练的环境。在训练之前,深度神经网络可以由深度学习开发人员手动建模,或者使用启发式方法估计将状态空间映射到动作空间的复杂性。最后,我们提出了一个案例研究,对三个游戏进行建模,并评估了工具链的语言特征以及玩家训练能力。
{"title":"A Model-Driven Generative Self Play-Based Toolchain for Developing Games and Players","authors":"Evgeny Kusmenko, Maximilian Münker, Matthias Nadenau, Bernhard Rumpe","doi":"10.1145/3564719.3568687","DOIUrl":"https://doi.org/10.1145/3564719.3568687","url":null,"abstract":"Turn-based games such as chess are very popular, but tool-chains tailored for their development process are still rare. In this paper we present a model-driven and generative toolchain aiming to cover the whole development process of rule-based games. In particular, we present a game description language enabling the developer to model the game in a logics-based syntax. An executable game interpreter is generated from the game model and can then act as an environment for reinforcement learning-based self-play training of players. Before the training, the deep neural network can be modeled manually by a deep learning developer or generated using a heuristics estimating the complexity of mapping the state space to the action space. Finally, we present a case study modeling three games and evaluate the language features as well as the player training capabilities of the toolchain.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"123 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127059224","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}
引用次数: 0
Incremental Processing of Structured Data in Datalog 数据目录中结构化数据的增量处理
André Pacak, Tamás Szabó, Sebastian Erdweg
Incremental computations react to input changes by updating their outputs. Compared to a non-incremental rerun, incremental computations can provide order-of-magnitude speedups, since often small input changes trigger small output changes. One popular means for implementing incremental computations is to encode the computation in Datalog, for which efficient incremental solvers exist. However, Datalog is very restrictive in terms of the data types it can process: Atomic data organized in relations. While structured tree and graph-shaped data can be encoded in relations, a naive encoding inhibits incrementality. In this paper, we present an encoding of structured data in Datalog that supports efficient incrementality such that small input changes are expressible. We explain how to efficiently implement and integrate this encoding into an existing incremental Datalog engine, and we show how tree diffing algorithms can be used to change the encoded data.
增量计算通过更新其输出来响应输入变化。与非增量重新运行相比,增量计算可以提供数量级的速度,因为通常小的输入更改会触发小的输出更改。实现增量计算的一种流行方法是在Datalog中对计算进行编码,因此存在有效的增量求解器。然而,Datalog在可以处理的数据类型方面有很大的限制:按关系组织的原子数据。虽然结构化的树状数据和图状数据可以在关系中编码,但原始编码抑制了递增。在本文中,我们提出了一种在Datalog中支持有效增量的结构化数据编码,使得小的输入变化是可表达的。我们解释了如何有效地实现这种编码并将其集成到现有的增量Datalog引擎中,并展示了如何使用树差分算法来更改编码的数据。
{"title":"Incremental Processing of Structured Data in Datalog","authors":"André Pacak, Tamás Szabó, Sebastian Erdweg","doi":"10.1145/3564719.3568686","DOIUrl":"https://doi.org/10.1145/3564719.3568686","url":null,"abstract":"Incremental computations react to input changes by updating their outputs. Compared to a non-incremental rerun, incremental computations can provide order-of-magnitude speedups, since often small input changes trigger small output changes. One popular means for implementing incremental computations is to encode the computation in Datalog, for which efficient incremental solvers exist. However, Datalog is very restrictive in terms of the data types it can process: Atomic data organized in relations. While structured tree and graph-shaped data can be encoded in relations, a naive encoding inhibits incrementality. In this paper, we present an encoding of structured data in Datalog that supports efficient incrementality such that small input changes are expressible. We explain how to efficiently implement and integrate this encoding into an existing incremental Datalog engine, and we show how tree diffing algorithms can be used to change the encoded data.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129285960","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
Type System for Four Delimited Control Operators 四种分隔控制操作符的类型系统
Chiaki Ishio, K. Asai
The operational behavior of control operators has been studied comprehensively in the past few decades, but type systems of control operators have not. There are distinct type systems for shift, control, and shift0 without any relationship between them, and there has not been a type system that directly corresponds to control0. This paper remedies this situation by giving a uniform type system for all the four control operators. Following Danvy and Filinski’s approach, we derive a monomorphic type system from the CPS interpreter that defines the operational semantics of the four control operators. By implementing the typed CPS interpreter in Agda, we show that the CPS translation preserves types and that the calculus with all the four control operators is terminating. Furthermore, we show the relationship between our type system and the previous type systems for shift, control, and shift0.
在过去的几十年里,人们对控制算子的运行行为进行了全面的研究,但对控制算子类型系统的研究还不够。shift、control和shift0有不同的类型系统,它们之间没有任何关系,并且没有直接对应于control0的类型系统。本文通过给出所有四种控制算子的统一类型系统来纠正这种情况。按照Danvy和Filinski的方法,我们从CPS解释器派生出一个单态类型系统,该系统定义了四个控制操作符的操作语义。通过在Agda中实现类型化CPS解释器,我们证明了CPS翻译保留了类型,并且所有四个控制操作符的演算都终止了。此外,我们还展示了我们的类型系统与之前的shift、control和shift0类型系统之间的关系。
{"title":"Type System for Four Delimited Control Operators","authors":"Chiaki Ishio, K. Asai","doi":"10.1145/3564719.3568691","DOIUrl":"https://doi.org/10.1145/3564719.3568691","url":null,"abstract":"The operational behavior of control operators has been studied comprehensively in the past few decades, but type systems of control operators have not. There are distinct type systems for shift, control, and shift0 without any relationship between them, and there has not been a type system that directly corresponds to control0. This paper remedies this situation by giving a uniform type system for all the four control operators. Following Danvy and Filinski’s approach, we derive a monomorphic type system from the CPS interpreter that defines the operational semantics of the four control operators. By implementing the typed CPS interpreter in Agda, we show that the CPS translation preserves types and that the calculus with all the four control operators is terminating. Furthermore, we show the relationship between our type system and the previous type systems for shift, control, and shift0.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122246945","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}
引用次数: 0
Language-Integrated Query for Temporal Data 时态数据的语言集成查询
S. Fowler, Vashti Galpin, J. Cheney
Modern applications often manage time-varying data. Despite decades of research on temporal databases, which culminated in the addition of temporal data operations into the SQL:2011 standard, temporal data query and manipulation operations are unavailable in most mainstream database management systems, leaving developers with the unenviable task of implementing such functionality from scratch. In this paper, we extend language-integrated query to support writing temporal queries and updates in a uniform host language, with the language performing the required rewriting to emulate temporal capabilities automatically on any standard relational database. We introduce two core languages, λTLINQ and λVLINQ, for manipulating transaction time and valid time data respectively, and formalise existing implementation strategies by giving provably correct semantics-preserving translations into a non-temporal core language, λLINQ. We show how existing work on query normalisation supports a surprisingly simple implementation strategy for sequenced joins. We implement our approach in the Links programming language, and describe a non-trivial case study based on curating COVID-19 statistics.
现代应用程序经常管理时变数据。尽管对时态数据库进行了数十年的研究,最终将时态数据操作添加到SQL:2011标准中,但大多数主流数据库管理系统中都无法使用时态数据查询和操作操作,这使得开发人员不得不从头开始实现这些功能。在本文中,我们扩展了语言集成查询,以支持用统一的宿主语言编写时态查询和更新,并使用该语言执行所需的重写,以便在任何标准关系数据库上自动模拟时态功能。我们引入了两种核心语言,λTLINQ和λVLINQ,分别用于处理事务时间和有效时间数据,并通过将可证明正确的语义保留翻译成非时态核心语言λLINQ来形式化现有的实现策略。我们将展示现有的查询规范化工作如何支持一种非常简单的顺序连接实现策略。我们用Links编程语言实现了我们的方法,并描述了一个基于整理COVID-19统计数据的重要案例研究。
{"title":"Language-Integrated Query for Temporal Data","authors":"S. Fowler, Vashti Galpin, J. Cheney","doi":"10.48550/arXiv.2210.12077","DOIUrl":"https://doi.org/10.48550/arXiv.2210.12077","url":null,"abstract":"Modern applications often manage time-varying data. Despite decades of research on temporal databases, which culminated in the addition of temporal data operations into the SQL:2011 standard, temporal data query and manipulation operations are unavailable in most mainstream database management systems, leaving developers with the unenviable task of implementing such functionality from scratch. In this paper, we extend language-integrated query to support writing temporal queries and updates in a uniform host language, with the language performing the required rewriting to emulate temporal capabilities automatically on any standard relational database. We introduce two core languages, λTLINQ and λVLINQ, for manipulating transaction time and valid time data respectively, and formalise existing implementation strategies by giving provably correct semantics-preserving translations into a non-temporal core language, λLINQ. We show how existing work on query normalisation supports a surprisingly simple implementation strategy for sequenced joins. We implement our approach in the Links programming language, and describe a non-trivial case study based on curating COVID-19 statistics.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"5 4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116823445","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
Data Types as a More Ergonomic Frontend for Grammar-Guided Genetic Programming 数据类型作为语法引导遗传规划的更符合人体工程学的前端
G. Espada, L. Ingelse, Paulo Canelas, Pedro Barbosa, Alcides Fonseca
Genetic Programming (GP) is an heuristic method that can be applied to many Machine Learning, Optimization and Engineering problems. In particular, it has been widely used in Software Engineering for Test-case generation, Program Synthesis and Improvement of Software (GI). Grammar-Guided Genetic Programming (GGGP) approaches allow the user to refine the domain of valid program solutions. Backus Normal Form is the most popular interface for describing Context-Free Grammars (CFG) for GGGP. BNF and its derivatives have the disadvantage of interleaving the grammar language and the target language of the program. We propose to embed the grammar as an internal Domain-Specific Language in the host language of the framework. This approach has the same expressive power as BNF and EBNF while using the host language type-system to take advantage of all the existing tooling: linters, formatters, type-checkers, autocomplete, and legacy code support. These tools have a practical utility in designing software in general, and GP systems in particular. We also present Meta-Handlers, user-defined overrides of the tree-generation system. This technique extends our object-oriented encoding with more practicability and expressive power than existing CFG approaches, achieving the same expressive power of Attribute Grammars, but without the grammar vs target language duality. Furthermore, we evidence that this approach is feasible, showing an example Python implementation as proof. We also compare our approach against textual BNF-representations w.r.t. expressive power and ergonomics. These advantages do not come at the cost of performance, as shown by our empirical evaluation on 5 benchmarks of our example implementation against PonyGE2. We conclude that our approach has better ergonomics with the same expressive power and performance of textual BNF-based grammar encodings.
遗传规划(GP)是一种启发式方法,可以应用于许多机器学习、优化和工程问题。特别是,它已被广泛应用于软件工程中的测试用例生成、程序综合和软件改进(GI)。语法引导遗传规划(GGGP)方法允许用户细化有效的程序解决方案的领域。Backus范式是用于描述GGGP的上下文无关语法(CFG)的最流行的接口。BNF及其衍生语言的缺点是语法语言和程序的目标语言相互交错。我们建议将语法作为内部领域特定语言嵌入到框架的宿主语言中。这种方法具有与BNF和EBNF相同的表达能力,同时使用宿主语言类型系统来利用所有现有工具:编译器、格式化器、类型检查器、自动完成和遗留代码支持。这些工具通常在设计软件,特别是GP系统方面具有实用价值。我们还介绍了元处理程序,这是树生成系统的用户定义覆盖。这种技术扩展了我们的面向对象编码,比现有的CFG方法更具实用性和表达能力,实现了与属性语法相同的表达能力,但没有语法与目标语言的对偶性。此外,我们证明了这种方法是可行的,并展示了一个示例Python实现作为证明。我们还将我们的方法与文本的bnf表示、表达能力和人体工程学进行了比较。这些优势并不以性能为代价,正如我们针对PonyGE2的示例实现的5个基准测试的经验评估所示。我们得出的结论是,我们的方法具有更好的人机工程学,具有与基于文本的bnf语法编码相同的表达能力和性能。
{"title":"Data Types as a More Ergonomic Frontend for Grammar-Guided Genetic Programming","authors":"G. Espada, L. Ingelse, Paulo Canelas, Pedro Barbosa, Alcides Fonseca","doi":"10.48550/arXiv.2210.04826","DOIUrl":"https://doi.org/10.48550/arXiv.2210.04826","url":null,"abstract":"Genetic Programming (GP) is an heuristic method that can be applied to many Machine Learning, Optimization and Engineering problems. In particular, it has been widely used in Software Engineering for Test-case generation, Program Synthesis and Improvement of Software (GI). Grammar-Guided Genetic Programming (GGGP) approaches allow the user to refine the domain of valid program solutions. Backus Normal Form is the most popular interface for describing Context-Free Grammars (CFG) for GGGP. BNF and its derivatives have the disadvantage of interleaving the grammar language and the target language of the program. We propose to embed the grammar as an internal Domain-Specific Language in the host language of the framework. This approach has the same expressive power as BNF and EBNF while using the host language type-system to take advantage of all the existing tooling: linters, formatters, type-checkers, autocomplete, and legacy code support. These tools have a practical utility in designing software in general, and GP systems in particular. We also present Meta-Handlers, user-defined overrides of the tree-generation system. This technique extends our object-oriented encoding with more practicability and expressive power than existing CFG approaches, achieving the same expressive power of Attribute Grammars, but without the grammar vs target language duality. Furthermore, we evidence that this approach is feasible, showing an example Python implementation as proof. We also compare our approach against textual BNF-representations w.r.t. expressive power and ergonomics. These advantages do not come at the cost of performance, as shown by our empirical evaluation on 5 benchmarks of our example implementation against PonyGE2. We conclude that our approach has better ergonomics with the same expressive power and performance of textual BNF-based grammar encodings.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130900028","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
Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences 第21届ACM SIGPLAN生成式编程国际会议论文集:概念和经验
{"title":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","authors":"","doi":"10.1145/3564719","DOIUrl":"https://doi.org/10.1145/3564719","url":null,"abstract":"","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116661830","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}
引用次数: 0
期刊
Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences
全部 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