Quiz
Before you expand code snippets, think for a while how would you solve the problem. Just try to estimate the complexity.
Question 1
What's the name of the following method? You know this method. If you don't, you shouldpublic static boolean xxx(String str) { int strLen; if (str == null || (strLen = str.length()) == 0) { return true; } for (int i = 0; i < strLen; i++) { if ((Character.isWhitespace(str.charAt(i)) == false)) { return false; } } return true; }How much time did you need to read and understand one of the most common functions?
Question 2
Can you do it better? Can you make this code more readable? Pick any tool you want.isBlank = all isSpace
Question 3
Search all subdirectories and find all mp3 files greater than 9mb.find -iname "*.mp3" -size +9MTiny academic examples? Maybe. Let's try something bigger and more complex.
Question 4
Write sudoku solver. The following solution is from Manuel Rotter's blog.:- use_module(library(clpfd)). sudoku(Rows) :- append(Rows, Vs), Vs ins 1..9, maplist(all_distinct, Rows), transpose(Rows, Columns), maplist(all_distinct, Columns), Rows = [A,B,C,D,E,F,G,H,I], blocks(A, B, C), blocks(D, E, F), blocks(G, H, I), maplist(label, Rows). blocks([], [], []). blocks([A,B,C|Bs1], [D,E,F|Bs2], [G,H,I|Bs3]) :- all_distinct([A,B,C,D,E,F,G,H,I]), blocks(Bs1, Bs2, Bs3)Not a real life examples? No company would ever use such strange languages to make money? Well... they and they do.
Question 5
Something from corpo world. Typical security for web application. Only users with admin role (based on company's ldap) can access the application and only via https. Secondary log in of the same user should terminate his previous session. Each login should create new session id to prevent session fixation attack. Css files should not be protected because of performance.<ldap-server url="ldap://mycompany.com:389/dc=mycompany,dc=com" /> <ldap-authentication-provider user-dn-pattern="uid={0},ou=people" group-search-base="ou=groups" /> <http pattern="/css/**" security="none"/> <http auto-config='true'> <form-login login-page='/login.jsp'/> <intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY" requires-channel="https"/> <intercept-url pattern="/**" access="ROLE_ADMIN" requires-channel="https"/> <session-management> <concurrency-control max-sessions="1" /> </session-management> </http>End of quiz. If you have other examples of a language/tool perfectly suited for a specific task, send them to me! Disclosure: prolog and spring examples haven't been tested.
Of course, you can't freely mix languages. Cost of integrating different languages, not designed for it, is rather high. Complicated build process, nonexchangeable data types, different runtimes, bad IDE support and so on. So, before each project, choose your language wisely. Will it cover most of requirements? Will it cover the most time-consuming ones? Then you won't add another language just to write
isBlank
but at some point it may be worth it. Will you recognize it when you reach that point? Cause when all you have is a hammer...
0 komentarze :
Post a Comment