Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
>
A intenção é escrever uma mesma query que independente das particularidads que um SGBD possui com relação a sublinguagem (não acho SQL uma linguagem propriamente dita), a mesma vai funcionar.
SQL é uma linguagem independente e poderosissima.
isso aqui:
>
A intenção é escrever uma mesma query que independente das particularidads que um SGBD possui
não é bem assim. Não confunda as coisas.
PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility.
http://www.php.net/manual/en/intro.pdo.php
a abstração é no acesso aos dados, e não ao banco de dados. Primeiro entendam oque estão usando.
Disso eu tenho que discordar de ti também.
linguagem de domínio específico.
sim, sql é uma DSL.porém,
SQL não é uma linguagem, é uma pseudo-linguagem
falar que não é uma linguagem, ou que é pseudo ou sub é muito incorreto.
Pois é, são esses pequenos equívocos que ainda fazem de mim um mero humano. ;)
Quanto a ser ou não ser uma linguagem, apesar de ser no nome e ela sozinha ser capaz de fazer coisas grandiosas por ela mesma, sem intervenção da linguagem server-side escolhida, errado é dizer que ela é uma linguagem completa.
Apesar de ela ter, dentre outras coisas que caracterizam uma linguagem, suporte ao uso de variáveis, como Andrey demonstrou recentemente nos tópicos sobre EVENTS, ela, a grosso modo, interpreta um texto estruturado e retorna informações que casem com as condições definidas, ordenando, agrupando, contando...
>
que não é uma linguagem, ou que é pseudo ou sub é muito incorreto.
Mas não é uma linguagem.
>
Pseudocode is a compact and informal high-level description of a computer programming algorithm that uses the structural conventions of a programming language, but is intended for human reading rather than machine reading. Pseudocode typically omits details that are not essential for human understanding of the algorithm, such as variable declarations, system-specific code and subroutines. The programming language is augmented with natural language descriptions of the details, where convenient, or with compact mathematical notation. The purpose of using pseudocode is that it is easier for humans to understand than conventional programming language code, and that it is an efficient and environment-independent description of the key principles of an algorithm. It is commonly used in textbooks and scientific publications that are documenting various algorithms, and also in planning of computer program development, for sketching out the structure of the program before the actual coding takes place. No standard for pseudocode syntax exists, as a program in pseudocode is not an executable program. Pseudocode resembles, but should not be confused with, skeleton programs including dummy code, which can be compiled without errors. Flowcharts and UML charts can be thought of as a graphical alternative to pseudocode, but are more spacious on paper.
Pseudocódigo é uma descrição de alto nível, compacta e informal, de um algoritmo de programação de computador que usa as convenções estruturais de uma linguagem de programação, mas destina-se a leitura humana ao invés de leitura óptica.
Pseudocódigo normalmente omite detalhes que não são essenciais para a compreensão humana do algoritmo, tais como declarações de variáveis, sistema de código específico e sub-rotinas. A linguagem de programação é aumentada com descrições em linguagem natural dos detalhes, onde conveniente, ou com notação matemática compacta. O objectivo da utilização pseudocódigo é que é mais fácil para os seres humanos entender que o código da linguagem de programação convencionais, e que é uma descrição eficiente e ambiente independente dos princípios-chave de um algoritmo.
---
Se analisar a estrutura léxica da linguagem:
SELECT coluna FROM tabela WHERE chave=valor
Selecione a coluna da tabela quando a chave é igual ao valor.
SQL é uma pseudo-linguagem, normalizada e padronizada; Foi criada por volta de 1970 quando a IBM (entre outros) desenvolveram o SEQUEL ou Structured English Query Language que foi desenhada para oferecer facilidade de uso e legibilidade.
As instruções SQL podem ser consideradas instruções simples em inglês.
;)
Não sei porque você citou pseudocódigo, sql não tem absolutamente nada a ver com pseudocódigo.
A descrição que você quotou, inclusive o que você colocou em underline, explicita isso.
Existem várias rotinas dentro do SQL que desconhecemos, ele faz operações cabulosas lá dentro, mas nem por isso eu classificaria como pseudo.
Se não php também seria pseudo, pois não fazemos a menor idéia de como ele trabalha com pilha ou memória. Enfim, se fosse para pensar assim, todas de alto nivel seriam pseudo. =)
SQL ter esse nível de abstracão, fazendo a ser tão simples qnto (muito semelhante a) uma 'frase', apenas indica que é uma linguagem de alto nível :lol:
Não sei porque você citou pseudocódigo, sql não tem absolutamente nada a ver com pseudocódigo.
Mas é claro que tem, na própria descrição de pseudocódigo da Wikipedia diz isso :seta: http://en.wikipedia.org/wiki/Pseudocode
>
Natural language grammar in programming languages
Various attempts to bring elements of natural language grammar into computer programming have produced programming languages such as HyperTalk, Lingo, AppleScript, SQL, Inform and to some extent Python. In these languages, parentheses and other special characters are replaced by prepositions, resulting in quite talkative code. These languages are typically dynamically typed, meaning that variable declarations and other boilerplate code can be omitted. Such languages may make it easier for a person without knowledge about the language to understand the code and perhaps also to learn the language. However, the similarity to natural language is usually more cosmetic than genuine. The syntax rules may be just as strict and formal as in conventional programming, and do not necessarily make development of the programs easier.
O que estou achando é que está havendo um certo preconceito com o termo pseudo, o fato é que SQL é uma linguagem simplificada, feita para ser assim e, como tal, uma pseudolinguagem. Mas o fato de ser uma pseudolinguagem não faz dela menos importante ou mais fraca.
Basta ver os elementos da linguagem:
>
The SQL language is sub-divided into several language elements, including:
-
Clauses, which are constituent components of statements and queries. (In some cases, these are optional.)[[11]](http://en.wikipedia.org/wiki/SQL#cite_note-10)
-
Expressions, which can produce either scalar values or tables consisting of columns and rows of data.
-
Predicates, which specify conditions that can be evaluated to SQL three-valued logic (3VL) or Boolean (true/false/unknown) truth values and which are used to limit the effects of statements and queries, or to change program flow.
-
Queries, which retrieve the data based on specific criteria. This is the most important element of SQL.
-
Statements, which may have a persistent effect on schemata and data, or which may control transactions, program flow, connections, sessions, or diagnostics.
PHP :seta: http://www.php.net/manual/en/langref.php
>
Existem várias rotinas dentro do SQL que desconhecemos, ele faz operações cabulosas lá dentro, mas nem por isso eu classificaria como pseudo.
Se não php também seria pseudo, pois não fazemos a menor idéia de como ele trabalha com pilha ou memória. Enfim, se fosse para pensar assim, todas de alto nivel seriam pseudo. =)
Agora é um erro dizer que, porque muitas coisas acontecem no motor que interpreta a linguagem, ela é linguagem completa ou uma pseudolinguagem, e é um erro porque estamos falando da linguagem e não do motor.
:seta: Seria o mesmo que afirmar que, pelo motor ser potente, basta colocar uma criança em um carro de F1 que ela será um piloto.
;)
Pessoal, a discussão nesse tópico tem como origem o seguinte tópico :seta: http://forum.imasters.com.br/topic/438071-pdo-ou-poo
A separação foi feita para não atrapalhar na elucidação da dúvida do autor do outro tópico.
>
Se analisar a estrutura léxica da linguagem:
SELECT coluna FROM tabela WHERE chave=valor
Selecione a coluna da tabela quando a chave é igual ao valor.
ai estamos falando de uma Linguagem Natural, mas não pseudo
o conceito que tenho de Pseudo Linguagem, me diz que é algo intermediário.
Entre a linguagem natural e uma linguagem de programação.
De forma mais crua, um pseudo código, não deveria nem sequer executar. (pseudo <=> falso)
http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html
In general the vocabulary used in the pseudocode should be the vocabulary of the problem domain, not of the implementation domain. The pseudocode is a narrative for someone who knows the requirements (problem domain) and is trying to learn how the solution is organized. E.g.,
na minha concepção, SQL é bem mais do que isso.
a única controvérsia que pode existir, é o fato de eu ter dito independente. Por ser uma DSL, ela precisa de uma outra linguagem.
Mas isso não a deixa a margem das demais linguagens, já que ainda usamos o padrão SQL-92, enqnto a SQL-3 (de 1999), em sua implementação completa, nos é apenas um sonho.
SQL não é uma linguagem, é uma pseudo-linguagem ou, se preferir, linguagem de domínio específico.
;)