Outras linguas junto a ahk Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

User avatar
Hologram
Posts: 140
Joined: 06 May 2020, 16:47

Outras linguas junto a ahk

06 Aug 2020, 15:15

Eu to um pouco inferrujado em ahk em vista que tenho estudado muitas linguas simultaneamente, se estou correto existe como usar outras linguas junto ao ahk né? Se sim um exemplo please? html, php, java algo do tipo
Discord: Npc Bugado#9074



local config = {
delrey = getPlayerCarValue(cid, DELREY),
cigarro = getPlayerCancer(cid, DERBY),
prostituta = getPlayerAIDS(cid, cracuda),
tresOitao = getPlayerRevorvi(cid, 38)
}
if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end


User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Outras linguas junto a ahk  Topic is solved

06 Aug 2020, 17:13

Boa tarde Hologram.

Scripts do AutoHotkey podem fazer uso de outras linguagens de programação, mas isso requer que haja uma "ponte" entre elas. Por exemplo, posso exibir html (que é uma linguagem diferente do AutoHotkey, pois tem sua própria semântica e sintaxes totalmente independentes) em uma GUI de script usando um controle ActiveX.

Exemplo: No exemplo abaixo, usamos HTML e CSS para escrever uma tabela em uma GUI criada pelo AutoHotkey.

Code: Select all

Gui, Add, ActiveX, x0 y0 w600 h600 vWB, shell explorer
wb.Navigate("about:blank")

CODIGO_HTML =
(
<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
}
</style>
</head>
<body>

<h2>Tabela com Bordas</h2>

<p>Usamos a propriedade border do CSS para adicionar uma borda na tabela HTML abaixo.</p>

<table style="width:100`%">
  <tr>
    <th>Nome</th>
    <th>Sobrenome</th> 
    <th>Idade</th>
  </tr>
  <tr>
    <td>Joao</td>
    <td>Silva</td>
    <td>50</td>
  </tr>
  <tr>
    <td>Jose</td>
    <td>Souza</td>
    <td>94</td>
  </tr>
  <tr>
    <td>Tiago</td>
    <td>Silva</td>
    <td>80</td>
  </tr>
</table>

</body>
</html>
)

wb.document.write(CODIGO_HTML)
Gui, show, w600 h600 Center

:arrow: No código acima, a "ponte" que mencionei seria o próprio controle ActiveX, que é quem possui essa funcionalidade de interpretar o código HTML e ao mesmo tempo pode ser acessado pelo AutoHotkey.

Outros exemplos de interação entre diferentes linguagem que já usei no AutoHotkey:

1. Usei o AutoHotkey para escrever arquivos em .kml, que é uma linguagem similar ao XML e que contém código interpretável pelo Google Earth.
2. Já usei código autohotkey para ler e escrever arquivos .xml.
3. Já usei o AutoHotkey para conectar à gestores de banco de dados e rodar queries escritas em SQL.
4. O AutoHotkey pode rodar código em linguagem de máquina (machine code). Tem algumas funções que usuários escreveram que tornam isso bem simples de fazer.
5. O AutoHotkey pode gerenciar o uso de um compilador ou interpretador em C, de modo que o código a ser usado fique dentro do script e seja passado para esse interpretador/compilador no momento certo (através de linha de comando, DLL ou etc).
6. Já escrevi uma DLL em C++ e, após compilá-la, fiz uso das funções dela de dentro do AutoHotkey através de DllCall().

E não se esqueça que você também pode escrever um interpretador para qualquer outra linguagem totalmente em AutoHotkey se quiser. A grosso modo podemos dizer que "linguagens" nada mais são do que conjuntos de regras sintáticas, semânticas e vocabulários que permitem ao programador passar instruções para a máquina. Se você sabe quais são as regras de uma linguagem (ou tem meios de descobrir), pode criar um interpretador para ela em quase qualquer outra linguagem de programação.

OBS: Posso estar enganado, mas parece-me que você tem buscado outras linguagens como forma de expandir seu conhecimento de programação em geral. Sem dúvida conhecer outras línguas aumenta seu acesso a outras fontes de aprendizado, mas isso não quer dizer que você não possa expandir seu conhecimento dentro de uma única linguagem, pois como disse antes: é possível fazer basicamente quase tudo que um computador pode fazer com uma única linguagem de programação (Logo, você também não tem limites para expandir seu conhecimento mesmo dentro de uma única linguagem). Aprender outras linguagens é como aprender inglês, espanhol, russo, japonês e etc. Mas qualquer uma (e todas) essas linguagens podem ser usadas para aprender engenharia aeroespacial (por exemplo). Logo, se o que você quer é aprender engenharia aeroespacial, só precisa saber uma língua.

:arrow: Se você quiser crescer bastante seu aprendizado de programação, tente desenvolver projetos diferentes, tais como criar um jogo ou criar um APP para gerenciar uma farmácia. Esse tipo de projeto aumenta muito seu conhecimento pois uma parte enorme dele só vem com a prática. Se não quiser ir tão longe, também pode buscar implementar tarefas diferentes. Já tentou escrever um gráfico de pizza em uma tela do AutoHotkey usando GDI? Já tentou fazer com que esse gráfico possa ser reconstruído automaticamente a partir de dados em uma tabela de excel?

