From 7962f5e39b7aaf49f49aa25dce33b3c78476a939 Mon Sep 17 00:00:00 2001 From: gabriel Date: Thu, 9 Mar 2023 03:45:36 -0300 Subject: [PATCH] Implemented 3 more language options for the Plugin --- autoload/startify/fortune.vim | 253 ++++------------- autoload/startify/langs.vim | 519 ++++++++++++++++++++++++++++++++++ doc/startify.txt | 8 + 3 files changed, 577 insertions(+), 203 deletions(-) create mode 100644 autoload/startify/langs.vim diff --git a/autoload/startify/fortune.vim b/autoload/startify/fortune.vim index 21fff81..140386d 100644 --- a/autoload/startify/fortune.vim +++ b/autoload/startify/fortune.vim @@ -2,76 +2,76 @@ scriptencoding utf-8 " Function: s:get_random_offset {{{1 function! s:get_random_offset(max) abort - return str2nr(matchstr(reltimestr(reltime()), '\.\zs\d\+')[1:]) % a:max + return str2nr(matchstr(reltimestr(reltime()), '\.\zs\d\+')[1:]) % a:max endfunction " Function: s:draw_box {{{1 function! s:draw_box(lines) abort - let longest_line = max(map(copy(a:lines), 'strwidth(v:val)')) - let top_bottom_without_corners = repeat(s:char_top_bottom, longest_line + 2) - let top = s:char_top_left . top_bottom_without_corners . s:char_top_right - let bottom = s:char_bottom_left . top_bottom_without_corners . s:char_bottom_right - let lines = [top] - for l in a:lines - let offset = longest_line - strwidth(l) - let lines += [s:char_sides . ' '. l . repeat(' ', offset) .' ' . s:char_sides] - endfor - let lines += [bottom] - return lines + let longest_line = max(map(copy(a:lines), 'strwidth(v:val)')) + let top_bottom_without_corners = repeat(s:char_top_bottom, longest_line + 2) + let top = s:char_top_left . top_bottom_without_corners . s:char_top_right + let bottom = s:char_bottom_left . top_bottom_without_corners . s:char_bottom_right + let lines = [top] + for l in a:lines + let offset = longest_line - strwidth(l) + let lines += [s:char_sides . ' '. l . repeat(' ', offset) .' ' . s:char_sides] + endfor + let lines += [bottom] + return lines endfunction " Function: #quote {{{1 function! startify#fortune#quote() abort - return g:startify_custom_header_quotes[s:get_random_offset(len(g:startify_custom_header_quotes))] + return g:startify_custom_header_quotes[s:get_random_offset(len(g:startify_custom_header_quotes))] endfunction " Function: #boxed {{{1 function! startify#fortune#boxed(...) abort - let wrapped_quote = [] - if a:0 && type(a:1) == type([]) - let quote = a:1 - else - let Quote = startify#fortune#quote() - let quote = type(Quote) == type(function('tr')) ? Quote() : Quote - endif - for line in quote - let wrapped_quote += split(line, '\%50c.\{-}\zs\s', 1) - endfor - let wrapped_quote = s:draw_box(wrapped_quote) - return wrapped_quote + let wrapped_quote = [] + if a:0 && type(a:1) == type([]) + let quote = a:1 + else + let Quote = startify#fortune#quote() + let quote = type(Quote) == type(function('tr')) ? Quote() : Quote + endif + for line in quote + let wrapped_quote += split(line, '\%50c.\{-}\zs\s', 1) + endfor + let wrapped_quote = s:draw_box(wrapped_quote) + return wrapped_quote endfunction " Function: #cowsay {{{1 function! startify#fortune#cowsay(...) abort - if a:0 - let quote = a:0 && type(a:1) == type([]) ? a:1 : startify#fortune#quote() - let s:char_top_bottom = get(a:000, 1, s:char_top_bottom) - let s:char_sides = get(a:000, 2, s:char_sides) - let s:char_top_left = get(a:000, 3, s:char_top_left) - let s:char_top_right = get(a:000, 4, s:char_top_right) - let s:char_bottom_right = get(a:000, 5, s:char_bottom_right) - let s:char_bottom_left = get(a:000, 6, s:char_bottom_left) - else - let quote = startify#fortune#quote() - endif - let boxed_quote = startify#fortune#boxed(quote) - return boxed_quote + s:cow + if a:0 + let quote = a:0 && type(a:1) == type([]) ? a:1 : startify#fortune#quote() + let s:char_top_bottom = get(a:000, 1, s:char_top_bottom) + let s:char_sides = get(a:000, 2, s:char_sides) + let s:char_top_left = get(a:000, 3, s:char_top_left) + let s:char_top_right = get(a:000, 4, s:char_top_right) + let s:char_bottom_right = get(a:000, 5, s:char_bottom_right) + let s:char_bottom_left = get(a:000, 6, s:char_bottom_left) + else + let quote = startify#fortune#quote() + endif + let boxed_quote = startify#fortune#boxed(quote) + return boxed_quote + s:cow endfunction " Function: #predefined_quotes {{{1 function! startify#fortune#predefined_quotes() abort - return s:predefined_quotes + return s:predefined_quotes endfunction " Variables {{{1 let s:cow = [ - \ ' o', - \ ' o ^__^', - \ ' o (oo)\_______', - \ ' (__)\ )\/\', - \ ' ||----w |', - \ ' || ||', - \ ] + \ ' o', + \ ' o ^__^', + \ ' o (oo)\_______', + \ ' (__)\ )\/\', + \ ' ||----w |', + \ ' || ||', + \ ] let g:startify_fortune_use_unicode = &encoding == 'utf-8' && get(g:, 'startify_fortune_use_unicode') @@ -82,162 +82,9 @@ let s:char_top_right = ['*', '╮'][g:startify_fortune_use_unicode] let s:char_bottom_right = ['*', '╯'][g:startify_fortune_use_unicode] let s:char_bottom_left = ['*', '╰'][g:startify_fortune_use_unicode] -let s:predefined_quotes = [ - \ ["Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.", '', '- Brian Kernighan'], - \ ["If you don't finish then you're just busy, not productive."], - \ ['Adapting old programs to fit new machines usually means adapting new machines to behave like old ones.', '', '- Alan Perlis'], - \ ['Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.', '', '- Alan Perlis'], - \ ['It is easier to change the specification to fit the program than vice versa.', '', '- Alan Perlis'], - \ ['Simplicity does not precede complexity, but follows it.', '', '- Alan Perlis'], - \ ['Optimization hinders evolution.', '', '- Alan Perlis'], - \ ['Recursion is the root of computation since it trades description for time.', '', '- Alan Perlis'], - \ ['It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.', '', '- Alan Perlis'], - \ ['There is nothing quite so useless as doing with great efficiency something that should not be done at all.', '', '- Peter Drucker'], - \ ["If you don't fail at least 90% of the time, you're not aiming high enough.", '', '- Alan Kay'], - \ ['I think a lot of new programmers like to use advanced data structures and advanced language features as a way of demonstrating their ability. I call it the lion-tamer syndrome. Such demonstrations are impressive, but unless they actually translate into real wins for the project, avoid them.', '', '- Glyn Williams'], - \ ['I would rather die of passion than of boredom.', '', '- Vincent Van Gogh'], - \ ['If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.'], - \ ["The computing scientist's main challenge is not to get confused by the complexities of his own making.", '', '- Edsger W. Dijkstra'], - \ ["Progress in a fixed context is almost always a form of optimization. Creative acts generally don't stay in the context that they are in.", '', '- Alan Kay'], - \ ['The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well.', '', '- Phil Wadler'], - \ ['A good programmer is someone who always looks both ways before crossing a one-way street.', '', '- Doug Linder'], - \ ['Patterns mean "I have run out of language."', '', '- Rich Hickey'], - \ ['Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.', '', '- John Woods'], - \ ['Unix was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.'], - \ ['Contrary to popular belief, Unix is user friendly. It just happens to be very selective about who it decides to make friends with.'], - \ ['Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.'], - \ ['There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.', '', '- C.A.R. Hoare'], - \ ["If you don't make mistakes, you're not working on hard enough problems.", '', '- Frank Wilczek'], - \ ["If you don't start with a spec, every piece of code you write is a patch.", '', '- Leslie Lamport'], - \ ['Caches are bugs waiting to happen.', '', '- Rob Pike'], - \ ['Abstraction is not about vagueness, it is about being precise at a new semantic level.', '', '- Edsger W. Dijkstra'], - \ ["dd is horrible on purpose. It's a joke about OS/360 JCL. But today it's an internationally standardized joke. I guess that says it all.", '', '- Rob Pike'], - \ ['All loops are infinite ones for faulty RAM modules.'], - \ ['All idioms must be learned. Good idioms only need to be learned once.', '', '- Alan Cooper'], - \ ['For a successful technology, reality must take precedence over public relations, for Nature cannot be fooled.', '', '- Richard Feynman'], - \ ['If programmers were electricians, parallel programmers would be bomb disposal experts. Both cut wires.', '', '- Bartosz Milewski'], - \ ['Computers are harder to maintain at high altitude. Thinner air means less cushion between disk heads and platters. Also more radiation.'], - \ ['Almost every programming language is overrated by its practitioners.', '', '- Larry Wall'], - \ ['Fancy algorithms are slow when n is small, and n is usually small.', '', '- Rob Pike'], - \ ['Methods are just functions with a special first argument.', '', '- Andrew Gerrand'], - \ - \ ['Care about your craft.', '', 'Why spend your life developing software unless you care about doing it well?'], - \ ["Provide options, don't make lame excuses.", '', "Instead of excuses, provide options. Don't say it can't be done; explain what can be done."], - \ ['Be a catalyst for change.', '', "You can't force change on people. Instead, show them how the future might be and help them participate in creating it."], - \ ['Make quality a requirements issue.', '', "Involve your users in determining the project's real quality requirements."], - \ ['Critically analyze what you read and hear.', '', "Don't be swayed by vendors, media hype, or dogma. Analyze information in terms of you and your project."], - \ ["DRY - Don't Repeat Yourself.", '', 'Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.'], - \ ['Eliminate effects between unrelated things.', '', 'Design components that are self-contained, independent, and have a single, well-defined purpose.'], - \ ['Use tracer bullets to find the target.', '', 'Tracer bullets let you home in on your target by trying things and seeing how close they land.'], - \ ['Program close to the problem domain.', '', "Design and code in your user's language."], - \ ['Iterate the schedule with the code.', '', 'Use experience you gain as you implement to refine the project time scales.'], - \ ['Use the power of command shells.', '', "Use the shell when graphical user interfaces don't cut it."], - \ ['Always use source code control.', '', 'Source code control is a time machine for your work - you can go back.'], - \ ["Don't panic when debugging", '', 'Take a deep breath and THINK! about what could be causing the bug.'], - \ ["Don't assume it - prove it.", '', 'Prove your assumptions in the actual environment - with real data and boundary conditions.'], - \ ['Write code that writes code.', '', 'Code generators increase your productivity and help avoid duplication.'], - \ ['Design With contracts.', '', 'Use contracts to document and verify that code does no more and no less than it claims to do.'], - \ ['Use assertions to prevent the impossible.', '', 'Assertions validate your assumptions. Use them to protect your code from an uncertain world.'], - \ ['Finish what you start.', '', 'Where possible, the routine or object that allocates a resource should be responsible for deallocating it.'], - \ ["Configure, don't integrate.", '', 'Implement technology choices for an application as configuration options, not through integration or engineering.'], - \ ['Analyze workflow to improve concurrency.', '', "Exploit concurrency in your user's workflow."], - \ ['Always design for concurrency.', '', "Allow for concurrency, and you'll design cleaner interfaces with fewer assumptions."], - \ ['Use blackboards to coordinate workflow.', '', 'Use blackboards to coordinate disparate facts and agents, while maintaining independence and isolation among participants.'], - \ ['Estimate the order of your algorithms.', '', 'Get a feel for how long things are likely to take before you write code.'], - \ ['Refactor early, refactor often.', '', 'Just as you might weed and rearrange a garden, rewrite, rework, and re-architect code when it needs it. Fix the root of the problem.'], - \ ['Test your software, or your users will.', '', "Test ruthlessly. Don't make your users find bugs for you."], - \ ["Don't gather requirements - dig for them.", '', "Requirements rarely lie on the surface. They're buried deep beneath layers of assumptions, misconceptions, and politics."], - \ ['Abstractions live longer than details.', '', 'Invest in the abstraction, not the implementation. Abstractions can survive the barrage of changes from different implementations and new technologies.'], - \ ["Don't think outside the box - find the box.", '', 'When faced with an impossible problem, identify the real constraints. Ask yourself: "Does it have to be done this way? Does it have to be done at all?"'], - \ ['Some things are better done than described.', '', "Don't fall into the specification spiral - at some point you need to start coding."], - \ ["Costly tools don't produce better designs.", '', 'Beware of vendor hype, industry dogma, and the aura of the price tag. Judge tools on their merits.'], - \ ["Don't use manual procedures.", '', 'A shell script or batch file will execute the same instructions, in the same order, time after time.'], - \ ["Coding ain't done 'til all the Tests run.", '', "'Nuff said."], - \ ['Test state coverage, not code coverage.', '', "Identify and test significant program states. Just testing lines of code isn't enough."], - \ ['English is just a programming language.', '', 'Write documents as you would write code: honor the DRY principle, use metadata, MVC, automatic generation, and so on.'], - \ ["Gently exceed your users' expectations.", '', "Come to understand your users' expectations, then deliver just that little bit more."], - \ ['Think about your work.', '', 'Turn off the autopilot and take control. Constantly critique and appraise your work.'], - \ ["Don't live with broken windows.", '', 'Fix bad designs, wrong decisions, and poor code when you see them.'], - \ ['Remember the big picture.', '', "Don't get so engrossed in the details that you forget to check what's happening around you."], - \ ['Invest regularly in your knowledge portfolio.', '', 'Make learning a habit.'], - \ ["It's both what you say and the way you say it.", '', "There's no point in having great ideas if you don't communicate them effectively."], - \ ['Make it easy to reuse.', '', "If it's easy to reuse, people will. Create an environment that supports reuse."], - \ ['There are no final decisions.', '', 'No decision is cast in stone. Instead, consider each as being written in the sand at the beach, and plan for change.'], - \ ['Prototype to learn.', '', 'Prototyping is a learning experience. Its value lies not in the code you produce, but in the lessons you learn.'], - \ ['Estimate to avoid surprises.', '', "Estimate before you start. You'll spot potential problems up front."], - \ ['Keep knowledge in plain text.', '', "Plain text won't become obsolete. It helps leverage your work and simplifies debugging and testing."], - \ ['Use a single editor well.', '', 'The editor should be an extension of your hand; make sure your editor is configurable, extensible, and programmable.'], - \ ['Fix the problem, not the blame.', '', "It doesn't really matter whether the bug is your fault or someone else's - it is still your problem, and it still needs to be fixed."], - \ ["\"select\" isn't broken.", '', 'It is rare to find a bug in the OS or the compiler, or even a third-party product or library. The bug is most likely in the application.'], - \ ['Learn a text manipulation language.', '', 'You spend a large part of each day working with text. Why not have the computer do some of it for you?'], - \ ["You can't write perfect software.", '', "Software can't be perfect. Protect your code and users from the inevitable errors."], - \ ['Crash early.', '', 'A dead program normally does a lot less damage than a crippled one.'], - \ ['Use exceptions for exceptional problems.', '', 'Exceptions can suffer from all the readability and maintainability problems of classic spaghetti code. Reserve exceptions for exceptional things.'], - \ ['Minimize coupling between modules.', '', 'Avoid coupling by writing "shy" code and applying the Law of Demeter.'], - \ ['Put abstractions in code, details in metadata.', '', 'Program for the general case, and put the specifics outside the compiled code base.'], - \ ['Design using services.', '', 'Design in terms of services-independent, concurrent objects behind well-defined, consistent interfaces.'], - \ ['Separate views from models.', '', 'Gain flexibility at low cost by designing your application in terms of models and views.'], - \ ["Don't program by coincidence.", '', "Rely only on reliable things. Beware of accidental complexity, and don't confuse a happy coincidence with a purposeful plan."], - \ ['Test your estimates.', '', "Mathematical analysis of algorithms doesn't tell you everything. Try timing your code in its target environment."], - \ ['Design to test.', '', 'Start thinking about testing before you write a line of code.'], - \ ["Don't use wizard code you don't understand.", '', 'Wizards can generate reams of code. Make sure you understand all of it before you incorporate it into your project.'], - \ ['Work with a user to think like a user.', '', "It's the best way to gain insight into how the system will really be used."], - \ ['Use a project glossary.', '', 'Create and maintain a single source of all the specific terms and vocabulary for a project.'], - \ ["Start when you're ready.", '', "You've been building experience all your life. Don't ignore niggling doubts."], - \ ["Don't be a slave to formal methods.", '', "Don't blindly adopt any technique without putting it into the context of your development practices and capabilities."], - \ ['Organize teams around functionality.', '', "Don't separate designers from coders, testers from data modelers. Build teams the way you build code."], - \ ['Test early. Test often. Test automatically.', '', 'Tests that run with every build are much more effective than test plans that sit on a shelf.'], - \ ['Use saboteurs to test your testing.', '', 'Introduce bugs on purpose in a separate copy of the source to verify that testing will catch them.'], - \ ['Find bugs once.', '', 'Once a human tester finds a bug, it should be the last time a human tester finds that bug. Automatic tests should check for it from then on.'], - \ ['Sign your work.', '', 'Craftsmen of an earlier age were proud to sign their work. You should be, too.'], - \ ['Think twice, code once.'], - \ ['No matter how far down the wrong road you have gone, turn back now.'], - \ ['Why do we never have time to do it right, but always have time to do it over?'], - \ ['Weeks of programming can save you hours of planning.'], - \ ['To iterate is human, to recurse divine.', '', '- L. Peter Deutsch'], - \ ['Computers are useless. They can only give you answers.', '', '- Pablo Picasso'], - \ ['The question of whether computers can think is like the question of whether submarines can swim.', '', '- Edsger W. Dijkstra'], - \ ["It's ridiculous to live 100 years and only be able to remember 30 million bytes. You know, less than a compact disc. The human condition is really becoming more obsolete every minute.", '', '- Marvin Minsky'], - \ ["The city's central computer told you? R2D2, you know better than to trust a strange computer!", '', '- C3PO'], - \ ['Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.', '', '- Alan Kay'], - \ ["I've finally learned what \"upward compatible\" means. It means we get to keep all our old mistakes.", '', '- Dennie van Tassel'], - \ ["There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence.", '', '- Jeremy S. Anderson'], - \ ["The bulk of all patents are crap. Spending time reading them is stupid. It's up to the patent owner to do so, and to enforce them.", '', '- Linus Torvalds'], - \ ['Controlling complexity is the essence of computer programming.', '', '- Brian Kernighan'], - \ ['Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges, and it causes end-user and administrator frustration.', '', '- Ray Ozzie'], - \ ['The function of good software is to make the complex appear to be simple.', '', '- Grady Booch'], - \ ["There's an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.", '', '- Bjarne Stroustrup'], - \ ['There are only two industries that refer to their customers as "users".', '', '- Edward Tufte'], - \ ['Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.', '', '- Larry Wall'], - \ ['Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.', '', '- Eric S. Raymond'], - \ ['Optimism is an occupational hazard of programming; feedback is the treatment.', '', '- Kent Beck'], - \ ['First, solve the problem. Then, write the code.', '', '- John Johnson'], - \ ['Measuring programming progress by lines of code is like measuring aircraft building progress by weight.', '', '- Bill Gates'], - \ ["Don't worry if it doesn't work right. If everything did, you'd be out of a job.", '', "- Mosher's Law of Software Engineering"], - \ ['A LISP programmer knows the value of everything, but the cost of nothing.', '', '- Alan J. Perlis'], - \ ['All problems in computer science can be solved with another level of indirection.', '', '- David Wheeler'], - \ ['Functions delay binding; data structures induce binding. Moral: Structure data late in the programming process.', '', '- Alan J. Perlis'], - \ ['Easy things should be easy and hard things should be possible.', '', '- Larry Wall'], - \ ['Nothing is more permanent than a temporary solution.'], - \ ["If you can't explain something to a six-year-old, you really don't understand it yourself.", '', '- Albert Einstein'], - \ ['All programming is an exercise in caching.', '', '- Terje Mathisen'], - \ ['Software is hard.', '', '- Donald Knuth'], - \ ['They did not know it was impossible, so they did it!', '', '- Mark Twain'], - \ ['The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code.', '', '- Paul Graham'], - \ ['Question: How does a large software project get to be one year late?', 'Answer: One day at a time!'], - \ ['The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.', '', '- Tom Cargill'], - \ ["In software, we rarely have meaningful requirements. Even if we do, the only measure of success that matters is whether our solution solves the customer's shifting idea of what their problem is.", '', '- Jeff Atwood'], - \ ['If debugging is the process of removing bugs, then programming must be the process of putting them in.', '', '- Edsger W. Dijkstra'], - \ ['640K ought to be enough for anybody.', '', '- Bill Gates, 1981'], - \ ['To understand recursion, one must first understand recursion.', '', '- Stephen Hawking'], - \ ['Developing tolerance for imperfection is the key factor in turning chronic starters into consistent finishers.', '', '- Jon Acuff'], - \ ['Every great developer you know got there by solving problems they were unqualified to solve until they actually did it.', '', '- Patrick McKenzie'], - \ ["The average user doesn't give a damn what happens, as long as (1) it works and (2) it's fast.", '', '- Daniel J. Bernstein'], - \ ['Walking on water and developing software from a specification are easy if both are frozen.', '', '- Edward V. Berard'], - \ ['Be curious. Read widely. Try new things. I think a lot of what people call intelligence boils down to curiosity.', '', '- Aaron Swartz'], - \ ['What one programmer can do in one month, two programmers can do in two months.', '', '- Frederick P. Brooks'], - \ ] +let s:predefined_quotes = startify#langs#SetLanguage() let g:startify_custom_header_quotes = exists('g:startify_custom_header_quotes') - \ ? g:startify_custom_header_quotes - \ : startify#fortune#predefined_quotes() + \ ? g:startify_custom_header_quotes + \ : startify#fortune#predefined_quotes() + diff --git a/autoload/startify/langs.vim b/autoload/startify/langs.vim new file mode 100644 index 0000000..1203adc --- /dev/null +++ b/autoload/startify/langs.vim @@ -0,0 +1,519 @@ +function startify#langs#SetLanguage() + if g:startify_language == 'pt-br' + return [ + \ ["A depuração é duas vezes mais difícil do que escrever o código em primeiro lugar. Portanto, se você escrever o código da maneira mais inteligente possível, por definição, não será inteligente o suficiente para depurá-lo.", '', '- Brian Kernighan'], + \ ["Se você não terminar, então você está apenas ocupado, não produtivo."], + \ ['Adaptar programas antigos para caber em novas máquinas geralmente significa adaptar novas máquinas para se comportarem como as antigas.', '', '- Alan Perlis'], + \ ['Os tolos ignoram a complexidade. Os pragmáticos sofrem com isso. Alguns podem evitá-lo. Os gênios o removem.', '', '- Alan Perlis'], + \ ['É mais fácil alterar a especificação para se adequar ao programa do que vice-versa.', '', '- Alan Perlis'], + \ ['A simplicidade não precede a complexidade, mas a segue.', '', '- Alan Perlis'], + \ ['A otimização impede a evolução.', '', '- Alan Perlis'], + \ ['A recursão é a raiz da computação, pois troca descrição por tempo.', '', '- Alan Perlis'], + \ ['É melhor ter 100 funções operando em uma estrutura de dados do que 10 funções em 10 estruturas de dados.', '', '- Alan Perlis'], + \ ['Não há nada tão inútil quanto fazer com grande eficiência algo que não deveria ser feito.', '', '- Peter Drucker'], + \ ["Se você não falhar pelo menos 90% das vezes, você não está mirando alto o suficiente.", '', '- Alan Kay'], + \ ['Acho que muitos novos programadores gostam de usar estruturas de dados avançadas e recursos avançados de linguagem como forma de demonstrar sua capacidade. Eu chamo isso de síndrome do domador de leões. Essas demonstrações são impressionantes, mas, a menos que realmente se traduzam em vitórias reais para o projeto, evite-as.', '', '- Glyn Williams'], + \ ['Prefiro morrer de paixão do que de tédio.', '', '-Vincent Van Gogh'], + \ ['Se um sistema deve servir ao espírito criativo, deve ser totalmente compreensível para um único indivíduo.'], + \ ["O principal desafio do cientista da computação é não se confundir com as complexidades de sua própria criação.", '', '- Edsger W. Dijkstra'], + \ ["O progresso em um contexto fixo é quase sempre uma forma de otimização. Atos criativos geralmente não ficam no contexto em que estão.", '', '- Alan Kay'], + \ ['A essência do XML é esta: o problema que ele resolve não é difícil e não resolve bem o problema.', '', '- Phil Wadler'], + \ ['Um bom programador é alguém que sempre olha para os dois lados antes de cruzar uma rua de mão única.', '', '- Doug Linder'], + \ ['Padrões significam "Estou sem linguagem."', '', '- Rich Hickey'], + \ ['Sempre codifique como se a pessoa que acaba mantendo seu código fosse um psicopata violento que sabe onde você mora.', '', '- John Woods'], + \ ['O Unix não foi projetado para impedir que seus usuários façam coisas estúpidas, pois isso também os impediria de fazer coisas inteligentes.'], + \ ['Ao contrário da crença popular, o Unix é amigável. Acontece que ele é muito seletivo sobre com quem decide fazer amizade.'], + \ ['A perfeição é alcançada, não quando não há mais nada a acrescentar, mas quando não há mais nada para tirar.'], + \ ['Existem duas maneiras de construir um design de software: Uma maneira é torná-lo tão simples que obviamente não haja deficiências, e a outra maneira é torná-lo tão complicado que não haja deficiências óbvias.', '', '- CARRO. Hoare'], + \ ["Se você não cometer erros, você não está trabalhando em problemas difíceis o suficiente.", '', '- Frank Wilczek'], + \ ["Se você não começar com uma especificação, cada pedaço de código que você escrever é um patch.", '', '- Leslie Lamport'], + \ ['Caches são bugs esperando para acontecer.', '', '- Rob Pike'], + \ ['Abstração não é sobre imprecisão, é sobre ser preciso em um novo nível semântico.', '', '- Edsger W. Dijkstra'], + \ ["dd é horrível de propósito. É uma piada sobre OS/360 JCL. Mas hoje é uma piada padronizada internacionalmente. Acho que isso diz tudo.", '', '- Rob Pike'], + \ ['Todos os loops são infinitos para módulos de RAM com defeito.'], + \ ['Todos os idiomas devem ser aprendidos. Bons idiomas só precisam ser aprendidos uma vez.', '', '- Alan Cooper'], + \ ['Para uma tecnologia de sucesso, a realidade deve ter precedência sobre as relações públicas, pois a Natureza não pode ser enganada.', '', '- Richard Feynman'], + \ ['Se os programadores fossem eletricistas, os programadores paralelos seriam especialistas em desarmamento de bombas. Ambos cortaram fios.', '','- Bartosz Milewski'], + \ ['Os computadores são mais difíceis de manter em grandes altitudes. Ar mais fino significa menos amortecimento entre as cabeças dos discos e os pratos. Também mais radiação.'], + \ ['Quase toda linguagem de programação é superestimada por seus praticantes.', '', '- Larry Wall'], + \ ['Algoritmos sofisticados são lentos quando n é pequeno e n geralmente é pequeno.', '', '- Rob Pike'], + \ ['Métodos são apenas funções com um primeiro argumento especial.', '', '- Andrew Gerrand'], + \ ['Preocupe-se com o seu ofício.', '', 'Por que passar a vida desenvolvendo software a menos que se preocupe em fazê-lo bem?'], + \ ["Forneça opções, não dê desculpas esfarrapadas.", '', "Em vez de desculpas, forneça opções. Não diga que não pode ser feito; explique o que pode ser feito."], + \ ['Seja um catalisador para a mudança.', '', "Você não pode forçar a mudança nas pessoas. Em vez disso, mostre a elas como o futuro pode ser e ajude-as a participar de sua criação."], + \ ['Faça da qualidade uma questão de requisitos.', '', "Envolva seus usuários na determinação dos requisitos reais de qualidade do projeto."], + \ ['Analise criticamente o que você lê e ouve.', '', "Não se deixe influenciar por fornecedores, exageros da mídia ou dogmas. Analise as informações em termos de você e seu projeto."], + \ ["DRY - Don't Repeat Yourself.", '', 'Todo pedaço de conhecimento deve ter uma representação única, inequívoca e autoritária dentro de um sistema.'], + \ ['Elimine efeitos entre coisas não relacionadas.', '', 'Projete componentes que sejam autossuficientes, independentes e tenham um propósito único e bem definido.'], + \ ['Use balas rastreadoras para encontrar o alvo.', '', 'Balas rastreadoras permitem que você atinja seu alvo tentando as coisas e vendo o quão perto elas pousam.'], + \ ['Programa próximo ao domínio do problema.', '', "Projete e codifique no idioma do seu usuário."], + \ ['Repita o cronograma com o código.', '', 'Use a experiência que você ganha ao implementar para refinar as escalas de tempo do projeto.'], + \ ['Use o poder dos shells de comando.', '', "Use o shell quando as interfaces gráficas do usuário não o cortarem."], + \ ['Sempre use o controle do código-fonte.', '', 'O controle do código-fonte é uma máquina do tempo para o seu trabalho - você pode voltar.'], + \ ["Não entre em pânico ao depurar", '', 'Respire fundo e PENSE! sobre o que poderia estar causando o bug.'], + \ ["Não assuma - prove.", '', 'Prove suas suposições no ambiente real - com dados reais e condições de contorno.'], + \ ['Escreva código que escreve código.', '', 'Geradores de código aumentam sua produtividade e ajudam a evitar a duplicação.'], + \ ['Design com contratos.', '', 'Use contratos para documentar e verificar se o código faz nem mais nem menos do que afirma fazer.'], + \ ['Use afirmações para evitar o impossível.', '', 'Afirmações validam suas suposições. Use-os para proteger seu código de um mundo incerto.'], + \ ['Termine o que você começou.', '', 'Onde possível, a rotina ou objeto que aloca um recurso deve ser responsável por desalocá-lo.'], + \ ["Configurar, não integrar.", '', 'Implementar opções de tecnologia para um aplicativo como opções de configuração, não por meio de integração ou engenharia.'], + \ ['Analisar o fluxo de trabalho para melhorar a simultaneidade.', '', "Explorar a simultaneidade no fluxo de trabalho do seu usuário."], + \ ['Sempre projete para simultaneidade.', '', "Permita a simultaneidade e você projetará interfaces mais limpas com menos suposições."], + \ ['Usar lousas para coordenar o fluxo de trabalho.', '', 'Usar lousas para coordenar fatos e agentes díspares, mantendo a independência e o isolamento entre os participantes.'], + \ ['Estime a ordem de seus algoritmos.', '', 'Tenha uma ideia de quanto tempo as coisas provavelmente levarão antes de escrever o código.'], + \ ['Refatorar cedo, refatorar frequentemente.', '', 'Assim como você pode remover ervas daninhas e reorganizar um jardim, reescrever, retrabalhar e reprojetar o código quando necessário. Corrija a raiz do problema.'], + \ ['Teste seu software, ou seus usuários o farão.', '', "Teste impiedosamente. Não faça seus usuários encontrarem bugs para você."], + \ ["Não reúna requisitos - procure-os.", '', "Requisitos raramente estão na superfície. Eles estão enterrados profundamente sob camadas de suposições, equívocos e política."], + \ ['As abstrações duram mais que os detalhes.', '', 'Invista na abstração, não na implementação. As abstrações podem sobreviver à barragem de mudanças de diferentes implementações e novas tecnologias.'], + \ ['Algumas coisas são melhor feitas do que descritas.', '', "Não caia na espiral de especificação - em algum ponto você precisa começar a codificar."], + \ ["Ferramentas caras não produzem designs melhores.", '', 'Cuidado com o exagero do fornecedor, o dogma da indústria e a aura da etiqueta de preço. Julgue as ferramentas por seus méritos.'], + \ ["Não use procedimentos manuais.", '', 'Um shell script ou arquivo em lote executará as mesmas instruções, na mesma ordem, várias vezes.'], + \ ["A codificação não é concluída até que todos os testes sejam executados.", '', "'Nuff disse."], + \ ['Testar cobertura de estado, não cobertura de código.', '', "Identifique e teste estados significativos do programa. Apenas testar linhas de código não é suficiente."], + \ ['Inglês é apenas uma linguagem de programação.', '', 'Escreva documentos como você escreveria código: respeite o princípio DRY, use metadados, MVC, geração automática e assim por diante.'], + \ ["Exceda suavemente as expectativas de seus usuários.", '', "Passe a entender as expectativas de seus usuários e, em seguida, forneça apenas um pouco mais."], + \ ['Pense no seu trabalho.', '', 'Desligue o piloto automático e assuma o controle. Constantemente critique e avalie seu trabalho.'], + \ ["Não viva com janelas quebradas.", '', 'Corrija designs ruins, decisões erradas e código ruim quando os vir.'], + \ ['Lembre-se do quadro geral.', '', "Não fique tão absorto nos detalhes a ponto de esquecer de verificar o que está acontecendo ao seu redor."], + \ ['Invista regularmente em seu portfólio de conhecimento.', '', 'Faça do aprendizado um hábito.'], + \ ["É tanto o que você diz quanto a maneira como você diz.", '', "Não adianta ter grandes ideias se você não as comunicar de forma eficaz."], + \ ['Facilite a reutilização.', '', "Se for fácil reutilizar, as pessoas o farão. Crie um ambiente que suporte a reutilização."], + \ ['Não há decisões finais.', '', 'Nenhuma decisão é imutável. Em vez disso, considere cada um escrito na areia da praia e planeje a mudança.'], + \ ['Protótipo para aprender.', '', 'Prototipagem é uma experiência de aprendizado. Seu valor não está no código que você produz, mas nas lições que você aprende.'], + \ ['Estime para evitar surpresas.', '', "Estime antes de começar. Você identificará possíveis problemas logo no início."], + \ ['Mantenha o conhecimento em texto simples.', '', "O texto simples não se tornará obsoleto. Ele ajuda a alavancar seu trabalho e simplifica a depuração e o teste."], + \ ['Use bem um único editor.', '', 'O editor deve ser uma extensão da sua mão; certifique-se de que seu editor seja configurável, extensível e programável.'], + \ ['Corrija o problema, não a culpa.', '', "Realmente não importa se o bug é sua culpa ou de outra pessoa - ainda é seu problema e ainda precisa ser corrigido."], + \ ["\"select\" não está quebrado.", '', 'É raro encontrar um bug no sistema operacional ou no compilador, ou mesmo em um produto ou biblioteca de terceiros. O bug provavelmente está no aplicativo.'], + \ ['Aprenda uma linguagem de manipulação de texto.', '', 'Você passa grande parte do dia trabalhando com texto. Por que o computador não faz isso para você?'], + \ ["Você não pode escrever software perfeito.", '', "Software não pode ser perfeito. Proteja seu código e usuários de erros inevitáveis."], + \ ['Crash early.', '', 'Um programa morto normalmente causa muito menos dano do que um aleijado.'], + \ ['Usar exceções para problemas excepcionais.', '', 'Exceções podem sofrer de todos os problemas de legibilidade e manutenção do código espaguete clássico. Reserve exceções para coisas excepcionais.'], + \ ['Minimize o acoplamento entre os módulos.', '', 'Evite o acoplamento escrevendo um código "tímido" e aplicando a Lei de Deméter.'], + \ ['Coloque abstrações no código, detalhes nos metadados.', '', 'Programe para o caso geral e coloque as especificidades fora da base do código compilado.'], + \ ['Projeto usando serviços.', '', 'Projeto em termos de objetos simultâneos independentes de serviços por trás de interfaces consistentes e bem definidas.'], + \ ['Visões separadas de modelos.', '', 'Ganhe flexibilidade a baixo custo projetando seu aplicativo em termos de modelos e exibições.'], + \ ["Não programe por coincidência.", '', "Confie apenas em coisas confiáveis. Cuidado com a complexidade acidental e não confunda uma feliz coincidência com um plano proposital."], + \ ['Teste suas estimativas.', '', "A análise matemática de algoritmos não diz tudo. Tente cronometrar seu código em seu ambiente de destino."], + \ ['Projetar para testar.', '', 'Comece a pensar em testar antes de escrever uma linha de código.'], + \ ["Não use o código do assistente que você não entende.", '', 'Os assistentes podem gerar resmas de código. Certifique-se de entender tudo antes de incorporá-lo ao seu projeto.'], + \ ['Trabalhe com um usuário para pensar como um usuário.', '', "É a melhor maneira de obter informações sobre como o sistema realmente será usado."], + \ ['Usar um glossário de projeto.', '', 'Criar e manter uma única fonte de todos os termos e vocabulários específicos para um projeto.'], + \ ["Comece quando estiver pronto.", '', "Você vem construindo experiência toda a sua vida. Não ignore dúvidas mesquinhas."], + \ ["Não seja escravo de métodos formais.", '', "Não adote cegamente nenhuma técnica sem colocá-la no contexto de suas práticas e capacidades de desenvolvimento."], + \ ['Organize equipes em torno da funcionalidade.', '', "Não separe designers de codificadores, testadores de modeladores de dados. Crie equipes da mesma forma que você cria código."], + \ ['Teste cedo. Teste frequentemente. Teste automaticamente.', '', 'Testes que são executados com cada compilação são muito mais eficazes do que planos de teste que ficam em uma prateleira.'], + \ ['Use sabotadores para testar seus testes.', '', 'Introduza bugs de propósito em uma cópia separada da fonte para verificar se o teste os detectará.'], + \ ['Find bugs once.', '', 'Uma vez que um testador humano encontra um bug, deve ser a última vez que um testador humano encontra esse bug. Testes automáticos devem verificar isso a partir de então.'], + \ ['Assine seu trabalho.', '', 'Os artesãos de uma época anterior tinham orgulho de assinar seus trabalhos. Você também deveria estar.'], + \ ['Pense duas vezes, codifique uma vez.'], + \ ['Não importa o quão longe você tenha ido na estrada errada, volte agora.'], + \ ['Por que nunca temos tempo para fazer certo, mas sempre temos tempo para fazer tudo de novo?'], + \ ['Semanas de programação podem economizar horas de planejamento.'], + \ ['Iterar é humano, recursar é divino.', '', '- L. Peter Deutsch'], + \ ['Os computadores são inúteis. Eles só podem lhe dar respostas.', '', '- Pablo Picasso'], + \ ['A questão de saber se os computadores podem pensar é como a questão de saber se os submarinos podem nadar.', '', '- Edsger W. Dijkstra'], + \ ["É ridículo viver 100 anos e só conseguir se lembrar de 30 milhões de bytes. Você sabe, menos que um CD. A condição humana está realmente se tornando mais obsoleta a cada minuto.", '', '- Marvin Minsky'] , + \ ["O computador central da cidade disse a você? R2D2, você sabe que não deve confiar em um computador estranho!", '', '- C3PO'], + \ ['A maioria dos softwares hoje é muito parecido com uma pirâmide egípcia com milhões de tijolos empilhados uns sobre os outros, sem integridade estrutural, mas apenas feitos por força bruta e milhares de escravos.', '', '- Alan Kay' ], + \ ["Finalmente aprendi o que significa \"compatível com versões anteriores\". Significa que podemos manter todos os nossos velhos erros.", '', '- Dennie van Tassel'], + \ ["Existem dois produtos principais que saem de Berkeley: LSD e UNIX. Não acreditamos que isso seja uma coincidência.", '', '- Jeremy S. Anderson'], + \ ["A maior parte de todas as patentes é uma porcaria. Gastar tempo lendo-as é estúpido. Cabe ao proprietário da patente fazê-lo e aplicá-las.", '', '- Linus Torvalds'], + \ ['Controlar a complexidade é a essência da programação de computadores.', '', '- Brian Kernighan'], + \ ['A complexidade mata. Suga a vida dos desenvolvedores, torna os produtos difíceis de planejar, construir e testar, apresenta desafios de segurança e causa frustração no usuário final e no administrador.', '', '- Ray Ozzie'], + \ ['A função de um bom software é fazer o complexo parecer simples.', '', '- Grady Booch'], + \ ["Há uma velha história sobre a pessoa que desejava que seu computador fosse tão fácil de usar quanto seu telefone. Esse desejo se tornou realidade, pois não sei mais usar meu telefone.", '', '- Bjarne Stroustrup' ], + \ ['Há apenas duas indústrias que se referem a seus clientes como "usuários".', '', '- Edward Tufte'], + \ ['A maioria de vocês está familiarizada com as virtudes de um programador. Existem três, é claro: preguiça, impaciência e arrogância.', '', '- Larry Wall'], + \ ['A educação em ciência da computação não pode tornar ninguém um programador especialista, assim como estudar pincéis e pigmentos não pode tornar alguém um pintor especialista.', '', '- Eric S. Raymond'], + \ ['O otimismo é um risco ocupacional da programação; feedback é o tratamento.', '', '- Kent Beck'], + \ ['Primeiro, resolva o problema. Em seguida, escreva o código.', '', '- John Johnson'], + \ ['Medir o progresso da programação por linhas de código é como medir o progresso da construção de aeronaves por peso.', '', '- Bill Gates'], + \ ["Não se preocupe se não funcionar direito. Se tudo funcionasse, você estaria desempregado.", '', "- Lei de Engenharia de Software de Mosher"], + \ ['Um programador LISP sabe o valor de tudo, mas o custo de nada.', '', '- Alan J. Perlis'], + \ ['Todos os problemas em ciência da computação podem ser resolvidos com outro nível de indireção.', '', '- David Wheeler'], + \ ['Funções atrasam a vinculação; estruturas de dados induzem vinculação. Moral: Estruture os dados no final do processo de programação.', '', '- Alan J. Perlis'], + \ ['As coisas fáceis devem ser fáceis e as coisas difíceis devem ser possíveis.', '', '- Larry Wall'], + \ ['Nada é mais permanente do que uma solução temporária.'], + \ ["Se você não consegue explicar algo para uma criança de seis anos, você realmente não entende isso.", '', '- Albert Einstein'], + \ ['Toda a programação é um exercício de cache.', '', '- Terje Mathisen'], + \ ['Software é difícil.', '', '- Donald Knuth'], + \ ['Eles não sabiam que era impossível, então fizeram!', '', '- Mark Twain'], + \ ['O modelo orientado a objetos facilita a criação de programas por acréscimo. O que isso geralmente significa, na prática, é que ele fornece uma maneira estruturada de escrever código espaguete.', '', '- Paul Graham'], + \ ['Pergunta: Como um grande projeto de software chega a atrasar um ano?', 'Resposta: Um dia de cada vez!'], + \ ['Os primeiros 90% do código representam os primeiros 90% do tempo de desenvolvimento. Os 10% restantes do código representam os outros 90% do tempo de desenvolvimento.', '', '- Tom Cargill'], + \ ["Em software, raramente temos requisitos significativos. Mesmo que tenhamos, a única medida de sucesso que importa é se nossa solução resolve a ideia inconstante do cliente sobre qual é o problema dele.", '', '- Jeff Atwood'] , + \ ['Se a depuração é o processo de remover bugs, então a programação deve ser o processo de colocá-los.', '', '- Edsger W. Dijkstra'], + \ ['640K deve ser suficiente para qualquer um.', '', '- Bill Gates, 1981'], + \ ['Para entender a recursão, primeiro é preciso entender a recursão.', '', '- Stephen Hawking'], + \ ['Desenvolver tolerância à imperfeição é o fator chave para transformar iniciantes crônicos em finalizadores consistentes.', '', '- Jon Acuff'], + \ ['Todo grande desenvolvedor que você conhece chegou lá resolvendo problemas para os quais não estava qualificado para resolver até que realmente o fizesse.', '', '- Patrick McKenzie'], + \ ["O usuário médio não dá a mínima para o que acontece, desde que (1) funcione e (2) seja rápido.", '', '- Daniel J. Bernstein'], + \ ['Andar sobre a água e desenvolver software a partir de uma especificação é fácil se ambos estiverem congelados.', '', '- Edward V. Berard'], + \ ['Ser curioso. Leia amplamente. Tente coisas novas. Acho que muito do que as pessoas chamam de inteligência se resume à curiosidade.', '', '- Aaron Swartz'], + \ ['O que um programador pode fazer em um mês, dois programadores podem fazer em dois meses.', '', '- Frederick P. Brooks'], + \ ] + + + elseif g:startify_language == 'es' + return [ + \ ['Eliminar los efectos entre cosas no relacionadas.', '', 'Diseñar componentes que sean autónomos, independientes y que tengan un único propósito bien definido.'], + \ ['Use balas trazadoras para encontrar el objetivo.', '', 'Las balas trazadoras le permiten acercarse a su objetivo probando cosas y viendo qué tan cerca aterrizan.'], + \ ['Itera el cronograma con el código.', '', 'Utiliza la experiencia que obtengas a medida que implementas para refinar las escalas de tiempo del proyecto.'], + \ ['Use siempre el control del código fuente.', '', 'El control del código fuente es una máquina del tiempo para su trabajo; puede volver atrás.'], + \ ['Escribe código que escribe código.', '', 'Los generadores de código aumentan tu productividad y ayudan a evitar la duplicación.'], + \ ['Diseñar con contratos.', '', 'Usar contratos para documentar y verificar que el código hace ni más ni menos de lo que dice hacer.'], + \ ['Use afirmaciones para evitar lo imposible.', '', 'Las afirmaciones validan sus suposiciones. Úsalos para proteger tu código de un mundo incierto.'], + \ ['Termina lo que empiezas.', '', 'Cuando sea posible, la rutina o el objeto que asigna un recurso debe ser responsable de desasignarlo.'], + \ ["Configurar, no integrar.", '', 'Implementar opciones de tecnología para una aplicación como opciones de configuración, no mediante integración o ingeniería.'], + \ ['Usar pizarras para coordinar el flujo de trabajo.', '', 'Usar pizarras para coordinar hechos y agentes dispares, manteniendo la independencia y el aislamiento entre los participantes.'], + \ ['Calcule el orden de sus algoritmos.', '', 'Tenga una idea de cuánto tiempo pueden tardar las cosas antes de escribir el código.'], + \ ['Refactorice temprano, refactorice a menudo.', '', 'Al igual que podría desmalezar y reorganizar un jardín, reescribir, reelaborar y rediseñar el código cuando lo necesite. Soluciona la raíz del problema.'], + \ ['Las abstracciones viven más que los detalles.', '', 'Invierta en la abstracción, no en la implementación. Las abstracciones pueden sobrevivir al aluvión de cambios de diferentes implementaciones y nuevas tecnologías.'], + \ ['El inglés es solo un lenguaje de programación.', '', 'Escriba documentos como escribiría código: respete el principio DRY, use metadatos, MVC, generación automática, etc.'], + \ ['Piensa en tu trabajo.', '', 'Apaga el piloto automático y toma el control. Critique y evalúe constantemente su trabajo.'], + \ ["No vivas con las ventanas rotas.", '', 'Repara los malos diseños, las decisiones equivocadas y el código deficiente cuando los veas.'], + \ ['Invierta regularmente en su cartera de conocimientos.', '', 'Haga del aprendizaje un hábito.'], + \ ['No hay decisiones finales.', '', 'Ninguna decisión está grabada en piedra. En su lugar, considere cada uno como escrito en la arena de la playa y planifique el cambio.'], + \ ['Prototipar para aprender.', '', 'Prototipar es una experiencia de aprendizaje. Su valor no radica en el código que produce, sino en las lecciones que aprende.'], + \ ['Utiliza bien un solo editor.', '', 'El editor debe ser una extensión de tu mano; asegúrese de que su editor sea configurable, extensible y programable.'], + \ ['Aprende un lenguaje de manipulación de texto.', '', 'Pasas gran parte del día trabajando con texto. ¿Por qué no dejar que la computadora haga algo por ti?'], + \ ['Caída temprana.', '', 'Un programa inactivo normalmente hace mucho menos daño que uno dañado.'], + \ ['Usar excepciones para problemas excepcionales.', '', 'Las excepciones pueden sufrir todos los problemas de legibilidad y mantenibilidad del código spaghetti clásico. Reserva excepciones para cosas excepcionales.'], + \ ['Minimizar el acoplamiento entre módulos.', '', 'Evitar el acoplamiento escribiendo código "tímido" y aplicando la Ley de Deméter.'], + \ ['Ponga abstracciones en código, detalles en metadatos.', '', 'Programe para el caso general y coloque los detalles fuera del código base compilado.'], + \ ['Diseñar usando servicios.', '', 'Diseñar en términos de objetos concurrentes e independientes de los servicios detrás de interfaces coherentes y bien definidas.'], + \ ['Separe las vistas de los modelos.', '', 'Gane flexibilidad a bajo costo diseñando su aplicación en términos de modelos y vistas.'], + \ ['Diseñar para probar.', '', 'Empieza a pensar en probar antes de escribir una línea de código.'], + \ ['Usar un glosario de proyecto.', '', 'Crear y mantener una única fuente de todos los términos y vocabulario específicos para un proyecto.'], + \ ['Prueba temprano. Prueba a menudo. Pruebe automáticamente.', '', 'Las pruebas que se ejecutan con cada compilación son mucho más efectivas que los planes de prueba que se encuentran en un estante.'], + \ ['Use saboteadores para probar sus pruebas.', '', 'Introduzca errores a propósito en una copia separada de la fuente para verificar que las pruebas los atrapen.'], + \ ['Buscar errores una vez.', '', 'Una vez que un probador humano encuentra un error, debería ser la última vez que un probador humano encuentra ese error. Las pruebas automáticas deberían comprobarlo a partir de ese momento.'], + \ ['Firma tu trabajo.', '', 'Los artesanos de una época anterior estaban orgullosos de firmar su trabajo. Tú también deberías estarlo.'], + \ ['Piense dos veces, codifique una vez.'], + \ ['No importa qué tan lejos hayas ido por el camino equivocado, regresa ahora.'], + \ ['¿Por qué nunca tenemos tiempo para hacerlo bien, pero siempre tenemos tiempo para hacerlo de nuevo?'], + \ ['Semanas de programación pueden ahorrarle horas de planificación.'], + \ ['Iterar es humano, recurrir divino.', '', '- L. Peter Deutsch'], + \ ['Las computadoras son inútiles. Solo te pueden dar respuestas.', '', '- Pablo Picasso'], + \ ['La pregunta de si las computadoras pueden pensar es como la pregunta de si los submarinos pueden nadar.', '', '- Edsger W. Dijkstra'], + \ ['La mayor parte del software actual es muy parecido a una pirámide egipcia con millones de ladrillos apilados uno encima del otro, sin integridad estructural, pero hecho simplemente por la fuerza bruta y miles de esclavos.', '', '- Alan Kay' ], + \ ['Controlar la complejidad es la esencia de la programación de computadoras.', '', '- Brian Kernighan'], + \ ['La complejidad mata. Les quita la vida a los desarrolladores, hace que los productos sean difíciles de planificar, construir y probar, presenta desafíos de seguridad y causa frustración en el usuario final y el administrador.', '', '- Ray Ozzie'], + \ ['La función de un buen software es hacer que lo complejo parezca simple.', '', '- Grady Booch'], + \ ['Solo hay dos industrias que se refieren a sus clientes como "usuarios".', '', '- Edward Tufte'], + \ ['La mayoría de ustedes están familiarizados con las virtudes de un programador. Hay tres, por supuesto: pereza, impaciencia y arrogancia.', '', '- Larry Wall'], + \ ['La educación en ciencias de la computación no puede convertir a nadie en un programador experto más de lo que estudiar pinceles y pigmentos puede convertir a alguien en un pintor experto.', '', '- Eric S. Raymond'], + \ ['El optimismo es un riesgo laboral de la programación; la retroalimentación es el tratamiento.', '', '- Kent Beck'], + \ ['Primero, resuelve el problema. Luego, escribe el código.', '', '- John Johnson'], + \ ['Medir el progreso de la programación por líneas de código es como medir el progreso de la construcción de aviones por peso.', '', '- Bill Gates'], + \ ['Un programador LISP conoce el valor de todo, pero el costo de nada.', '', '- Alan J. Perlis'], + \ ['Todos los problemas en informática se pueden resolver con otro nivel de indirección.', '', '- David Wheeler'], + \ ['Las funciones retrasan el enlace; las estructuras de datos inducen la unión. Moraleja: Estructure los datos al final del proceso de programación.', '', '- Alan J. Perlis'], + \ ['Las cosas fáciles deberían ser fáciles y las cosas difíciles deberían ser posibles.', '', '- Larry Wall'], + \ ['Nada es más permanente que una solución temporal.'], + \ ['El software es difícil.', '', '- Donald Knuth'], + \ ['No sabían que era imposible, ¡así que lo hicieron!', '', '- Mark Twain'], + \ ['El modelo orientado a objetos facilita la construcción de programas por acumulación. Lo que esto significa a menudo, en la práctica, es que proporciona una forma estructurada de escribir código spaghetti.', '', '- Paul Graham'], + \ ['Pregunta: ¿Cómo llega a retrasarse un año un gran proyecto de software?', 'Respuesta: ¡Un día a la vez!'], + \ ['Si la depuración es el proceso de eliminación de errores, entonces la programación debe ser el proceso de colocarlos.', '', '- Edsger W. Dijkstra'], + \ ['640K debería ser suficiente para cualquiera.', '', '- Bill Gates, 1981'], + \ ['Para entender la recursividad, primero hay que entender la recursividad.', '', '- Stephen Hawking'], + \ ['Desarrollar la tolerancia a la imperfección es el factor clave para convertir a los principiantes crónicos en finalistas consistentes.', '', '- Jon Acuff'], + \ ['Cada gran desarrollador que conoces llegó allí resolviendo problemas que no estaban calificados para resolver hasta que realmente lo hicieron', '', '- Patrick McKenzie'], + \ ['Caminar sobre el agua y desarrollar software a partir de una especificación es fácil si ambos están congelados.', '', '- Edward V. Berard'], + \ ['Ser curioso. Lea ampliamente. Probar cosas nuevas. Creo que mucho de lo que la gente llama inteligencia se reduce a la curiosidad.', '', '- Aaron Swartz'], + \ ['Lo que un programador puede hacer en un mes, dos programadores pueden hacerlo en dos meses.', '', '- Frederick P. Brooks'], + \ ] + + + elseif g:startify_language == 'ch' + return [ + \ ['调整旧程序以适应新机器通常意味着调整新机器以像旧机器一样运行。', '', '- Alan Perlis'], + \ ['傻瓜忽略复杂性。实用主义者受苦了。有些人可以避免它。天才将其移除。', '', '- Alan Perlis'], + \ ['改变规范以适应程序比相反更容易。', '', '- Alan Perlis'], + \ ['简单性并不先于复杂性,而是紧随其后。', '', '- Alan Perlis'], + \ ['优化阻碍进化。', '', '- Alan Perlis'], + \ ['递归是计算的根源,因为它用描述换取时间。', '', '- Alan Perlis'], + \ ['让 100 个函数在一个数据结构上运行比让 10 个函数在 10 个数据结构上运行更好。', '', '- Alan Perlis'], + \ ['没有什么比高效地做根本不应该做的事情更无用的了。', '', '- Peter Drucker'], + \ ['我认为很多新程序员喜欢使用高级数据结构和高级语言特性作为展示自己能力的方式。我称之为驯狮综合症。这样的演示令人印象深刻,但除非它们真正转化为项目的真正胜利,否则请避免使用它们。', '', '- Glyn Williams'], + \ ['我宁愿死于激情也不愿死于无聊。', '', '- Vincent Van Gogh'], + \ ['如果一个系统是为创造性精神服务的,它必须对一个人来说是完全可以理解的。'], + \ ['XML 的本质是这样的:它解决的问题并不难,也解决不了很好的问题。', '', '- Phil Wadler'], + \ ['一个好的程序员是在穿过单行道之前总是向两边看的人。', '', '- Doug Linder'], + \ ['模式意味着“我的语言用完了。”', '', '- Rich Hickey'], + \ ['总是像最终维护你的代码的人是一个知道你住在哪里的暴力精神病患者一样编写代码。', '', '- John Woods'], + \ ['Unix 并不是为了阻止用户做傻事而设计的,因为这也会阻止他们做聪明的事情。'], + \ ['与流行的看法相反,Unix 是用户友好的。它恰好非常有选择性地决定与谁交朋友。'], + \ ['完美的实现,不是在没有什么可以添加的时候,而是在没有什么可以去掉的时候。'], + \ ['构建软件设计有两种方法:一种是简单到明显没有缺陷,另一种是复杂到没有明显缺陷。', '', '- 车。霍尔'], + \ ['缓存是等待发生的错误。', '', '- Rob Pike'], + \ ['抽象不是关于模糊,它是关于在新的语义级别上的精确。', '', '- Edsger W. Dijkstra'], + \ ['所有循环对于故障 RAM 模块都是无限循环。'], + \ ['成语都要学。好的成语只需要学一次。', '', '- Alan Cooper'], + \ ['对于一项成功的技术,现实必须优先于公共关系,因为大自然是骗不了的。', '', '- Richard Feynman'], + \ ['如果程序员是电工,并行程序员就是拆弹专家。两者都切断了电线。', '', '- Bartosz Milewski'], + \ ['计算机在高海拔地区更难维护。更稀薄的空气意味着磁头和盘片之间的缓冲更少。还有更多的辐射。'], + \ ['几乎每一种编程语言都被它的从业者高估了。', '', '- Larry Wall'], + \ ['当 n 很小时,花哨的算法会很慢,而 n 通常很小。', '', '- Rob Pike'], + \ ['方法只是带有特殊第一个参数的函数。', '', '- Andrew Gerrand'], + \ ['关心你的手艺。', '', '除非你关心把它做好,否则为什么要花你的一生来开发软件?'], + \ ["提供选项,不要找蹩脚的借口。", '', "与其找借口,不如提供选项。不要说做不到;解释可以做什么。"], + \ ['让质量成为需求问题。', '', "让您的用户参与确定项目的真正质量需求。"], + \ ["DRY - Don't Repeat Yourself.", '', '每条知识都必须在系统中有一个单一的、明确的、权威的表示。'], + \ ['消除不相关事物之间的影响。', '', '设计自包含、独立且具有单一、明确目的的组件。'], + \ ['使用曳光弹找到目标。', '', '曳光弹让你通过尝试并观察它们着陆的距离来锁定你的目标。'], + \ ['接近问题域的程序。', '', "用用户的语言设计和编码。"], + \ ['用代码迭代时间表。', '', '利用你在实施过程中获得的经验来完善项目时间尺度。'], + \ ['使用命令 shell 的强大功能。', '', "当图形用户界面不适合时使用 shell。"], + \ ['始终使用源代码控制。', '', '源代码控制是您工作的时间机器 - 您可以回去。'], + \ ["调试时不要惊慌", '', '深吸一口气,思考一下!关于可能导致错误的原因。'], + \ ["不要假设 - 证明它。", '', '在实际环境中证明你的假设 - 使用真实数据和边界条件。'], + \ ['编写编写代码的代码。', '', '代码生成器可提高您的工作效率并帮助避免重复。'], + \ ['Design With contracts.', '', 'Use contracts to document and verify that code does no more and not less than it claims to do.'], + \ ['使用断言来防止不可能发生的事情。', '', '断言验证你的假设。使用它们来保护您的代码免受不确定世界的影响。'], + \ ['完成你开始的事情。', '', '在可能的情况下,分配资源的例程或对象应该负责释放它。'], + \ ["配置,不集成。", '', '将应用程序的技术选择作为配置选项,而不是通过集成或工程实现。'], + \ ['分析工作流以提高并发性。', '', "利用用户工作流中的并发性。"], + \ ['始终为并发设计。', '', "允许并发,你将设计出更简洁的界面,假设更少。"], + \ ['使用黑板来协调工作流程。', '', '使用黑板来协调不同的事实和代理,同时保持参与者之间的独立性和隔离性。'], + \ ['估计你的算法的顺序。', '', '在你写代码之前感受一下事情可能需要多长时间。'], + \ ['尽早重构,经常重构。', '', '就像您可能会除草和重新布置花园一样,在需要时重写、返工和重新架构代码。解决问题的根源。'], + \ ['测试你的软件,否则你的用户会。', '', "无情地测试。不要让你的用户为你找到错误。"], + \ ["不要收集需求 - 挖掘它们。", '', "需求很少浮出水面。它们深埋在假设、误解和政治的层层之下。"], + \ ['抽象比细节长寿。', '', '投资于抽象,而不是实施。抽象可以在不同实现和新技术的变化中幸存下来。'], + \ ["不要跳出框框思考——找到框框。", '', '当面临一个不可能解决的问题时,确定真正的约束。问问自己:“一定要这样做吗?真的一定要这样做吗?”'], + \ ['有些事情做得比描述的要好。', '', "不要陷入规范螺旋 - 在某些时候你需要开始编码。"], + \ ["Don't use manual procedures.", '', 'shell 脚本或批处理文件将以相同的顺序一次又一次地执行相同的指令。'], + \ ['测试状态覆盖率,而不是代码覆盖率。', '', "识别和测试重要的程序状态。仅仅测试代码行是不够的。"], + \ ['英语只是一种编程语言。', '', '像写代码一样写文档:遵守 DRY 原则,使用元数据、MVC、自动生成等。'], + \ ["轻轻地超越用户的期望。", '', "了解用户的期望,然后再多交付一点点。"], + \ ['想想你的工作。', '', '关闭自动驾驶仪并掌控一切。不断地批评和评价你的工作。'], + \ ['记住大局。', '', "不要太专注于细节而忘记检查周围发生的事情。"], + \ ['定期投资于你的知识组合。', '', '让学习成为一种习惯。'], + \ ['让它易于重用。', '', "如果它易于重用,人们就会这样做。创造一个支持重用的环境。"], + \ ['没有最终决定。', '', '没有决定是一成不变的。相反,将每一个都视为写在沙滩上的沙子上,并计划改变。'], + \ ['要学习的原型。', '', '制作原型是一种学习体验。它的价值不在于您编写的代码,而在于您学到的课程。'], + \ ['估计以避免意外。', '', "在开始之前进行估计。你会提前发现潜在的问题。"], + \ ['以纯文本形式保存知识。', '', "纯文本不会过时。它有助于利用您的工作并简化调试和测试。"], + \ ['用好单一的编辑器。', '', '编辑器应该是你手的延伸;确保您的编辑器是可配置的、可扩展的和可编程的。'], + \ ['解决问题,而不是责备。', '', "这个错误是你的错还是别人的错并不重要 - 它仍然是你的问题,它仍然需要修复。"], + \ ["\"select\" isn't broken.", '', '很少在操作系统或编译器,甚至是第三方产品或库中发现错误。该错误很可能在应用程序中。'], + \ ['学习一种文本操作语言。', '', '你每天的大部分时间都在处理文本。为什么不让电脑为你做一些呢?'], + \ ["你不可能写出完美的软件。", '', "软件不可能完美。保护你的代码和用户免受不可避免的错误。"], + \ ['早早崩溃。', '', '死掉的程序通常比残废的程序造成的伤害要小得多。'], + \ ['对异常问题使用异常。', '', '异常可能会遇到经典意大利面条代码的所有可读性和可维护性问题。为特殊的事情保留例外。'], + \ ['最小化模块之间的耦合。', '', '通过编写“害羞”代码并应用得墨忒耳定律来避免耦合。'], + \ ['将抽象放在代码中,将细节放在元数据中。', '', '为一般情况编写程序,并将细节放在已编译的代码库之外。'], + \ ['使用服务进行设计。', '', '根据定义明确、一致的接口背后独立于服务的并发对象进行设计。'], + \ ['将视图与模型分开。', '', '通过根据模型和视图设计您的应用程序,以低成本获得灵活性。'], + \ ["不要凭巧合编程。", '', "只依赖可靠的东西。谨防偶然的复杂性,不要将愉快的巧合与有目的的计划混为一谈。"], + \ ['测试你的估计。', '', "算法的数学分析并不能告诉你一切。尝试在目标环境中对你的代码进行计时。"], + \ ['为测试而设计。', '', '在写一行代码之前就开始考虑测试。'], + \ ["不要使用你不理解的向导代码。", '', '向导可以生成大量代码。在将其纳入您的项目之前,请确保您了解所有内容。'], + \ ['与用户一起工作,像用户一样思考。', '', "这是深入了解系统实际使用方式的最佳方式。"], + \ ['使用项目词汇表。', '', '为项目创建和维护所有特定术语和词汇的单一来源。'], + \ ["准备就绪后开始。", '', "你一生都在积累经验。不要忽视琐碎的疑虑。"], + \ ["不要成为形式化方法的奴隶。", '', "不要盲目采用任何技术,而不要将其置于您的开发实践和能力的背景下。"], + \ ['围绕功能组织团队。', '', "不要将设计人员与编码人员、测试人员与数据建模人员分开。按照构建代码的方式构建团队。"], + \ ['早点测试。经常测试。自动测试。', '', '每次构建都运行的测试比搁置在架子上的测试计划更有效。'], + \ ['使用破坏者来测试你的测试。', '', '在源的单独副本中故意引入错误以验证测试是否会捕获它们。'], + \ ['Find bugs once.', '', '一旦人工测试人员发现了一个 bug,这应该是人工测试人员最后一次发现该 bug。自动测试应该从那时起检查它。'], + \ ['在你的作品上签名。', '', '早年的工匠们以在他们的作品上签名为荣。你也应该是。'], + \ ['三思而后行,代码一次。'], + \ ['无论你在错误的道路上走了多远,现在就回头吧。'], + \ ['为什么我们从来没有时间把事情做好,却总是有时间重新做?'], + \ ['数周的编程可以为您节省数小时的计划时间。'], + \ ['迭代是人类,递归是神圣的。', '', '- L. Peter Deutsch'], + \ ['电脑没用。他们只能给你答案。', '', '- Pablo Picasso'], + \ ['计算机是否可以思考的问题就像潜艇是否可以游泳的问题。', '', '- Edsger W. Dijkstra'], + \ ['今天的大多数软件非常像埃及金字塔,有数百万块砖相互堆叠,没有结构完整性,而只是靠蛮力和成千上万的奴隶完成的。', '', '- Alan Kay' ], + \ ['控制复杂性是计算机编程的本质。', '', '- Brian Kernighan'], + \ ['复杂性致命。它耗尽了开发人员的生命,使产品难以规划、构建和测试,带来了安全挑战,并导致最终用户和管理员感到沮丧。', '', '- Ray Ozzie'], + \ ['好的软件的功能就是化繁为简。', '', '- Grady Booch'], + \ ['只有两个行业将他们的客户称为“用户”。', '', '- Edward Tufte'], + \ ['你们中的大多数人都熟悉程序员的优点。当然有三种:懒惰、急躁和狂妄自大。', '', '- Larry Wall'], + \ ['计算机科学教育不能使任何人成为专业程序员,就像学习画笔和颜料不能使某人成为专业画家一样。', '', '- Eric S. Raymond'], + \ ['乐观是编程的职业病;反馈就是治疗。', '', '- Kent Beck'], + \ ['首先,解决问题。然后,编写代码。', '', '- John Johnson'], + \ ['用代码行数衡量编程进度就像用重量衡量飞机制造进度。', '', '- Bill Gates'], + \ ['一个 LISP 程序员知道一切的价值,但什么都不知道的成本。', '', '- Alan J. Perlis'], + \ ['计算机科学中的所有问题都可以通过另一个间接层次来解决。', '', '- David Wheeler'], + \ ['函数延迟绑定;数据结构导致绑定。道德:在编程过程后期结构化数据。', '', '- Alan J. Perlis'], + \ ['简单的事情应该是容易的,困难的事情应该是可能的。', '', '- Larry Wall'], + \ ['没有什么比临时解决方案更持久。'], + \ ['所有编程都是缓存练习。', '', '- Terje Mathisen'], + \ ['软件很难。', '', '- Donald Knuth'], + \ ['他们不知道这是不可能的,所以他们做到了!', '', '-马克吐温'], + \ ['面向对象的模型使得通过累加构建程序变得容易。这通常意味着,在实践中,它提供了一种结构化的方式来编写意大利面条代码。', '', '- Paul Graham'], + \ ['问题:一个大型软件项目怎么会迟到一年?', '回答:一次一天!'], + \ ['前90%的代码占前90%的开发时间。剩下的 10% 的代码占了另外 90% 的开发时间。', '', '- Tom Cargill'], + \ ['如果调试是去除 bug 的过程,那么编程一定是将它们放入的过程。', '', '- Edsger W. Dijkstra'], + \ ['640K 应该对任何人都足够了。', '', '- Bill Gates, 1981'], + \ ['要理解递归,首先要理解递归。', '', '-史蒂芬·霍金'], + \ ['培养对不完美的容忍度是将长期起步者转变为始终如一的终结者的关键因素。', '', '- Jon Acuff'], + \ ['如果两者都冻结,则在水上行走和根据规范开发软件很容易。', '', '- Edward V. Berard'], + \ ['保持好奇心。广泛阅读。尝试新事物。我认为很多人们所说的智慧都归结为好奇心。', '', '- Aaron Swartz'], + \ ['一个程序员可以在一个月内完成的事情,两个程序员可以在两个月内完成。', '', '- Frederick P. Brooks'], + \ ] + + + else + return [ + \ ["Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.", '', '- Brian Kernighan'], + \ ["If you don't finish then you're just busy, not productive."], + \ ['Adapting old programs to fit new machines usually means adapting new machines to behave like old ones.', '', '- Alan Perlis'], + \ ['Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.', '', '- Alan Perlis'], + \ ['It is easier to change the specification to fit the program than vice versa.', '', '- Alan Perlis'], + \ ['Simplicity does not precede complexity, but follows it.', '', '- Alan Perlis'], + \ ['Optimization hinders evolution.', '', '- Alan Perlis'], + \ ['Recursion is the root of computation since it trades description for time.', '', '- Alan Perlis'], + \ ['It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.', '', '- Alan Perlis'], + \ ['There is nothing quite so useless as doing with great efficiency something that should not be done at all.', '', '- Peter Drucker'], + \ ["If you don't fail at least 90% of the time, you're not aiming high enough.", '', '- Alan Kay'], + \ ['I think a lot of new programmers like to use advanced data structures and advanced language features as a way of demonstrating their ability. I call it the lion-tamer syndrome. Such demonstrations are impressive, but unless they actually translate into real wins for the project, avoid them.', '', '- Glyn Williams'], + \ ['I would rather die of passion than of boredom.', '', '- Vincent Van Gogh'], + \ ['If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.'], + \ ["The computing scientist's main challenge is not to get confused by the complexities of his own making.", '', '- Edsger W. Dijkstra'], + \ ["Progress in a fixed context is almost always a form of optimization. Creative acts generally don't stay in the context that they are in.", '', '- Alan Kay'], + \ ['The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well.', '', '- Phil Wadler'], + \ ['A good programmer is someone who always looks both ways before crossing a one-way street.', '', '- Doug Linder'], + \ ['Patterns mean "I have run out of language."', '', '- Rich Hickey'], + \ ['Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.', '', '- John Woods'], + \ ['Unix was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.'], + \ ['Contrary to popular belief, Unix is user friendly. It just happens to be very selective about who it decides to make friends with.'], + \ ['Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.'], + \ ['There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.', '', '- C.A.R. Hoare'], + \ ["If you don't make mistakes, you're not working on hard enough problems.", '', '- Frank Wilczek'], + \ ["If you don't start with a spec, every piece of code you write is a patch.", '', '- Leslie Lamport'], + \ ['Caches are bugs waiting to happen.', '', '- Rob Pike'], + \ ['Abstraction is not about vagueness, it is about being precise at a new semantic level.', '', '- Edsger W. Dijkstra'], + \ ["dd is horrible on purpose. It's a joke about OS/360 JCL. But today it's an internationally standardized joke. I guess that says it all.", '', '- Rob Pike'], + \ ['All loops are infinite ones for faulty RAM modules.'], + \ ['All idioms must be learned. Good idioms only need to be learned once.', '', '- Alan Cooper'], + \ ['For a successful technology, reality must take precedence over public relations, for Nature cannot be fooled.', '', '- Richard Feynman'], + \ ['If programmers were electricians, parallel programmers would be bomb disposal experts. Both cut wires.', '', '- Bartosz Milewski'], + \ ['Computers are harder to maintain at high altitude. Thinner air means less cushion between disk heads and platters. Also more radiation.'], + \ ['Almost every programming language is overrated by its practitioners.', '', '- Larry Wall'], + \ ['Fancy algorithms are slow when n is small, and n is usually small.', '', '- Rob Pike'], + \ ['Methods are just functions with a special first argument.', '', '- Andrew Gerrand'], + \ ['Care about your craft.', '', 'Why spend your life developing software unless you care about doing it well?'], + \ ["Provide options, don't make lame excuses.", '', "Instead of excuses, provide options. Don't say it can't be done; explain what can be done."], + \ ['Be a catalyst for change.', '', "You can't force change on people. Instead, show them how the future might be and help them participate in creating it."], + \ ['Make quality a requirements issue.', '', "Involve your users in determining the project's real quality requirements."], + \ ['Critically analyze what you read and hear.', '', "Don't be swayed by vendors, media hype, or dogma. Analyze information in terms of you and your project."], + \ ["DRY - Don't Repeat Yourself.", '', 'Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.'], + \ ['Eliminate effects between unrelated things.', '', 'Design components that are self-contained, independent, and have a single, well-defined purpose.'], + \ ['Use tracer bullets to find the target.', '', 'Tracer bullets let you home in on your target by trying things and seeing how close they land.'], + \ ['Program close to the problem domain.', '', "Design and code in your user's language."], + \ ['Iterate the schedule with the code.', '', 'Use experience you gain as you implement to refine the project time scales.'], + \ ['Use the power of command shells.', '', "Use the shell when graphical user interfaces don't cut it."], + \ ['Always use source code control.', '', 'Source code control is a time machine for your work - you can go back.'], + \ ["Don't panic when debugging", '', 'Take a deep breath and THINK! about what could be causing the bug.'], + \ ["Don't assume it - prove it.", '', 'Prove your assumptions in the actual environment - with real data and boundary conditions.'], + \ ['Write code that writes code.', '', 'Code generators increase your productivity and help avoid duplication.'], + \ ['Design With contracts.', '', 'Use contracts to document and verify that code does no more and no less than it claims to do.'], + \ ['Use assertions to prevent the impossible.', '', 'Assertions validate your assumptions. Use them to protect your code from an uncertain world.'], + \ ['Finish what you start.', '', 'Where possible, the routine or object that allocates a resource should be responsible for deallocating it.'], + \ ["Configure, don't integrate.", '', 'Implement technology choices for an application as configuration options, not through integration or engineering.'], + \ ['Analyze workflow to improve concurrency.', '', "Exploit concurrency in your user's workflow."], + \ ['Always design for concurrency.', '', "Allow for concurrency, and you'll design cleaner interfaces with fewer assumptions."], + \ ['Use blackboards to coordinate workflow.', '', 'Use blackboards to coordinate disparate facts and agents, while maintaining independence and isolation among participants.'], + \ ['Estimate the order of your algorithms.', '', 'Get a feel for how long things are likely to take before you write code.'], + \ ['Refactor early, refactor often.', '', 'Just as you might weed and rearrange a garden, rewrite, rework, and re-architect code when it needs it. Fix the root of the problem.'], + \ ['Test your software, or your users will.', '', "Test ruthlessly. Don't make your users find bugs for you."], + \ ["Don't gather requirements - dig for them.", '', "Requirements rarely lie on the surface. They're buried deep beneath layers of assumptions, misconceptions, and politics."], + \ ['Abstractions live longer than details.', '', 'Invest in the abstraction, not the implementation. Abstractions can survive the barrage of changes from different implementations and new technologies.'], + \ ["Don't think outside the box - find the box.", '', 'When faced with an impossible problem, identify the real constraints. Ask yourself: "Does it have to be done this way? Does it have to be done at all?"'], + \ ['Some things are better done than described.', '', "Don't fall into the specification spiral - at some point you need to start coding."], + \ ["Costly tools don't produce better designs.", '', 'Beware of vendor hype, industry dogma, and the aura of the price tag. Judge tools on their merits.'], + \ ["Don't use manual procedures.", '', 'A shell script or batch file will execute the same instructions, in the same order, time after time.'], + \ ["Coding ain't done 'til all the Tests run.", '', "'Nuff said."], + \ ['Test state coverage, not code coverage.', '', "Identify and test significant program states. Just testing lines of code isn't enough."], + \ ['English is just a programming language.', '', 'Write documents as you would write code: honor the DRY principle, use metadata, MVC, automatic generation, and so on.'], + \ ["Gently exceed your users' expectations.", '', "Come to understand your users' expectations, then deliver just that little bit more."], + \ ['Think about your work.', '', 'Turn off the autopilot and take control. Constantly critique and appraise your work.'], + \ ["Don't live with broken windows.", '', 'Fix bad designs, wrong decisions, and poor code when you see them.'], + \ ['Remember the big picture.', '', "Don't get so engrossed in the details that you forget to check what's happening around you."], + \ ['Invest regularly in your knowledge portfolio.', '', 'Make learning a habit.'], + \ ["It's both what you say and the way you say it.", '', "There's no point in having great ideas if you don't communicate them effectively."], + \ ['Make it easy to reuse.', '', "If it's easy to reuse, people will. Create an environment that supports reuse."], + \ ['There are no final decisions.', '', 'No decision is cast in stone. Instead, consider each as being written in the sand at the beach, and plan for change.'], + \ ['Prototype to learn.', '', 'Prototyping is a learning experience. Its value lies not in the code you produce, but in the lessons you learn.'], + \ ['Estimate to avoid surprises.', '', "Estimate before you start. You'll spot potential problems up front."], + \ ['Keep knowledge in plain text.', '', "Plain text won't become obsolete. It helps leverage your work and simplifies debugging and testing."], + \ ['Use a single editor well.', '', 'The editor should be an extension of your hand; make sure your editor is configurable, extensible, and programmable.'], + \ ['Fix the problem, not the blame.', '', "It doesn't really matter whether the bug is your fault or someone else's - it is still your problem, and it still needs to be fixed."], + \ ["\"select\" isn't broken.", '', 'It is rare to find a bug in the OS or the compiler, or even a third-party product or library. The bug is most likely in the application.'], + \ ['Learn a text manipulation language.', '', 'You spend a large part of each day working with text. Why not have the computer do some of it for you?'], + \ ["You can't write perfect software.", '', "Software can't be perfect. Protect your code and users from the inevitable errors."], + \ ['Crash early.', '', 'A dead program normally does a lot less damage than a crippled one.'], + \ ['Use exceptions for exceptional problems.', '', 'Exceptions can suffer from all the readability and maintainability problems of classic spaghetti code. Reserve exceptions for exceptional things.'], + \ ['Minimize coupling between modules.', '', 'Avoid coupling by writing "shy" code and applying the Law of Demeter.'], + \ ['Put abstractions in code, details in metadata.', '', 'Program for the general case, and put the specifics outside the compiled code base.'], + \ ['Design using services.', '', 'Design in terms of services-independent, concurrent objects behind well-defined, consistent interfaces.'], + \ ['Separate views from models.', '', 'Gain flexibility at low cost by designing your application in terms of models and views.'], + \ ["Don't program by coincidence.", '', "Rely only on reliable things. Beware of accidental complexity, and don't confuse a happy coincidence with a purposeful plan."], + \ ['Test your estimates.', '', "Mathematical analysis of algorithms doesn't tell you everything. Try timing your code in its target environment."], + \ ['Design to test.', '', 'Start thinking about testing before you write a line of code.'], + \ ["Don't use wizard code you don't understand.", '', 'Wizards can generate reams of code. Make sure you understand all of it before you incorporate it into your project.'], + \ ['Work with a user to think like a user.', '', "It's the best way to gain insight into how the system will really be used."], + \ ['Use a project glossary.', '', 'Create and maintain a single source of all the specific terms and vocabulary for a project.'], + \ ["Start when you're ready.", '', "You've been building experience all your life. Don't ignore niggling doubts."], + \ ["Don't be a slave to formal methods.", '', "Don't blindly adopt any technique without putting it into the context of your development practices and capabilities."], + \ ['Organize teams around functionality.', '', "Don't separate designers from coders, testers from data modelers. Build teams the way you build code."], + \ ['Test early. Test often. Test automatically.', '', 'Tests that run with every build are much more effective than test plans that sit on a shelf.'], + \ ['Use saboteurs to test your testing.', '', 'Introduce bugs on purpose in a separate copy of the source to verify that testing will catch them.'], + \ ['Find bugs once.', '', 'Once a human tester finds a bug, it should be the last time a human tester finds that bug. Automatic tests should check for it from then on.'], + \ ['Sign your work.', '', 'Craftsmen of an earlier age were proud to sign their work. You should be, too.'], + \ ['Think twice, code once.'], + \ ['No matter how far down the wrong road you have gone, turn back now.'], + \ ['Why do we never have time to do it right, but always have time to do it over?'], + \ ['Weeks of programming can save you hours of planning.'], + \ ['To iterate is human, to recurse divine.', '', '- L. Peter Deutsch'], + \ ['Computers are useless. They can only give you answers.', '', '- Pablo Picasso'], + \ ['The question of whether computers can think is like the question of whether submarines can swim.', '', '- Edsger W. Dijkstra'], + \ ["It's ridiculous to live 100 years and only be able to remember 30 million bytes. You know, less than a compact disc. The human condition is really becoming more obsolete every minute.", '', '- Marvin Minsky'], + \ ["The city's central computer told you? R2D2, you know better than to trust a strange computer!", '', '- C3PO'], + \ ['Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.', '', '- Alan Kay'], + \ ["I've finally learned what \"upward compatible\" means. It means we get to keep all our old mistakes.", '', '- Dennie van Tassel'], + \ ["There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence.", '', '- Jeremy S. Anderson'], + \ ["The bulk of all patents are crap. Spending time reading them is stupid. It's up to the patent owner to do so, and to enforce them.", '', '- Linus Torvalds'], + \ ['Controlling complexity is the essence of computer programming.', '', '- Brian Kernighan'], + \ ['Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges, and it causes end-user and administrator frustration.', '', '- Ray Ozzie'], + \ ['The function of good software is to make the complex appear to be simple.', '', '- Grady Booch'], + \ ["There's an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.", '', '- Bjarne Stroustrup'], + \ ['There are only two industries that refer to their customers as "users".', '', '- Edward Tufte'], + \ ['Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.', '', '- Larry Wall'], + \ ['Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.', '', '- Eric S. Raymond'], + \ ['Optimism is an occupational hazard of programming; feedback is the treatment.', '', '- Kent Beck'], + \ ['First, solve the problem. Then, write the code.', '', '- John Johnson'], + \ ['Measuring programming progress by lines of code is like measuring aircraft building progress by weight.', '', '- Bill Gates'], + \ ["Don't worry if it doesn't work right. If everything did, you'd be out of a job.", '', "- Mosher's Law of Software Engineering"], + \ ['A LISP programmer knows the value of everything, but the cost of nothing.', '', '- Alan J. Perlis'], + \ ['All problems in computer science can be solved with another level of indirection.', '', '- David Wheeler'], + \ ['Functions delay binding; data structures induce binding. Moral: Structure data late in the programming process.', '', '- Alan J. Perlis'], + \ ['Easy things should be easy and hard things should be possible.', '', '- Larry Wall'], + \ ['Nothing is more permanent than a temporary solution.'], + \ ["If you can't explain something to a six-year-old, you really don't understand it yourself.", '', '- Albert Einstein'], + \ ['All programming is an exercise in caching.', '', '- Terje Mathisen'], + \ ['Software is hard.', '', '- Donald Knuth'], + \ ['They did not know it was impossible, so they did it!', '', '- Mark Twain'], + \ ['The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code.', '', '- Paul Graham'], + \ ['Question: How does a large software project get to be one year late?', 'Answer: One day at a time!'], + \ ['The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.', '', '- Tom Cargill'], + \ ["In software, we rarely have meaningful requirements. Even if we do, the only measure of success that matters is whether our solution solves the customer's shifting idea of what their problem is.", '', '- Jeff Atwood'], + \ ['If debugging is the process of removing bugs, then programming must be the process of putting them in.', '', '- Edsger W. Dijkstra'], + \ ['640K ought to be enough for anybody.', '', '- Bill Gates, 1981'], + \ ['To understand recursion, one must first understand recursion.', '', '- Stephen Hawking'], + \ ['Developing tolerance for imperfection is the key factor in turning chronic starters into consistent finishers.', '', '- Jon Acuff'], + \ ['Every great developer you know got there by solving problems they were unqualified to solve until they actually did it.', '', '- Patrick McKenzie'], + \ ["The average user doesn't give a damn what happens, as long as (1) it works and (2) it's fast.", '', '- Daniel J. Bernstein'], + \ ['Walking on water and developing software from a specification are easy if both are frozen.', '', '- Edward V. Berard'], + \ ['Be curious. Read widely. Try new things. I think a lot of what people call intelligence boils down to curiosity.', '', '- Aaron Swartz'], + \ ['What one programmer can do in one month, two programmers can do in two months.', '', '- Frederick P. Brooks'], + \ ] + endif +endfunction + diff --git a/doc/startify.txt b/doc/startify.txt index 1581b78..6697fb9 100644 --- a/doc/startify.txt +++ b/doc/startify.txt @@ -108,6 +108,7 @@ default values. |g:startify_lists| |g:startify_skiplist| |g:startify_update_oldfiles| + |g:startify_language| Misc options:~ |g:startify_commands| @@ -468,6 +469,13 @@ Example: let g:startify_enable_special = 1 < Show and . +------------------------------------------------------------------------------ + *g:startify_language +> + let g:startify_language = "pt-br" + let g:startify_language = "es" + let g:startify_language = "ch" +< ------------------------------------------------------------------------------ *g:startify_enable_unsafe* >