Jump to content

Is Au3 a type of functional programming language?


danaman123
 Share

Recommended Posts

https://en.wikipedia.org/wiki/Functional_programming

https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0#:~:text=Functional programming (often abbreviated FP,state flows through pure functions.

 

Is Au3 a type of functional programming language? I know it's a style of programming not a language... but I find Au3's libraries/UDFs to be more function centric focused than most other languages. 

 

Link to comment
Share on other sites

I don't think so, functional programming is more related to using pure mathematics than using "functions", it is easy to confuse both because function can mean different things depending on the context. Haskell would be a good candidate for a functional programming language I imagine.

I think you are looking for the term "Procedural", which correctly matches the Functions we use in AutoIt, sometimes functions are also called procedures, bits of code which can be called to perform a procedure :). Most BASIC-like languages are procedural programming languages.

The other kind of programming languages are called Object-oriented (programming) languages, but I am guessing you are already familiar with that. Some BASIC-derivatives have added support for these OOP features.

EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time)

DcodingTheWeb Forum - Follow for updates and Join for discussion

Link to comment
Share on other sites

6 hours ago, TheDcoder said:

I don't think so, functional programming is more related to using pure mathematics than using "functions", it is easy to confuse both because function can mean different things depending on the context. Haskell would be a good candidate for a functional programming language I imagine.

I think you are looking for the term "Procedural", which correctly matches the Functions we use in AutoIt, sometimes functions are also called procedures, bits of code which can be called to perform a procedure :). Most BASIC-like languages are procedural programming languages.

The other kind of programming languages are called Object-oriented (programming) languages, but I am guessing you are already familiar with that. Some BASIC-derivatives have added support for these OOP features.

Hmm I guess it depends on how a person uses Autoit. I generally use Autoit to save time on calculating mathematical equations.. 

Link to comment
Share on other sites

2 hours ago, danaman123 said:

Hmm I guess it depends on how a person uses Autoit. I generally use Autoit to save time on calculating mathematical equations.. 

Not at all. being a functional/object-oriented/imperative/whatever is a given language property, forcing a programming paradigm.

That you use an imperative language like AutoIt to solve math equations using functions doesn't mean AutoIt is a functional language. See Erlang, Haskell, Mathematica and many others for that.

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Link to comment
Share on other sites

On 9/29/2020 at 11:53 AM, jchd said:

Not at all. being a functional/object-oriented/imperative/whatever is a given language property, forcing a programming paradigm.

That you use an imperative language like AutoIt to solve math equations using functions doesn't mean AutoIt is a functional language. See Erlang, Haskell, Mathematica and many others for that.

"Procedural programming (PP), also known as inline programming takes a top-down approach. It is about writing a list of instructions to tell the computer what to do step by step. It relies on procedures or routines. ... Functional programming (FP) is about passing data from function to function to function to get a result."

https://medium.com/@LiliOuakninFelsen/functional-vs-object-oriented-vs-procedural-programming-a3d4585557f3#:~:text=Procedural programming (PP)%2C also,relies on procedures or routines.&text=Functional programming (FP) is about,function to get a result.

I don't see why Au3 can't be used for functional programming... my Au3 programs definitely don't use a "step by step"/"top-down approach". This is an exact representation of how my Au3 library works "In FP, functions are treated as data, meaning you can use them as parameters, return them, build functions from other functions, and build custom functions." But Some of my functions are mutable "Functions in FP have to be pure functions, they should avoid shared state, and side effects and data should be immutable"

Though some of my larger Au3 programs do contain mutable functions that rely on shared files. All of my functions are built on top of other functions & work in a non linear way with each other. I've never coded any type of functional language before but I have done a fair share of OOP python, vba, & other languages. I just wanted to know what type of programmer I have evolved into... hmm maybe something else entirely. I do prefer Au3 over other languages as I am way more productive.

Link to comment
Share on other sites

6 hours ago, danaman123 said:

 Functional programming (FP) is about passing data from function to function to function to get a result.

No, FP is about composing functions as first-class citizens.

 

6 hours ago, danaman123 said:

"Functions in FP have to be pure functions, they should avoid shared state, and side effects and data should be immutable"

AutoIt knows nothing about λ-calculus, pure functions, composing functions, allows functions with side-effects.
With an FP language, functions can be computed, modified, examinated (introspection) all during program run.

 

6 hours ago, danaman123 said:

I've never coded any type of functional language before

If you try and you'll appreciate the fundamental difference.

 

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...