Layout Options
Which layout option do you want to use?
Wide
Boxed
Color Schemes
Which theme color do you want to use? Select from here.
Reset color
Reset Background
Forums
New posts
Trending
Random
What's new
New posts
Latest activity
Rules
Libraries
New Audios
New Comments
Search Profile Audios
Clubs
Public Events
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Trending
Random
Menu
Log in
Register
Install the app
Install
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Forums
Boards
/rps/ - Religion, Philosophy & Spirituality
[FOID RAMBLINGS] Functional Programming Through the Lens of a Philosopher and Linguist
Message
<blockquote data-quote="deaf_judger" data-source="post: 61126" data-attributes="member: 390"><p>[PLAIN](GOTO Conferences 2023)</p><p>[/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 22px">[PLAIN]Background[/PLAIN]</span></strong></p><p> [PLAIN]Anjana Vakil is a developer advocate at Observable. Observable is a platform that makes web applications for data visualization. She has a background in linguistics & philosophy. She majored in philosophy and was fascinated by foreign languages. She taught english as a foreign language and discovered her interest in linguistics. She discovered computational linguistics, which uses statistics to better understand language and create better technology(TTS, voice recognition, ...). She enjoyed developing the software more than the linguistics and moved into compsci.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 22px">[PLAIN]Connection between compsci-fields & philosophy/linguistics[/PLAIN]</span></strong></p><p></p><p> </p><p></p><p> [PLAIN]The act of computing & creating complex programs is more about the people involved than the computers. Computers do not care whether a program is elegant or not. They simply follow instructions.</p><p> However, humans are different: We try to write code in a way that its easy for someone to remember or be introduced to. This allows us to create powerful expressive systems that are made of the humans writing the code, AND the code itself. Jensen relates, saying that as he progressed through his journey he began thinking about code cleanliness.(TODO: What is clean code?[/PLAIN][1][PLAIN]). Anjana says that code should be performant for both humans and computers. Jensen agrees and adds: git also tells us about social factors of the information. We can see which codes are touched often and which aren't. Being able to see that data helps us understand a codebase and how it functions.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 22px">[PLAIN]Functional Programming[/PLAIN]</span></strong></p><p><strong></strong></p><p><strong><span style="font-size: 18px">[PLAIN]What defines a functional language?[/PLAIN]</span></strong></p><p> [PLAIN]A functional language is a language that [/PLAIN]<u>[PLAIN]supports functional programming[/PLAIN]</u>[PLAIN]. This means programming with only pure functions(Input-> Output). No side effects. Nothing else in the program is changed. Another way to think of it is 'programming without state'. Instead of thinking about values changing and going all around, think about data going in and out.</p><p> [/PLAIN]</p><p></p><p> [PLAIN]Purely functional languages ONLY allow pure functions, while multi-paradigm languages let you program functionally if you want to, and they have the features you need for it. Pure functional languages are often favored in data-centric domains because they make code easier to debug, test, and scale.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 18px">[PLAIN]What features support a functional programming style?[/PLAIN]</span></strong></p><p> [PLAIN]For functional programming, functions must be treated like any other variable or value. This concept is called first-class functions and a programming language supports them if a function can be assigned to variables, passed as an argument, and returned from other functions. Being able to map or filter data without explicit loops. and having access to lambda functions(see: [/PLAIN]<a href="http://id:928a9296-9949-47c4-bd28-ecba76791a4b" target="_blank">[PLAIN]Lambda Calculus[/PLAIN]</a>[PLAIN]).</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 18px">[PLAIN]Benefits of Functional Programming[/PLAIN]</span></strong></p><p> [PLAIN]A stateful program depends on checking for things and test cases. This produces bugs and impredictability. Functional programs are very easy to test: you have your input and your output. The answer will never be undefined and you can isolate functions. Nothing will change because it depends on no state. This frees mind-space and makes it easier to learn: you just have functions. Obviously, it gets more complicated than that, but you only have to keep track of your functions. There are no variables to remember.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 22px">[PLAIN]Gatekeeping In Compsci[/PLAIN]</span></strong></p><p> [PLAIN]There is a sense of gatekeeping in the computer science environment. People feel special for struggling to learn difficult concepts. They make what they learned seem impossibly difficult and put beginners down, continuing the cycle. Anjana tells us that [/PLAIN]<u>[PLAIN]anyone can program[/PLAIN]</u>[PLAIN]. You do not need to be a genius. She reminds us that we can explain concepts to others.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 22px">[PLAIN]Personal Commentary[/PLAIN]</span></strong></p><p><strong></strong></p><p><strong><span style="font-size: 18px">[PLAIN]The World Is Impure[/PLAIN]</span></strong></p><p> [PLAIN]Human activities change over time. The world has [/PLAIN]<u>[PLAIN]state[/PLAIN]</u>[PLAIN]. We want to do things, and these are side effects. You cannot do anything in a functional language but return an output. How do we deal with real-world side effects? If life were a functional program: a pure action would be something that depends on your intention and results in predictable consequences without harming yourself or others.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 18px">[PLAIN]Intentionality and Side-Effects[/PLAIN]</span></strong></p><p> [PLAIN]Human actions are ineherently side-effecting: speaking, creating, or even withdrawal influences the environment. Side effects must be managed instead of eliminated. Prioritize non-coercion and controlled minimal interventions.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 18px">[PLAIN]Boundary Awareness[/PLAIN]</span></strong></p><p> [PLAIN]Functional programs isolate their internal state. I mirror this with boundaries. My withdrawal replaces reactive or ego-driven engagement.</p><p> [/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 18px">[PLAIN]Functional Programming as an Ethical metaphor[/PLAIN]</span></strong></p><p> [PLAIN]Pure functions are predictable non-coercive rule-governed actions. Side effects are inevitable, but can be minimized & anticipated. Structure, clarity, and intention are the measure of moral and technical virtue</p><p> [/PLAIN]</p><p> [PLAIN]GOTO Conferences, ed. 2023. [/PLAIN]<em>[PLAIN]Functional Programming Through the Lens of a Philosopher & Linguist • Anjana Vakil & Lars Jensen[/PLAIN]</em>[PLAIN]. Directed by GOTO Conferences. [/PLAIN][MEDIA=youtube]WWV5usUCyzQ[/MEDIA][PLAIN].[/PLAIN]</p><p></p><p></p><p></p><p><strong><span style="font-size: 22px">[PLAIN]Footnotes[/PLAIN]</span></strong></p><p></p><p></p><p></p><p>Footnotes</p><p>_________</p><p></p><p>[PLAIN][1] Clean code is code that is readable, understandable, and maintainable. It emphasizes simplicity, clarity, and minimal side effects, making it easier for humans to reason about the system. EDIT: In this context, 'clean code' is about reducing cognitive load</p><p>[/PLAIN]</p></blockquote><p></p>
[QUOTE="deaf_judger, post: 61126, member: 390"] [PLAIN](GOTO Conferences 2023) [/PLAIN] [B][SIZE=6][PLAIN]Background[/PLAIN][/SIZE][/B] [PLAIN]Anjana Vakil is a developer advocate at Observable. Observable is a platform that makes web applications for data visualization. She has a background in linguistics & philosophy. She majored in philosophy and was fascinated by foreign languages. She taught english as a foreign language and discovered her interest in linguistics. She discovered computational linguistics, which uses statistics to better understand language and create better technology(TTS, voice recognition, ...). She enjoyed developing the software more than the linguistics and moved into compsci. [/PLAIN] [B][SIZE=6][PLAIN]Connection between compsci-fields & philosophy/linguistics[/PLAIN][/SIZE][/B] [PLAIN]The act of computing & creating complex programs is more about the people involved than the computers. Computers do not care whether a program is elegant or not. They simply follow instructions. However, humans are different: We try to write code in a way that its easy for someone to remember or be introduced to. This allows us to create powerful expressive systems that are made of the humans writing the code, AND the code itself. Jensen relates, saying that as he progressed through his journey he began thinking about code cleanliness.(TODO: What is clean code?[/PLAIN][1][PLAIN]). Anjana says that code should be performant for both humans and computers. Jensen agrees and adds: git also tells us about social factors of the information. We can see which codes are touched often and which aren't. Being able to see that data helps us understand a codebase and how it functions. [/PLAIN] [B][SIZE=6][PLAIN]Functional Programming[/PLAIN][/SIZE] [SIZE=5][PLAIN]What defines a functional language?[/PLAIN][/SIZE][/B] [PLAIN]A functional language is a language that [/PLAIN][U][PLAIN]supports functional programming[/PLAIN][/U][PLAIN]. This means programming with only pure functions(Input-> Output). No side effects. Nothing else in the program is changed. Another way to think of it is 'programming without state'. Instead of thinking about values changing and going all around, think about data going in and out. [/PLAIN] [PLAIN]Purely functional languages ONLY allow pure functions, while multi-paradigm languages let you program functionally if you want to, and they have the features you need for it. Pure functional languages are often favored in data-centric domains because they make code easier to debug, test, and scale. [/PLAIN] [B][SIZE=5][PLAIN]What features support a functional programming style?[/PLAIN][/SIZE][/B] [PLAIN]For functional programming, functions must be treated like any other variable or value. This concept is called first-class functions and a programming language supports them if a function can be assigned to variables, passed as an argument, and returned from other functions. Being able to map or filter data without explicit loops. and having access to lambda functions(see: [/PLAIN][URL='http://id:928a9296-9949-47c4-bd28-ecba76791a4b'][PLAIN]Lambda Calculus[/PLAIN][/URL][PLAIN]). [/PLAIN] [B][SIZE=5][PLAIN]Benefits of Functional Programming[/PLAIN][/SIZE][/B] [PLAIN]A stateful program depends on checking for things and test cases. This produces bugs and impredictability. Functional programs are very easy to test: you have your input and your output. The answer will never be undefined and you can isolate functions. Nothing will change because it depends on no state. This frees mind-space and makes it easier to learn: you just have functions. Obviously, it gets more complicated than that, but you only have to keep track of your functions. There are no variables to remember. [/PLAIN] [B][SIZE=6][PLAIN]Gatekeeping In Compsci[/PLAIN][/SIZE][/B] [PLAIN]There is a sense of gatekeeping in the computer science environment. People feel special for struggling to learn difficult concepts. They make what they learned seem impossibly difficult and put beginners down, continuing the cycle. Anjana tells us that [/PLAIN][U][PLAIN]anyone can program[/PLAIN][/U][PLAIN]. You do not need to be a genius. She reminds us that we can explain concepts to others. [/PLAIN] [B][SIZE=6][PLAIN]Personal Commentary[/PLAIN][/SIZE] [SIZE=5][PLAIN]The World Is Impure[/PLAIN][/SIZE][/B] [PLAIN]Human activities change over time. The world has [/PLAIN][U][PLAIN]state[/PLAIN][/U][PLAIN]. We want to do things, and these are side effects. You cannot do anything in a functional language but return an output. How do we deal with real-world side effects? If life were a functional program: a pure action would be something that depends on your intention and results in predictable consequences without harming yourself or others. [/PLAIN] [B][SIZE=5][PLAIN]Intentionality and Side-Effects[/PLAIN][/SIZE][/B] [PLAIN]Human actions are ineherently side-effecting: speaking, creating, or even withdrawal influences the environment. Side effects must be managed instead of eliminated. Prioritize non-coercion and controlled minimal interventions. [/PLAIN] [B][SIZE=5][PLAIN]Boundary Awareness[/PLAIN][/SIZE][/B] [PLAIN]Functional programs isolate their internal state. I mirror this with boundaries. My withdrawal replaces reactive or ego-driven engagement. [/PLAIN] [B][SIZE=5][PLAIN]Functional Programming as an Ethical metaphor[/PLAIN][/SIZE][/B] [PLAIN]Pure functions are predictable non-coercive rule-governed actions. Side effects are inevitable, but can be minimized & anticipated. Structure, clarity, and intention are the measure of moral and technical virtue [/PLAIN] [PLAIN]GOTO Conferences, ed. 2023. [/PLAIN][I][PLAIN]Functional Programming Through the Lens of a Philosopher & Linguist • Anjana Vakil & Lars Jensen[/PLAIN][/I][PLAIN]. Directed by GOTO Conferences. [/PLAIN][MEDIA=youtube]WWV5usUCyzQ[/MEDIA][PLAIN].[/PLAIN] [B][SIZE=6][PLAIN]Footnotes[/PLAIN][/SIZE][/B] Footnotes _________ [PLAIN][1] Clean code is code that is readable, understandable, and maintainable. It emphasizes simplicity, clarity, and minimal side effects, making it easier for humans to reason about the system. EDIT: In this context, 'clean code' is about reducing cognitive load [/PLAIN] [/QUOTE]
Insert quotes…
Name
Verification
Post reply
Forums
Boards
/rps/ - Religion, Philosophy & Spirituality
[FOID RAMBLINGS] Functional Programming Through the Lens of a Philosopher and Linguist
Top