Мартин Фаулер: Бағдарламалық жасақтаманы жетілдіруші және тәжірибелі дамытушы
Martin Fowler (software engineer)
Мартин Фаулер – американдық бағдарламашы, жазушы, спикер. Кодты жаңарту (refactoring) және Presentation Model архитектурасын әзірлеген. Бағдарламалау туралы көбірек біліңіз!
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Американдық бағдарламашы, автор және қоғамдық спикер.
American software developer, author and public speaker
Оның 1999 жылғы "Рефакторинг" кітабы кодты рефакторингтеу амалын танымал етті. 2004 жылы ол "Презентация моделі" (ПМ) деп аталатын жаңа архитектуралық үлгіні ұсынды.
His 1999 book Refactoring popularised the practice of code refactoring. In 2004 he introduced a new architectural pattern, called Presentation Model (PM).
Өмірбаян
Фаулер Англияның Уолсолл қаласында туып өскен, орта білімін Queen Mary's Grammar School-да алған. 1986 жылы Лондон университетінің колледжін бітірді. 1994 жылы ол Америка Құрама Штаттарына көшіп, Бостон, Массачусетс штатының маңындағы Мелроуз қаласында тұрады. Фаулер 1980-ші жылдардың басында бағдарламалық жасақтама саласында жұмыс істей бастады. 1986 жылы университетті бітіргеннен кейін 1991 жылға дейін Coopers & Lybrand компаниясында бағдарламалық қамтамасыз етуді әзірлеумен айналысты. 2000 жылы ThoughtWorks жүйелерді интеграциялау және консалтингтік компаниясына қосылды.
Fowler was born and grew up in Walsall, England, where he went to Queen Mary's Grammar School for his secondary education. He graduated at University College London in 1986. In 1994 he moved to the United States, where he lives near Boston, Massachusetts in the suburb of Melrose. Fowler started working with software in the early 1980s. Out of university in 1986 he started working in software development for Coopers & Lybrand until 1991. In 2000 he joined ThoughtWorks, a systems integration and consulting company,
Фаулер бағдарламалық қамтамасыз етуді дамыту тақырыбында тоғыз кітап жазды. Ол Agile Alliance мүшесі және 2001 жылы 16 автормен бірге Agile Software Development манифестін жасауға атсалысты. Ол блог пен викидің қосындысы – бликіні жүргізеді. Ол Тәуелділік инъекциясын Бақылауды кері бұрудың бір түрі ретінде танымал етті.
Fowler has written nine books on the topic of software development. He is a member of the Agile Alliance and helped create the Manifesto for Agile Software Development in 2001, along with 16 fellow signatories. He maintains a bliki, a mix of blog and wiki. He popularised the term Dependency Injection as a form of Inversion of Control.
Жарияланымдар
1996 жыл. Талдау үлгілері: Қайта пайдалануға болатын нысандық модельдер. Эддисон Уэсли. 1997 жыл. UML Distilled: Стандартты объектілі модельдеу тіліне қысқаша нұсқаулық. Эддисон Уэсли. 1999 жыл. Рефакторинг: Бар кодтың дизайнын жақсарту, Кент Бек, Джон Брант, Уильям Опдике және Дон Робертспен (1999 жылдың маусымы). Эддисон Уэсли. 2000 жыл. Экстремалды бағдарламалауды жоспарлау. Кент Бекпен бірге. Эддисон Уэсли. 2002 жыл. Кәсіпорын қолданба архитектурасының үлгілері. Дэвид Райс, Мэтью Фоммел, Эдвард Хиатт, Роберт Ми және Рэнди Стаффордпен бірге. Эддисон Уэсли. 2010 жыл. Доменге арналған тілдер. Ребекка Парсонспен бірге. Эддисон Уэсли. 2012 жыл. NoSQL Distilled: Көптілді тұрақтылықтың пайда болуына қысқаша нұсқаулық. Прамод Садаладжмен бірге. Эддисон Уэсли. 2013 жыл. Рефакторинг: Ruby Edition. Кент Бек, Шейн Харви және Джей Филдспен бірге. Эддисон Уэсли. 2018 жыл. Рефакторинг: Бар кодтың дизайнын жақсарту, екінші басылым. Кент Бек және Мартин Фаулер. Эддисон Уэсли. .
1996. Analysis Patterns: Reusable Object Models. Addison Wesley. 1997. UML Distilled: A Brief Guide to the Standard Object Modeling Language. Addison Wesley. 1999. Refactoring: Improving the Design of Existing Code, With Kent Beck, John Brant, William Opdyke, and Don Roberts (June 1999). Addison Wesley. 2000. Planning Extreme Programming. With Kent Beck. Addison Wesley. 2002. Patterns of Enterprise Application Architecture. With David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy Stafford. Addison Wesley. 2010. Domain Specific Languages. With Rebecca Parsons. Addison Wesley. 2012. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. With Pramod Sadalage. Addison Wesley. 2013. Refactoring: Ruby Edition. With Kent Beck, Shane Harvie, and Jay Fields. Addison Wesley. 2018. Refactoring: Improving the Design of Existing Code, Second Edition. Kent Beck, and Martin Fowler. Addison Wesley. .
Доменге тән тілдер
Фаулер «Domain specific languages» деген кітабында Domain specific languages, DSL туралы баяндайды. DSL-дер құрастырылатын бағдарламалау тілдері ретінде сипатталады, олардың назары нақты бір салаға шоғырланған және шектеулі мүмкіндіктерге ие. DSL бағдарламашының толық бағдарламалау тілін түсіну қажеттілігін жою арқылы өнімділікті арттырады, сала мамандарымен байланыс құралын ұсынып, міндетті орындау жолын міндеттің өзінен ажыратады деп саналады. Бұл артықшылықтар жаңа тілді үйрену және осы тіл үшін құралдар жасау шығындарымен, сондай-ақ әртүрлі тілдерге байланысты оқшауланумен және DSL-де қолданылатын абстракциялар міндетке сәйкес келмеуімен теңдестіріледі. Фаулер ішкі (немесе кіріктірілген) және сыртқы DSL тұжырымдамасын енгізеді, мұнда ішкі DSL басқа тілдің ішкі жиыны болып табылады және сыртқы тілдің құралдарымен орындалуы мүмкін. Ruby және Lisp ішкі DSL-дердің кең таралған мысалдары ретінде келтіріледі. Ол сондай-ақ DSL-дің орындалуын анықтайтын Семантикалық модель туралы идеяны ұсынады. DSL-дің әртүрлі мысалдары келтірілген, соның ішінде graphviz – графиктерді көрсетуге арналған тіл; JMock – Java-дағы мақтау жүйесі; CSS – веб-сайттың стильдік элементтерін анықтауға арналған тіл; HQL – Java-дағы объектілік реляциялық бейнелеуші; XAML – графикалық пайдаланушы интерфейстерін анықтау және өзгерту үшін қолданылатын тіл; FIT – сынақ сценарийларын бейнелеуге арналған тіл; және make – бағдарламалық құралдарды құру құралы. Кітапта сыртқы DSL-ді parser-лер, lexer-лер, абстрактілі синтаксистік ағаштар және кодты құру сияқты құралдарды пайдаланып іске асыру жолдары талқыланады, бұл «синтаксистік басқаруға негізделген аударма» деп аталады. Бұл «делимитерлік басқаруға негізделген аудармамен» салыстырылады, ол қарапайым болғамен, азырақ қуатты. Мұнда тіл жеке жазбаларға негізделген делимитерлерге бөліну және логиканы ауыстыру арқылы түсіндіруге жеткілікті қарапайым. Ішкі DSL-ді іске асыру жолдары талқыланады, соның ішінде ұялы функцияларды шақыру, функцияларды шақыру тізбегі немесе әдіс тізбегіне ерекше назар аударылады.
In his book, Domain specific languages, Fowler discusses Domain specific languages, DSL. DSLs are said to be defined by being composable programming languages, with their focus on an individual domain and having limited expressiveness. It is argued that DSLs can increase productivity by removing the requirement of the programmer to understand a full programming language, providing a means of communication with domain experts, and separate the manner of execution of a task from the definition of a task itself. These benefits are set against the cost of learning a new language and building the tools for this language, siloing that results for different languages and the abstractions used in DSLs not being suitable for a task. Fowler introduces the concept of internal (or embedded) and external DSL, an internal DSL being a DSL that is a subset of another language and can be executed by the tools for this outer language. Ruby and Lisp are given as an example of languages where internal DSLs are common. He also introduces the idea of Semantic Model which defines the execution of a DSL. Various examples of DSLs are presented including graphviz, a language for specifying graphs to be rendered; JMock, a java mocking framework; CSS, a language to specify stylistic elements of a website; HQL, an object relational mapper in Java; XAML, a language used to specify and change graphical user interfaces; FIT, a language to express testing scenarios; and make, a tool to build software
The book discusses implementing an external DSL using tools like parsers, lexers, abstract syntax trees and code generation referred to as "syntax driven translation" This is contrasted with "delimiter driven translation" which is said to be simpler but less powerful. Here the language is simple enough to be interpreted by splitting on delimiters and switching logic based on individual entries. Ways of implementing internal DSLs is discussed, with attention paid to nested function calls, sequences of function calls, or method chaining amongst other methods.