Bibliotecas Delphi Open Source
Para demonstrar como nem tudo na vida é objeto, apresento uma lista de bibliotecas Delphi de excelente qualidade escritas em grande parte em código procedural. São também exemplos de códigos bem escritos, leves e eficientes. Todas são open source e freeware.
Fastcode é um desafio público de quem escreve o código mais eficiente para substituir as funções regulares da RTL do Delphi. O projeto está ativo e uma-a-uma vão sendo publicadas novas versões de funções, geralmente em assembly inline. O negócio é tão sério que algumas das funções foram até integradas nas últimas versões do Delphi, substituindo as versões originais da Borland.
FastMM é um clássico. É um gerenciador de memória alternativo que transparentemente aumenta a eficiência das aplicações Delphi, melhorando a forma como são alocados e liberados os blocos de memória pelo programa. Passou a ser o gerenciador default no BDS 2006. Se você usa uma versão anterior do Delphi, então não pode deixar de adotar a FastMM.
Uma biblioteca para compressão e descompressão ZIP muito mais rápida que aquela disponível no Delphi, sem necessidade de DLLs. Fast Zlib detecta os recursos de hardware disponíveis e utiliza o código otimizado para o processador disponível, incluindo código para processadores P6 e alinhamento de 64 bits. Trabalha direto com Strings e classes TStream. Também suporta compressão compatível com HTTP deflate, para enviar conteúdo compactado direto aos browsers.
Synapse é uma respeitadíssima biblioteca de comunicação TCP/IP super-light que você pode usar no lugar do Indy. Tem uma abordagem diferente: comunicação síncrona (blocking) e no lugar de objetos um conjunto muito simples de funções procedurais.
Um pacote open-source de criptografia “séria” em Delphi. Suporta todos os principais algoritmos de criptografia:
- Blowfish
- Cast 128
- Cast 256
- DES, 3DES
- Ice, Thin Ice, Ice2
- IDEA
- Mars
- Misty1
- RC2, RC4, RC5, RC6
- Rijndael (the new AES)
- Serpent
- Tea
- Twofish
E os algoritmos de hash codes:
- Haval
- MD4
- MD5
- RipeMD-128
- RipeMD-160
- SHA-1
- SHA-256, SHA-384, SHA-512
- Tiger
A popular JCL é uma riquíssima biblioteca de funções utilitárias e classes não visuais. Foi construída sobre código doado pela comunidade Delphi e organizada pelo pessoal do projeto JEDI, que reformatou o código para manter um padrão, testou, documentou e reuniu os fontes em uma biblioteca.
A JCL é organizada nas categorias:
- Algorithms
- Base Services
- Containers
- Date and Time
- Debugging
- Expression Evaluation
- Files and IO
- Graphics
- Internationalisation
- Internet and E-mail
- Libraries, Processes and Threads
- Math Routines
- Memory, Classes and Objects
- MIME
- Miscellaneous
- MultiMedia
- Ordinal Math and Logic
- Registry and Ini files
- Runtime Type Information
- String manipulation
- System Information Routines
- Unicode
- Unit Conversions
- Windows Specific
- Regular Expressions
- Source files
- Win32 API
- Component Object Model
- LAN Manager
- Security
- Shell
- Windows NT Service control
Um amigo diz que quando precisa de qualquer código diferente do habitual primeiro procura se já não existe na JCL, simplesmente porque tem tudo lá.
SysTools é outra extensa biblioteca de código de propósito geral. Foi produzida e comercializada pela TurboPower de 1996 até 2001, quando foi liberada como open-source. Tem como diferenciais a qualidade de código superior da equipe TurboPower e uma documentação extraordinária, incluindo um manual em PDF com mais de 1000 páginas.
A maior parte da biblioteca é de classes não visuais, mas ainda assim tem muito código procedural. A propósito, ironicamente não é que tem lá uma classe String?! Como era de se esperar (veja o artigo anterior), a classe TStString não tem nem ancestrais, nem descendentes e todas as funções da classe também são disponíveis em outra unit como código procedural. A classe é bonitinha, mas ordinária. Na prática, você acaba não usando a classe nunca, já que é tão mais fácil e eficiente usar as rotinas de manipulação de strings isoladamente.
A SysTools é organizada nas categorias:
- String Manipulation
- String Class
- Streams
- Date/Time Routines
- High-Precision Floatint Point Math
- Random Numbers
- Logging Components
- Real Business Finance/Statistics
- Money Classes
- Operation System Utilities
- Low-Level Data Manipulation Routines
- Internet Data Classes
- Application Control Components
- LAN Manager Networking
- Regular Expressions
- Text Data, Text Mege, and Data Export Classes
- Bar Codes
- Container Classes
- Sort Engine
- Astronomical Routines
- Patterns (singleton, mediator, observer, chain)
Comments
Deixe uma Resposta