Outra questão: conhecimentos acessórios -> Nem todo conhecimento útil ao programador vem de funcionalidades e linguagens. Alguns vem também de simplesmente entender como fazer alguma coisa. Um exemplo são os algoritmos de tratamento de imagem. Se você já usou o photoshop ou outro aplicativo de tratamento de imagem, deve ter percebido que ele possui ferramentas para fazer muitos "efeitos", tais como: borrar, trocar a cor, preto-e-branco, aumentar a resolução, diminuir a resolução, girar, etc. Todos esses algoritmos vem de conhecimentos sobre como usar os dados dos das cores dos pixels próximos para construir novos pixels. Borrar uma imagem é basicamente embaralhar os valores dos pixels próximos, preto-e-branco pode ser obtido tornando os três canais de cores iguais em um valor médio dos canais, girar requer um algoritmo de calcular novas posições para cada pixel, etc. Esse conhecimento de como fazer essas coisas vem da análise dos dados em si. Outro exemplo: para fazer um sistema para farmácias, você precisa entender quais são as rotinas de uma farmácia (cadastrar remédios? Cadastrar Receitas? Controlar Validades? Estoques? Caixa? Usuários e acessos? Tipos de medicamentos que exigem receita?, etc).
pedro45_vs
Posts: 39
Joined: 28 Jun 2020, 18:46

Re: Outras linguas junto a ahk

07 Aug 2020, 14:35

Boa tarde Gio,

Admiro muito seu trabalho e vejo que possui conhecimentos profundos do AutoHotKey.

Deixa eu te perguntar, como você disse, uma linguagem de programação é só um jeito de "conversar" com o computador. Dito isso, por que você acha que existe tantas linguagens diferentes? Por que aprender AutoHotKey e não python ou javascript ou C++?

Meu primeiro contato com programação foi com o AutoHotKey. Procurava um ferramenta para escrever textos repetitivos automaticamente e hoje eu uso para facilitar meu trabalho no escritório de contabilidade. Já criei scripts para verificar erros comuns em arquivos SPED, para extrair informações de livros fiscais de sistemas diferentes (RegEx é muito útil...), e a cada dia eu tenho mais ideias para implementar e facilitar minha vida e de meus colegas.

Porém eu sempre fico pensando se devia aprender outra linguagem de programação ainda que superficialmente ou me dedicar a aprofundar meus conhecimentos em autohotkey. Minha preocupação é de um dia ele for descontinuado ou não ser compatível com novas tecnologias que surgem a todo momento.

O que você pensa sobre isso?
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Outras linguas junto a ahk

07 Aug 2020, 17:29

Boa tarde Pedro45_vs.

Seja bem-vindo ao fórum da comunidade do AutoHotkey :thumbup:

Dito isso, por que você acha que existe tantas linguagens diferentes?

Por vários motivos na verdade. As linguagens nascem do interesse de pessoas. Algumas, como o SQL, por exemplo, tem um fim bastante específico: gerenciamento de bancos de dados. Já o HTML, tem um forte direcionamento para a web. O XML tem muito a ver com a estruturação da informação em tags (texto), e assim são algumas outras.

Mas também existem linguagens que cumprem papeis semelhantes também, tais como C++ e C# por exemplo. No caso do AutoHotkey, a linguagem nasceu com o intuito de unir a automação facilitada do AutoIt com a funcionalidade das hotkeys. Na época (2003) o Chris, que foi o primeiro desenvolvedor do AutoHotkey, era membro da comunidade do AutoIt, porém suas ideias com relação às hotkeys não foram levadas muito a sério pelos desenvolvedores do AutoIt, e por isso ele decidiu criar o AutoHotkey, que originalmente era um fork (algo como um novo galho) do AutoIt, com essa nova funcionalidade. Mas é claro que a linguagem avançou muito depois disso e hoje seria ridículo dizer que ela seja simplesmente para hotkeys.

As vezes também cria-se uma linguagem para implementar um novo paradigma de programação. As linguagens do tipo OOP (Programação Orientada a Objetos) são um exemplo. Também se pode criar uma nova linguagem por motivos mais banais, como manter uma reserva de mercado de desenvolvedores (como o swift da Apple, por exemplo). Objetivamente não tem nada que impeça alguém de criar uma nova linguagem simplesmente por interesse pessoal. Tudo que você precisa é criar um conjunto de regras de semântica, sintaxe e um vocabulário inicial que permite o surgimento de um compilador ou interpretador (ou seja, regras que possam ser traduzidas em código de máquina ou mesmo em outra linguagem que por sua vez possa).

Também tem alguns cases interessantes na história das linguagens de programação. Linguagens como COBOL, Basic e etc estão em desuso, mas já foram muito utilizadas no cenário da programação. Enfim, não tem muito o que dizer: parece que os seres humanos ficam sempre criando novos métodos de transmissão de ideias desde a pré-história, então com a informática isso não mudou muito :lol:

