FW:什么是科学问题?什么是技术问题_拔剑-浆糊的传说_新浪博客

什么是科学问题?什么是技术问题?——谈科研基金申请书中的问题 FW:什么是科学问题?什么是技术问题精选

已有 33131 次阅读 2014-3-13 10:52 |个人分类:科学|系统分类:科研笔记|关键词:学者| 科学, 技术, 基金申请, 基金委

前两天写了一篇博文,讨论国家基金委基金申请书中一项提纲,建议提纲突出研究课题的“科学问题”,避免误导申请人把“科学问题”当做了试验中要解决的“技术问题”来讨论。有读者提出不清楚“科学问题”和“技术问题”有什么区别。这里简单地谈一谈我的看法。

科学研究是为了去发现新现象、新物质和新原理。

因此,需要发现的新现象、新物质、新原理就是科学问题。而怎样去发现就是技术问题。两者往往不能分开,但是两个不同的概念。科学是认识和发现,技术是应用。科学问题是回答“做什么?”;技术问题是回答“怎么做?”。

举例:

发现一个新基因就是科学问题,怎么去发现就是一个技术问题。

研究一个基因的功能和机理就是科学问题,怎样去研究就是技术问题。

研究一个化合物或药物的作用机理、发现其作用靶点就是科学问题,怎么去研究和发现就是技术问题。

当然也有专门发现和发明新技术、新工具的课题,那这类课题要发明的新技术和新工具就是课题的科学问题,怎么去发明这个新技术和新工具就是课题的技术问题。

从严格意义上来讲,新技术和新工具的发明和发现不属于基础科学问题,而属于应用科学问题。但从申请基金的角度来说,新技术和新工具的发明和发现也应该得到资助。

总结:关键科学问题也就是课题的中心思想、研究方向和主要目标

<think>嗯,用户这次问的是"chip->try_ce_fw"这个结构体成员的含义。从代码结构来看,这明显是个C/C++里的结构体指针访问操作。用户可能正在阅读驱动或内核代码,突然遇到这个不熟悉的成员变量。用户给的四个引用都是关于内核模块编译硬件驱动的。引用[1]提到radeon_gem结构体,引用[2]是清理编译环境的命令,引用[3]在查找cfg80211位置,引用[4]关于SPECCPU测试。说明用户的工作环境应该是Linux内核开发或驱动调试,而且正在处理硬件相关的代码。注意到用户强调"可能是代码函数或指针调用",说明ta对这个成员的用途有些困惑。这里需要解释清楚结构体成员的两种可能:数据成员或函数指针。考虑到后缀_fw通常代表"firmware",我推测这可能固件加载相关。从开发经验看,类似try_xxx的命名模式通常表示尝试性操作。结合固件加载场景,这个变量很可能是用来控制是否尝试加载固件的标志位,或者是记录加载状态的枚举变量。比如当主固件加载失败时,尝试加载ce_fw作为备选方案。用户没有提供完整结构体定义,所以需要给出通用解释方案:建议ta用grep查找结构体定义,查看这个成员的声明类型。如果是bool或int就是标志位,如果是函数指针就是回调。还要提醒结合上下文代码判断,特别是看哪些地方在读写这个变量。考虑到用户的内核开发背景,准备在回答时强调两种可能性(数据/函数指针)的具体使用场景,并给出排查建议。虽然无法100%确定具体用途,但可以提供足够的排查方向。</think> 在C/C++语言中,`chip->try_ce_fw` 是一个**结构体指针成员访问表达式**,其含义用途需结合上下文分析: ### 一、语法解析 1. **结构体指针访问** `chip` 是指向某个结构体(如 `struct radeon_device`)的指针,`try_ce_fw` 是该结构体中定义的成员变量。 语法等效于 `(*chip).try_ce_fw`。 2. **成员类型可能性** `try_ce_fw` 可能属于以下类型之一: - **布尔标志**:最常见用途,如 `bool try_ce_fw`,表示是否尝试加载特定固件(CE Firmware)。 - **函数指针**:例如 `int (*try_ce_fw)(struct chip*)`,用于触发固件加载流程。 - **整型枚举**:如 `enum fw_load_state { ... } try_ce_fw`,表示固件加载状态。 --- ### 二、典型应用场景(以Linux驱动为例) #### 1. **固件加载控制** ```c // 定义结构体 struct radeon_chip { bool try_ce_fw; // 控制是否尝试加载CE固件 // ...其他成员 }; // 代码逻辑 if (chip->try_ce_fw) { // 当标志为真时加载固件 radeon_load_ce_firmware(chip); } ``` - **用途**:实现条件化固件加载,用于调试或兼容不同硬件版本。 #### 2. **状态机流转** ```c enum fw_status { FW_NEED_TRY_CE = 0, FW_CE_LOADED, // ... }; struct radeon_chip { enum fw_status try_ce_fw; }; if (chip->try_ce_fw == FW_NEED_TRY_CE) { load_ce_fw(chip); chip->try_ce_fw = FW_CE_LOADED; // 更新状态 } ``` - **用途**:跟踪固件加载进度。 --- ### 三、定位具体定义的方法 1. **查找结构体定义** 使用代码搜索工具(如 `grep`)查找关键头文件: ```bash grep -r "struct radeon_chip {" drivers/gpu/drm/radeon/ ``` 在输出中找到 `try_ce_fw` 的成员声明(例如在 `radeon.h` 中)。 2. **分析使用上下文** 观察所有操作 `try_ce_fw` 的代码段: ```c // 赋值操作 → 通常是状态标志 chip->try_ce_fw = true; // 函数调用 → 可能是函数指针 chip->try_ce_fw(chip); ``` --- ### 四、实践建议 若实际项目中遇到此变量: 1. **查看类型声明** 在结构体定义(如 `radeon.h`)中确认 `try_ce_fw` 的数据类型。 2. **跟踪调用链** 使用调试器(如 GDB)在读写此变量的位置设置断点。 3. **关联硬件文档** 若涉及固件(如 `_fw` 后缀暗示),参考芯片手册的固件加载章节[^1][^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值