Most functional languages have design features that enhance their security.
I'm referring to Clojure, Haskell, and Erlang, but this won't be limited to
those three. As someone who was hired to handle cyber security needs of a
contracting IT company, my personal and professional opinion is this: I
would trust someone who programs in a functional language to create _and_
maintain software that is relatively more secure.

If you take what James Reeves said about writing secure code and apply it
to alternative technologies which don't implement functional programming,
you'll see that these technologies do not put an emphasis in secure or
sometimes even modern development practices.

Currently I'm on assignment doing risk analysis at a place which uses
both Adobe ColdFusion and .NET IIS based web applications. A year ago they
got hacked pretty bad. Yes, I will bash Adobe and Microsoft.

Yes, .NET and ColdFusion have the same object-oriented and procedural
paradigms that all our university "introduction to programming" classes
have made us feel comfortable with. Yes, deployment _can_ be as easy as
uploading code to a shared FTP folder. Yes, these products integrate well
with the easy-to-use graphical user interfaces that Adobe's and Microsoft's
development tools all come with.

But you know what? While Microsoft and Adobe were focusing on making their
products easier to use for their next target market, the Clojure devs were
busy designing a language that is error-resistant from the ground up. Not
only does it handle errors better, but it also forces the programmer to
program in a way that is less error prone yet still productive. While
Microsoft and Adobe were building lame FTP clients into their development
tools, the Lein devs were doing better by integrating Maven's build and
dependency management into a dead-simple deployment tool that works well
with all kinds of online code repositories. Code repositories which by the
way, nether Adobe or Microsoft had (at the time) encouraged the use of.
Even though much of Clojure is still terminal based (i.e., REPL ), at least
there aren't multiple levels of undocumented and proprietary abstraction.
With Clojure, you can get as abstract or as low level as you want (OpenJDK,
Dtrace)

All these are characteristics of what I'd call Good (TM) Modern (TM)
Software Development (TM), so they can still apply to
non-functional languages too. Without a doubt,  however, you'll find these
characteristics in most of today's functional programming languages.
Clojure has them built in. Pretty much all the Haskell and Erlang
programmers are doing this. These are languages that will help any
organization avoid a whole host of problems.

If you were trying to do software development as a career, secure or not,
you can bet that any functional programming dev who works with you will be
competent enough to create reasonably secure code. That's not the case with
all software development. On top of that, when a security vulnerability is
discovered - as long as it's not something inherent to a Java library or
the JVM - fixing it should be less of a headache as long as you know your
code and read the documentation.

By now I might sound critical of other developers, but you have to
understand that many of these groups get paid A LOT of money to create
things correctly.


On Sunday, May 4, 2014, James Reeves <ja...@booleanknot.com> wrote:

> I've never heard anyone express that sentiment before. If anything the
> opposite is true.
>
> A large part of writing secure code is about avoiding errors, so any
> language feature that helps you write error-free code is good for security.
> Functional programming eliminates mutable state as a source of errors,
> which is one less thing that can go wrong in your secure code. Functional
> languages often have more sophisticated static typing as well, which is yet
> another potential aid to producing secure code.
>
> - James
>
>
> On 4 May 2014 08:24, Cecil Westerhof 
> <cldwester...@gmail.com<javascript:_e(%7B%7D,'cvml','cldwester...@gmail.com');>
> > wrote:
>
>> I heard the stand that functional programming made it difficult to write
>> secure programs. I do not know enough of functional programming yet to
>> determine the value of a statement like this. What is the take here about
>> it?
>>
>> --
>> Cecil Westerhof
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to 
>> clojure@googlegroups.com<javascript:_e(%7B%7D,'cvml','clojure@googlegroups.com');>
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com<javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to 
>> clojure+unsubscr...@googlegroups.com<javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to 
> clojure@googlegroups.com<javascript:_e(%7B%7D,'cvml','clojure@googlegroups.com');>
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com<javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to 
> clojure+unsubscr...@googlegroups.com<javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');>
> .
> For more options, visit https://groups.google.com/d/optout.
>


-- 
 - EJR

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to