Por que aprender AutoHotKey e não python ou javascript ou C++?

É muito difícil elencar um porquê sem incorrer em alguma forma de preconceito. Podemos indicar as vantagens que as linguagens tem, mas não dizer que são melhores (ou piores) do que as outras linguagens. No caso do AutoHotkey você tem uma linguagem cujo compilador é gratuito e open source, além de ser uma linguagem muito facilitada para leigos e direcionada diretamente ao uso. Se você já tentou seguir um tutorial de C++, vai ver que eles vão gastar muito tempo te ensinando regras de semântica e sintaxe, de modo que você vai gastar muitas horas de estudo sem saber desenvolver nada praticamente, enquanto que no AutoHotkey você provavelmente já aprendeu usando pra fazer alguma coisa útil. Também temos uma comunidade bastante ativa e é também uma das mais amigáveis por aí (embora que isso não seja exatamente uma vantagem da linguagem em si, mas sim do conjunto). Muitos fórums de outras linguagens costumam ser mais duros com quem está tentando aprender as coisas do início (comunidades tóxicas).

Python é uma linguagem bastante utilizada para simulações matemáticas (NumPy) e aprendizado de machine learning (redes neurais, etc). JavaScript (que é totalmente diferente da linguagem java) é uma das três linguagens mais importantes para desenvolvimento web. C++ é uma das linguagens mais usadas desde o final do século passado, mas tem perdido bastante espaço ultimamente. Então todas elas tem vantagens e desvantagens.

Meu primeiro contato com programação foi com o AutoHotKey. Procurava um ferramenta para escrever textos repetitivos automaticamente e hoje eu uso para facilitar meu trabalho no escritório de contabilidade. Já criei scripts para verificar erros comuns em arquivos SPED, para extrair informações de livros fiscais de sistemas diferentes (RegEx é muito útil...), e a cada dia eu tenho mais ideias para implementar e facilitar minha vida e de meus colegas.

Isso é muito bom. Comigo a história foi bem parecida.

Porém eu sempre fico pensando se devia aprender outra linguagem de programação ainda que superficialmente ou me dedicar a aprofundar meus conhecimentos em autohotkey.

Eu fiz ambas as coisas. Aprendi C, C++, assembly e algumas outras linguagens algum tempo atrás, mas ao mesmo tempo nunca deixei de me aprofundar no AutoHotkey. No fim das contas todo conhecimento meio que se cruza, então a visão geral de programador que adquiri (aprofundando principalmente no AutoHotkey) aliado ao que eu vi nas outras linguagens me faz ter a certeza de que poderia realizar inúmeros projetos em qualquer outra linguagem sem nenhum receio de grandes problemas. Há algum tempo atrás eu traduzi o código de um tutorial em Python para AutoHotkey sem precisar seguir tutoriais de semântica/sintaxe para isso (link). Não estou dizendo que sou um "especialista em qualquer linguagem", mas sim que o conhecimento geral também conta muito, mesmo quando você se vê obrigado a programar em outra linguagem: nesse caso a curva de aprendizado é bastante reduzida em relação a alguém que não teve muito contato com programação antes.

:arrow: Mas tendo isso, se eu tivesse que escolher entre uma coisa ou outra (aprender novas linguagens ou me aprofundar na que já sei), eu escolheria me aprofundar na que já sei com certeza. Acredito que, em se tratando de programação, adquirir a habilidade de fazer algo novo vale mais do que aprender outra forma igualmente válida de fazer a mesma coisa, e mudar totalmente de linguagem é algo que eu só consideraria se houvesse uma razão forte para fazê-lo (tipo pegar um projeto grande em andamento já escrito em outra linguagem ou algo do tipo).

Minha preocupação é de um dia ele for descontinuado ou não ser compatível com novas tecnologias que surgem a todo momento.

É quase impossível o AutoHotkey ser descontinuado em um futuro próximo. Digo isso porque ele é formado por uma comunidade bastante ampla de desenvolvedores (muitos dos quais conhecem C++) e nenhum deles tem direitos autorais impeditivos sobre a linguagem, então se o desenvolvedor principal do interpretador decidir se aposentar, por exemplo, creio que haverá sempre alguém interessado em pegar o lugar dele.
pedro45_vs
Posts: 39
Joined: 28 Jun 2020, 18:46

Re: Outras linguas junto a ahk

08 Aug 2020, 10:49

Muito obrigado pela resposta, apesar de usar o AutoHotkey ha pelo menos uns três anos, só recentemente resolvi criar uma conta para participar aqui do fórum.

Eu acho que você tem razão, é melhor me aprofundar nos conhecimentos em uma linguagem que me é familiar. Apesar de já ter escrito alguns scripts simples só agora resolvi me aventurar no mundo das GUIs por exemplo. E dá pra fazer muitas ferramentas ficarem mais intuitivas com elas...

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 41 guests