让我在OO语言中使用SQL的一件事就是必须在字符串中定义SQL语句.
当我以前在IBM大型机上工作时,这些语言使用SQL预处理器来解析本机代码中的SQL语句,因此语句可以用明文SQL编写而不会混淆字符串,例如在Cobol中有一个EXEC SQL. ... END-EXEC语法结构,它允许纯SQL语句可以嵌入在COBOL代码.
<pure cobol code, including assignment of value
to local variable HOSTVARIABLE>
EXEC SQL
SELECT COL_A, COL_B, COL_C
INTO :COLA, :COLB, :COLC
FROM TAB_A
WHERE COL_D = :HOSTVARIABLE
END_EXEC
<more cobol code, variables COLA, COLB, COLC have been set>
Run Code Online (Sandbox Code Playgroud)
...这使得SQL语句非常容易阅读并检查错误.在EXEC SQL .... END-EXEC令牌之间没有对缩进,换行等的限制,因此您可以根据品味格式化SQL语句.
请注意,此示例适用于单行选择,当需要多行结果集时,编码不同(但仍然易于阅读).
所以,以Java为例
是什么让"旧COBOL"方法不受欢迎?不仅是SQL,而且使用这种方法可以使系统调用更具可读性.我们称之为嵌入式外语预处理器方法.
SQL 的嵌入式外语预处理器是否可用于实现?您是否看到能够在Java代码中编写本机SQL语句的好处?
我真的在问你是否认为OO语言中的SQL是一种回归,如果没有,那么可以做些什么来使它变得更好.
我有一个带有预处理程序指令(#defines,#ifs等)的Inno Setup脚本
我想在我的脚本上运行Inno Setup预处理器并查看预处理器的输出(Inno-Setup中的翻译).也就是说,我想查看它通常提供给Inno Setup Compiler的预处理器的结果,其中所有引用{#something}都被更改为something定义为的内容.
我查看命令行选项(of iscc.exe)和#pragma指令,但没有找到我正在寻找的内容.我看到我可以指定不运行编译器(#pragma -c- | /$c-)但我没有找到一种方法来查看预处理器的输出.
简而言之,我如何看待Inno Setup预处理器的输出?
背景
我一直在使用C预处理器来管理和"编译"包含多个文件和构建目标的半大型JavaScript项目.这使全面进入C预处理指令一样#include,#define,#ifdef等从JavaScript中.这是一个示例构建脚本,因此您可以测试示例代码:
#!/bin/bash
export OPTS="-DDEBUG_MODE=1 -Isrc"
for FILE in `find src/ | egrep '\.js?$'`
do
echo "Processing $FILE"
cat $FILE \
| sed 's/^\s*\/\/#/#/' \
| cpp $OPTS \
| sed 's/^[#:<].*// ; /^$/d' \
> build/`basename $FILE`;
done
Run Code Online (Sandbox Code Playgroud)
创建一个src和一个build目录,然后放入.js文件src.
便利宏
最初,我只是想要预处理器的东西#include,也许还有几个#ifdef,但我想,有一些方便的宏也不是很好吗?随后进行了实验.
#define EACH(o,k) for (var k in o) if (o.hasOwnProperty(k))
Run Code Online (Sandbox Code Playgroud)
很酷,所以现在我可以这样写:
EACH (location, prop) {
console.log(prop + " : " location[prop]);
}
Run Code Online (Sandbox Code Playgroud)
它将扩展到: …
正如主题所说,我希望能够在构建期间运行特定命令,并使其输出成为预处理器宏的定义.
现在,我有几个用户定义的变量(在project.pbxproj中),我可以使用它们的值来填充宏定义,如下所示:
GCC_PREPROCESSOR_DEFINITIONS =(
"STRINGIFY(x)= @#x",
"_ MACRO = STRINGIFY($ {MACRO})",
);
MACRO = foo;
我可以将MACRO设置为每个方案不同的值(例如Debug vs. Release),这非常有用.但是,我无法弄清楚如何通过运行命令来设置它.
我只是想要一些关于如何在将数据输入机器学习算法之前对其进行预处理的一般提示.我正在努力进一步理解为什么我们在预处理时做出不同的决定,如果有人可以通过我们在清理数据时需要考虑的所有不同的事情,删除多余的数据等等.我会发现它非常有用.我在网上搜索了一些规范的答案或经验法则,但似乎没有.
我在这里有.tsv文件中有一组数据.训练集总计7,000行,测试集为3,000行.如果100行不可读,我应该使用哪些不同的策略来处理格式错误的数据?500?1000?任何帮助我理解这一点的指导都将非常感激.
示例代码很好看,但如果您不喜欢它,则没有必要,我只想了解我应该做什么!:)
谢谢
python preprocessor artificial-intelligence machine-learning scikit-learn
我有脑痉挛... C中是否有一种方法可以将多线宏与每条线上的注释结合起来?
例如
#define MYARRAY { \
0.001, // 5 mV \
0.002, // 10 mV \
0.004, // 20 mV \
0.007, // 35 mV \
0.013 // 65 mV \
}
Run Code Online (Sandbox Code Playgroud)
我需要在头文件中定义一个注释数组值列表,这些值在其他地方使用,并使其非常易读.
在代码的某个地方,我有预处理程序定义
#define ZOOM_FACTOR 1
Run Code Online (Sandbox Code Playgroud)
在另一个地方,我有
#ifdef ZOOM_FACTOR
#if (ZOOM_FACTOR == 1)
#define FONT_SIZE 8
#else
#define FONT_SIZE 12
#endif
#else
#define FONT_SIZE 8
#endif
Run Code Online (Sandbox Code Playgroud)
问题是当我将ZOOM_FACTORvalue 更改为floating pointvalue时,例如1.5,我遇到了编译错误C1017: invalid integer constant expression。
有谁知道为什么我收到这个错误,有没有什么办法之间做出比较integer和floating point number预处理指令内?
我的 Tensorflow 模型大量使用数据预处理,这些数据预处理应在 CPU 上完成,以使 GPU 开放用于训练。
top - 09:57:54 up 16:23, 1 user, load average: 3,67, 1,57, 0,67
Tasks: 400 total, 1 running, 399 sleeping, 0 stopped, 0 zombie
%Cpu(s): 19,1 us, 2,8 sy, 0,0 ni, 78,1 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
MiB Mem : 32049,7 total, 314,6 free, 5162,9 used, 26572,2 buff/cache
MiB Swap: 6779,0 total, 6556,0 free, 223,0 used. 25716,1 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ …Run Code Online (Sandbox Code Playgroud) 考虑以下简单的 C/C++ 示例:
#define FOO
...
#ifdef FOO
bar++;
#endif
Run Code Online (Sandbox Code Playgroud)
好的,现在我想将该条件(以及任何其他类似的)条件放入一行中,以提高代码可读性(该代码有数十个单行语句,每个语句都需要有条件,每个语句取决于不同的定义)。使用时,看起来像这样:
#define FOO
...
MY_IFDEF(FOO,bar++;) //Single-line conditional
Run Code Online (Sandbox Code Playgroud)
目标是拥有一个可重用的宏,它可以采用任意标识符,并且如果该标识符之前已被 #define-d 编译该语句,并在一行中完成所有操作。
有任何想法吗?
UPDATE0:代码必须针对 C 和 C++ 进行编译
preprocessor ×10
c ×2
macros ×2
c++ ×1
comments ×1
cpu ×1
inno-setup ×1
java ×1
javascript ×1
python ×1
scikit-learn ×1
shell ×1
sql ×1
tensorflow ×1
xcode ×1